Fossil is a distributed version control system, not too dissimilar from Git or Mercurial. Fossil was written by D. Richard Hipp, who is best known for SQLite. In fact, Fossil was written to be the version control system for SQLite, and also Fossil uses a(n) sqlite3 database as its repository file.

This is a quick summary of my thoughts after having a read of the documentation and a bit of a play with the tool.

USP

The unique selling point of Fossil is that it has a bunch of features built-in, which also store their data in the repository alongside the source code version data. These features include

  • A wiki
  • A bug tracker
  • A discussion forum

amongst others. Fossil comes as a single executable file and includes a web UI that can display all of this stuff. If you want an example, the Fossil website itself and the SQLite source website are both running examples accessible over the web.

Note that while all the non-source-code data is stored in the repository and is version controlled in the sense that all past versions are kept, it is not tied into Fossil’s system of commits, tags, branches etc for source code. Instead it effectively has a single linear history for all that stuff with “most-recent-timestamp wins” in the case of a conflict after syncing.

I think the idea is that most projects will have a single central server (true for 99% of projects in reality I think) and use the web UI directly on that server to deal with all the wiki, bug tracking, etc stuff. This avoids any problems with conflicts generated by independent edits on developer machines.

Is that actually a good idea?

My first reaction to this was mild horror at the insane feature creep of a version control system that contains a chatroom implementation. However, when you think about it and read the documentation it starts to make some kind of sense.

The feature set is effectively that of websites like Github - the code version control is the core, but all the other project management tools commonly used on software projects are bundled in as well. The idea, I think, is that Fossil is the only collaboration tool you need for a project. No Github, no Slack, no JIRA, just Fossil running on a hosted server somewhere.

There are some neat advantages to this approach too. Any developer working offline still has access to the full wiki and issue tracker, and can even make changes offline (although they run into the risk of making conflicting edits as mentioned above). A backup of the repository backs up everything associated with the project all in one go.Wiki data and forum discussions will never get lost because the project changed providers.

Would I actually use it?

For personal projects, I think I’m going to try it out. The idea of having all my project stuff bundled into one place is pretty attractive. Being able to have stuff like a wiki and web pages without being tied into Github could potentially be nice. And I can contemplate whether I’d host the website publicly as a project website.

For open source projects, you’re definitely raising the barrier to entry by using a niche version control system. Also, Fossil and SQLite3 use an “open source but not open contribution” model and Fossil reflects this. I’m not sure how well it would handle public contributions. It seems like it’s mainly set up to handle “sync absolutely everything with trusted developers” and not “accept this one commit after a review”. It can do individual patches handled as files outside of the sync process, but the Fossil tool notably does not have a pull-request style interface.

For work purposes I think it would be a tough sell. Any company is going to have its own version control and other project management processes set up and I can’t see enough of a benefit to Fossil to make it worth switching, especially since everyone would have to learn the new system from scratch. Also it feels a bit developery and I’m not convinced non-technical users would have a good time even with the non-code features.

Conclusion

I might try it out for personal use and see how it goes. I can’t see Fossil taking over the world any time soon however.