There's a lot to tell in this story, and much of it is still being written.
Basically here's the plot outline:
In December of 2012, I started a new project that became Fargo.
Fargo was patterned after the outliners I created at Living Videotext and UserLand in the 1980s and 90s. The user interface was a gesture-for-gesture clone. The reason I wanted this is because I depend on outliners, but the operating systems my outliners ran on are not as reliable platforms as they once were. Fargo runs in web browsers, and therefore on all operating systems that support the web.
We also developed a server component so we could use Fargo to write blog posts and documentation.
It worked! Fargo is a great outliner. I use it all the time. I'm using it right now to write this.
Then disaster struck. The programmer I was working with on the server quit. The software wasn't finished, and as I wrote at the time, it was largely a black box to me. I tried to develop with it, but it was ridiculous. It ran in a one-off server environment, and there was no debugging, and it was in a language I was far from expert in (JavaScript). Those are too many disadvantages, so I decided to release that software under the GPL, and look for another route.
I had an immediate problem because my blog, Scripting News, was running in Trex, and I was writing it with Fargo, and I didn't want to give that up. So I quickly wrote a Frontier tool to generate the site from Fargo.
Then I had an idea! Why not do what I had done in Frontier using JavaScript instead, and design it to run in the browser? I took a look at it, and tried out some ideas, and it seemed possible. A really bizarre idea, because we don't usually think of browsers as a platform for running a CMS! But why not?
It worked! I say that as if it just happened overnight. It didn't. It took 1.5 months of everyday work. I didn't want to do this again. I had written this code in various contexts probably a half-dozen times since 1996. I know where the pitfalls are. I know that if you do it too quickly you create a tangled mess that's impossible to evolve. Instead, I did it slowly and carefully, with a lot of testing.
Now, I want to say a few things to Fargo users, so that expectations are set correctly.
This is not Trex. There are two big things missing, both by design: Rules-based outline rendering and dynamic serving.
Instead of using outline rules for automated formatting, we use Markdown. It's not as powerful, but it's easier, and much more popular. It's like embracing JavaScript and Bootstrap and Font-Awesome. By using Markdown integrally, and it wasn't added as an afterthought, the CMS was built around Markdown, we have to solve the problems in a way that will make sense to a lot more people.
Dynamic serving can still be done, either using this CMS in another form of deployment, or using the GPL'd Trex. But right now, I want to fill in the pieces we need for static content, served via commodity systems like Amazon S3. I want robust sites that don't hit scaling walls, like we did with Trex. Using this method means it will be more complicated for users right now, but it shows us all, not just me, very clearly, what's needed to complete the puzzle. A piece of software that's easy to build, but that as far as I know, no one has built yet.