It’s been 7 months since I announced that I would be taking a long break from PureScript development, and I’d like to take some time to provide an update on what I’ve been up to, and make some comments on the state of things as I see them as a PureScript user.
What I’ve been up to
I had been spending less and less time on PureScript for several months before I decided to finally call it quits. I’m not entirely sure why, but I found myself losing interest in leading the development of the language. In retrospect, I think it’s fair to say that I was quite thoroughly burned out from trying to balance open source work and real life. Since December, I’ve been concentrating on doing far less open source work, and only on things which I find enjoyable. I still love to use PureScript, and I’ve been working to increase PureScript adoption at work, which I’m happy to say is going very well. I’ve also been using PureScript for a few low-priority personal projects like Purview, trying to write more blog posts and give more talks, building the LA PureScript group, and supervising Arthur’s fantastic thesis on comonadic UIs in PureScript. Overall, I’m still sorry that my transition out was so abrupt, but I’m glad that I decided to take the break.
Some observations
Let me say first - I am writing this in my capacity as a PureScript user, not a former PureScript contributor, and not as the creator of the language. I would like to share some thoughts I’ve had regarding the future development of the language, and some constructive suggestions for action. This is not meant to be a criticism.
- The 0.12 release was a massive achievement, not to be underestimated. I’ve been using 0.12 for personal projects, and at work, and it has been wonderfully stable and fast. We’re making good use of lots of new features (I love the new Lacks constraints, and I have to admit, Effect is the right choice). Generally, I think some of the minor library updates like renaming certain things were a bit unnecessary and confusing, but overall, the upgrades went very well.
- Unfortunately, unlike the release of the compiler itself was not synchronized with releases in the rest of the ecosystem. The website and Pulp were updated after the compiler release, Try PureScript and Pursuit are yet to be updated. Now, I suppose I am technically responsible for Try PureScript and Pursuit (at least, I need to be the one to deploy them right now), but in any case, I think there needs to be some synchronization around the release of a major compiler update.
- We seem to have developed something of a documentation problem. Even now, the documentation repository is only partially updated for the 0.12 release, and generally it is quite unstructured and lacks a single vision for what good documentation should look like.
- Also regarding documentation, I still need to update the book. It seems to take longer with each major compiler update, and honestly, I’m not motivated to update it again without some sort of guarantee that I won’t have to redo everything again in a few months. I will inevitably get around to it, because I feel like I should and it’s already eating at me that I haven’t yet, but this seems like a bigger problem. I would like to write a lot more documentation for PureScript, but I hate the idea that it will become out of date quickly, and that I will have yet more projects to update in future. So without some sort of plan for the future of the language, and some idea of what changes are coming (and just as importantly, which aren’t), I’m not likely to write anything, and I wouldn’t be surprised if others avoided writing for the same reason.
- The community seems to be getting fragmented and there is no long-term record of discussions outside of GitHub issues. We now have IRC, Slack, Gitter and Discourse. I personally don’t tend to look at Slack very much any more, because I find it hard to track conversations, I don’t like that there’s no logging, and the tone there has been a little… unpleasant, from time to time. I hang out in IRC, but there are very few users there. I do like Discourse, and I hope that we can move more discussions here.
Some recommendations
I’ll use “we” here to refer to the community generally.
- I think we need to come to the difficult realization that everyone is already stretched thin, and that we need to try to do less in order to do things well. If Try PureScript takes too much time to update, then we should not advertise it on the website. If the documentation cannot be updated in sync with the compiler, then it should also be unlinked from the website, and marked as stale. I have said before that I think we should avoid new features and concentrate on bug fixes and documentation. Now that 0.12 is out, I think it is a great time to prune any inessential feature requests from the issue tracker and make a plan to concentrate on these things instead.
- There needs to be a plan for the future, and that plan needs to be documented. I would like to start working on a specification for the language, something which I consider essential for documentation purposes, but it doesn’t make sense to start documenting a language when there is no plan in place for the next milestone. For me, the ideal situation would be this: we agree that the compiler is not perfect as it exists now, but that its flaws are relatively minor and easily documented; we make a plan to release 1.0 (or 13.0?) by fixing any bugs we cannot document, and engineering things as best as possible in order to facilitate feature additions we anticipate; then we write a specification for this language, and commit to a stable release window, ideally as long as possible. When I’ve brought this idea up in the past, it’s met some opposition, but I think this would be massively beneficial and enable the creation of lots of stable documentation.
That’s about all I’ve got to say. Thanks for listening, and what do you think of these suggestions?