-
Notifications
You must be signed in to change notification settings - Fork 31
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
A few comments #1
base: master
Are you sure you want to change the base?
Conversation
Thanks for the reply. I'm very glad to hear that you enjoyed the article. It's great to know that my work hasn't gone to waste. Can I ask how you found this review? I wasn't planning to spread it around much until I had finished my final proofread. Seeing your pull request in my emails was the first hint that I seem to have gained 20,000 views overnight. Fun and terrifying! I must also thank you for your hard work over the years. I'm sure that I've praised your books enough in this article, but special thanks has to go to chapter 13 of R for Data Science. That chapter did a lot to give me the confidence to apply for my current job. Thanks to that, I now live a much happier life. Anyway, in terms of giving a general reply to what you've said, I'm surprised by how much we agree. When I first saw the pull request, I thought that I was about to get obliterated. It's a shame that, in the cases where we totally agree on a fault of the tidyverse, backwards compatibility has prevented you from fixing it. I suppose that you're damned if you do and damned if you don't. Too little backwards compatibility, and I'll complain because your API is unstable. Too much, and you're just as cursed as R's marriage to S. I respect the dilemma that you're in. For the specifics, I'll go point-by-point wherever I have something to say:
Yeah. I'd be deeply worried if you agreed. The Tidyverse certainly does a lot to improve R, but my belief is that it can never fix R. It's a small difference, but a key one. Continuing my crass (and, in present company, harsh) "polished turd" point, I believe that the final version of the Tidyverse will make R a remarkably well polished turd. The great shame is that, through no fault of yours, your outstanding work can't stop R being a turd.
There's not much that I can say. I'm just sure that when I've messed up in the tidyverse, rlang has thrown the error.
It's great that the code still works, but that's not what I was getting at. My argument was essentially "tidy depreciates functions so often that its own book can't keep up". I've got nothing to say against the depreciation in of itself. It's more that you would expect the book to keep on top of what is and isn't depreciated.
More than once, I've come close to deleting the point that you're replying to. That's partly why I've hedged it with that "I'm willing to be proven wrong here" line. However, I just can't shake the feeling that I'm on to something, so I've always kept it in. At minimum, I think I'm right to say that we don't yet know if building around pipes is a good idea. But, I don't think that I know if the issue that I've identified is a true, useful, or key one. I lack the experience. If anyone's qualified to write a list of risks and pitfalls inherent to pipe-focused design, it's probably yourself. It'd be a remarkably good read. I also can't think of a better way to replicate
I don't. You shouldn't try to fix this. I'll update that point.
There is? Thank you for introducing me to my new best friend. I'm going to play around with that for a long time. I'll update the point once the party's over.
I certainly can't prove that I'm right on this, nor can I think of any way to be proven wrong. However, I think that the expressiveness that was lost by adopting the purrr anonymous function syntax had to be regained somewhere. Without doing so, you'd get much harder to read code. I wish that I had stronger evidence, or frankly any evidence at all, but that's why I can't elevate that point any higher than merely saying "I suspect". |
I'm about to knock off for the day so I'll write more tomorrow, but I thought you'd like to know the reason you got so many reads because you made the front page of hackernews. There are ~250 comments there: https://news.ycombinator.com/item?id=30764505 |
Thanks, that means a lot :)
Exactly :)
I think the metaphor I'd prefer is that R is uncut diamond - it has a bunch of great ideas, and just needs some cutting and polishing to really make it shine.
Ah ok, I think this might just be a difference in what we mean by "monolith". From my perspective, the use of common dependencies doesn't make the tidyverse a monolith because you can still use many of the pieces independently.
One of the challenges of deprecations is making them obvious when you're working interactively, but not so obvious that they break automated workflows. So the design of our deprecation messages deliberate make them hard to spot automatically, as in the book CI/CD pipeline. And you'll an obvious post-hoc justification, it's actually good that R4DS has some deprecation messages in it, because it normalises using deprecated functions :)
I agree that it can take a long time to fully understand the implications of new syntax, and the introduction of piping into R is certainly new enough that there might be unintended consequences that we have yet to discover. But given that the pipeline paradigm is well established elsewhere (e.g. unix pipes) and that R Core (generally a very conservative group) liked it enough to add it to base R, I have few worries. Additionally, I don't think that the introduction of piping changes that much in how you design functions - it mostly just forces you to think more about what the first argument should be (in way that I'd argue is almost always uniformly positive). The tidyverse generally favours functions that are pipeable AND small/composable, but I don't think those two ideas are fundamentally interrelated.
The other perspective that generally pushed me away from base style towards That said, I used to be a very passionate advocate for purrr, and now, for whatever reason, it just doesn't excite me that much. Maybe it's because many of the common challenges that previously required purrr (e.g. rectangling or loading a directory of csv files) don't any more because we've built out the tooling elsewhere (e.g. |
Well done. That's the best re-framing that I've seen all year. My objection is that base R is no diamond and that you'd struggle to get it to change. But, yes, we both agree that base R contains some great ideas. As for disagreements, I think we'd both go in circles on this point.
That's so smart that you should sneak it in to the book. I'm entirely serious: "Don't fear the deprecated" is a lesson worth learning in the Tidyverse.
I concede the point. You have far greater experience on this topic than I.
Yeah, base R forces you to learn functional programming idioms. There's just no way around that. purrr's clever parsing sidesteps the issue. However, I think that this gets back to an earlier objection that I had to purrr's ways. Although it's pretty easy to show someone the basics of what
Those slides provoked a similar "wouldn't I just use some other part of the Tidyverse for this?" reaction from me. Our guts agree. |
Thanks for writing this article — I enjoyed reading it. I had a few comments/questions specifically on the tidyverse stuff so I thought this might be a reasonable way to initiate a discussion.