(ThoughtStorms) LeavingTheSFW

Why is ThoughtStorms leaving the SmallestFederatedWiki?

First, let's get this clear. I am still a massive fan of WardCunningham and I admire his courage in being willing to experiment and rethink everything about wiki when he created the Smallest Federated Wiki.

But, after several years, I realised that the SFW is not for me, or for ThoughtStorms. Here's a brief summary of why.

Over-emphasis on Paragraphs

The main reason, which overshadows pretty much everything else, is that I really hated paragraph-only editing.

When you can only edit one paragraph at a time, it's awkward and uncomfortable to try to refactor and restructure the text of large pages. SFW makes it really easy to move paragraphs up and down or pull them into another page. But bloody inconvenient to break a single paragraph into two, or join two separated paragraphs into one. And I find rewriting texts is more about working across multiple paragraphs on the same page than shifting paragraphs individually to different pages.

And I just think at a bigger scale. The result was that in the SFW I was actually putting multiple real "paragraphs" together into one of SFW's "paragraphs". But this negates pretty much all the value that SFW's paragraphs added anyway. (Ie. DragAndDrop for reordering and movement between pages.)

Ultimately I wanted to operate on multiple scales. If I can only have one granularity by default, the whole page is the best for me.

Wikish Fights Federation

ThoughtStorms uses a custom markup, "wikish", (derived from UseMod). I "solved" this problem by writing my own plugin for the SFW : https://github.com/interstar/wiki-plugin-wikish.

But custom markup fights the principle of Federation. No-one could usefully pull / fork / improve copies of my paragraphs without also installing my plugin. AFAIK, SFW didn't get as far as an automatic plugin install option. So effectively, probably no-one bothered federating ThoughtStorms content. Without this, ThoughtStorms didn't really play in the SFW ecosystem.

Once again, without the upside of federation and a community, the SFW is less valuable to ThoughtStorms.

Account Management and Persona

I never managed to get the Persona-based login working. So I basically ended up running a local copy and syncing pages to my server. Now Persona is deprecated and SFW needs to find a new solution (not sure how they're getting on with that). But effectively I was running SFW as a flat site anyway, so why bother with a smart server?

SFW Does Too Much

In general, SFW does more than I need it to. While I admire the way it puts multiple pages side-by-side, this adds a lot of complexity in the interface. And it means customizing the look and feel is a complex task. My new wiki is minimally styled, but if I want to make a version wrapped in TwitterBootStrap or with a custom template, I now can.

Similarly, although it's clever that SFW builds VersionControl into its page file format, I had pages with dozens of revisions, which were taking a long time to load. I'd rather leave version control to Git and have the pages smaller and faster to load. Wiki should be one tool among many rather than a monolithic solution.

Simplified File Formats

Without worrying about keeping history within the page files, I can go back to a format which is plain-text, rather than JSON. This means I can use things like diff and Meld when I want to see what's different between different versions or similar pages on different servers. Other text-oriented SmallTools in Unix should work straight-away.

Editing on a Public Server

I'm moving towards a model where I work locally, and sync. static files for publication, or between my different machines using SyncThing. Once again the value of a complex public facing server is low.

Maybe one day I can imagine swinging with the SoftwareFashionPendulum back to running a single-page app. which stores via RemoteStorage for example. But it will be easier to write something like that from scratch than trying to adapt the SFW.

Node on my Hosting

Node stopped running on my hosting and I need to fiddle about to try to restart it. I'm hoping that my new light-weight Python-based server (using BottleWebFramework, WSGI and PythonLanguage) is going to be more robust.