Last night I thought, yes (@kidehen) I’ll be able to implement an RSS feed quickly and was planning to do it today, but overnight my brain was still active and early this morning lead me to some other conclusions, including on the future of Plume.
TLDR; I think we should just maintain Plume and make only minor enhancements, while creating a Plume 2 from scratch in order to meet the need for a better blogging platform. I’ll come back to why I think that shortly.
Feature: RSS Feed
Firstly I realised that there was no point implementing an RSS feed without first implementing support for draft posts. At the moment we get away without this because there is no automatic distribution (RSS). People work away on a post and once it is ready, they share links to it manually. You can’t have the first draft going into the feed, so you would also need a way to create and manage draft posts, publish them, edit and update.
That’s not too hard. In the early hours I had some of the details worked out and was going to at least document this, although it was more work than I can do in a day. I know the Plume code fairly well just now, so I can see how to do it, but it is a few days work (for me).
Feature: Deploy Plume Automatically
Inspired by @jeffz’s recursive copy and @A_A’s solid-filemanager, I’ve also been thinking about making deployment of Plume automatic (ie a blog visitor can click “Deploy Plume”, identify where to install on their pod and click “Install”. This would also allow automated updates).
To drive adoption this feature goes hand in hand with things like draft posts and RSS, but doesn’t depend on them and I think is probably easier. Plume is in a state now where copying/unpacking the files to a suitable location and creating a config.txt file there is enough. Such a feature would improve take-up a lot. So for me that would come before the other enhancements and is something I’d consider doing, or help someone to implement.
However, coming back to the first point - why I think we shouldn’t build much on top of the exisiting code…
Plume wasn’t written to be extended as far as I can tell. The code is fit for purpose (a very basic blog). There is code there that I don’t understand, and I can see some extras were being considered, but I have not been able to figure that out or find information about ongoing plans. But in any case, IMO the code is not suitable for building significant new functionality. It is not well structured, making it hard to understand, hard to modify without introducing bugs (I fixed at least two introduced by Sergey as well as earlier ones I’d fixed when I did my original demo of Plume on SAFE), and I’ve found this myself each time I’ve worked on it.
At the very least it should be restructured, made modular and split into smaller files, but the current approach is also clumsy and slow and will not handle additional functionality without an increasingly poor UX IMO. So if we want to build a better blog, I don’t think the existing code is the place to start.
Adding RSS without draft posts would be fine (but poor for publishing). RSS with draft posts would be manageable too, but each new feature will likely break things and so be ‘expensive’ to implement, degrade the UX (it is already clunky and slow), and make it harder to maintain or extend.
So I think it would be better to start again with a suitable framework such as React/React-static or even something up and coming like Svelte, and design the architecture with an extendable foundation, starting with functionality similar to what is there, and then building on that.
This means I’m planning to stick with only minor enhancements and maintenance at least for now. I’d like to add the “Deploy Plume” feature because I think that is sufficiently separate from the existing functionality to do without doing more harm than good, and I think it would be a big win in terms of helping new people interested in Solid getting a useful app up and running. I need to focus on other projects for now though.