Introduction
As of Fossil 2.7, Fossil includes a built-in discussion forum feature.
Any project complex enough to be managed by Fossil can probably benefit from having a discussion forum. Even if your project has a discussion forum already, there are further benefits that stem from using Fossil's built-in forum feature:
- Third-party discussion forum and mailing list software tends to be difficult to install, set up, and administer. Fossil Forums aim to be as close to zero-configuration as is practical.
- Posts are stored in the Fossil repository using the same block chain technology that Fossil uses to store your check-ins, wiki documents, etc. Posts sync to cloned repositories in a tamper-proof fashion.
- Because of Fossil's delta compression technology, discussions add little to the size of a cloned repository. Ten years of the SQLite project's discussions — averaging 2 or 3 dozen posts per day — compress down to just 35 MB of space in a Fossil Forums repository.
- Fossil Forums use SQLite's powerful FTS4 full-text search engine. If your project currently uses a mailing list for discussions, this means you are no longer reliant upon third-party mailing list archive services to provide a useful search engine for your discussions.
- Because Fossil is a distributed version control system, project members can search your forum archive while disconnected from the network where the central Fossil instance runs. Your past discussions are potentially just as valuable as a wiki document or checkin comment: there is no good reason why you should have to wait to get back on the Internet or back to the office before you can search for past posts.
- Because forum posts are normal Fossil artifacts, you can interlink them with other Fossil artifacts using short internal links: link to forum threads from a ticket, link to a wiki document from a forum post, etc. These links are internal and managed by Fossil itself, so links never become invalid simply because your third-party forum software or mailing list search engine changed its URL scheme.
- The forum uses the same role-based access control mechanism as Fossil uses for all other accesses.
- Since Fossil has an open and well-documented file format, your discussion archives are truly that: archives. You are no longer dependent on a third-party piece of software or service sticking around. Should you choose to stop using Fossil, you can easily extract your discussion traffic for transfer to another system.
- Posts can be marked up using Fossil's existing Markdown and Wiki markup languages. No longer must you choose to restrict your discussion forums to plain text only (good for security) or to allow HTML-formatted MIME email (good for complex discussions). Fossil Forums provide enough formatting without giving up security.
- Fossil forums integrate with third-party message transfer agents such as Postfix, Exim, and Sendmail. If you've got mail service configured on the server hosting your Fossil instance, it can send notifications of new posts to interested forum users, complete with message content for those that prefer to visit the forum only when they need to post something.
- Because Fossil accepts forum posts only via the web UI, it is inherently protected against bots.
Setting up a Fossil Forum
Permissions
Fossil forums use the same role-based access control mechanism as for normal Fossil repository logins.
There are several dedicated permsissions for forums:
- Read: The user may read forum posts
- Write: The user may create new forum threads and reply to existing threads. New posts are held for moderation.
- Write Trusted: Same as Write, but posts are inserted into the block chain immediately without being held for moderation.
- Moderate: User gets buttons on posts which allow them to either delete or approve posts held for moderation. User also gets access to a page (/modreq) showing the list of pending moderation tasks.
- Administer: User can grant Write Trusted permission to another user, or revoke it. (Currently unimplemented.)
By default, no Fossil user has permission to use the forums except for users with Setup and Admin capabilities, which get these as part of the large package of other capabilities they get.
For public Fossil repositories that wish to accept new users without involving a human, go into Admin → Access and enable the "Allow users to register themselves" setting. You may also wish to give the anonymous user category the Read Forum (2) and Write Forum (3) capabilities: this allows people to post without creating an account simply by solving a simple CAPTCHA.
For a private repository, you probably won't want to give the anonymous user any forum access, but you may wish to give capability "2" to the reader user category.
For either type of repository, you are likely to want to give at least the Write Trusted (4) capability to the developer user category.
By following this advice, you should not need to tediously add capabilities to individual accounts, except in atypical cases, such as to grant the Moderate Forum capability (5) to an uncommonly highly-trusted user.
Skin Setup
If you create a new Fossil repository with version 2.7 or newer, its default skin is already set up correctly for typical forum configurations.
Those upgrading existing repositories will need to edit the Header part of their existing Fossil skin in Admin → Skins, adding something like this to create the navbar link:
if {[anycap 23456] || [anoncap 2] || [anoncap 3]} { menulink /forum Forum }
These rules say that any logged-in user with any forum-related capability (2-6 inclusive, as of this writing) or an anonymous user with read or write capability on the forum (2, 3) will see the "Forum" navbar link, which just takes you to /forum.
The exact code you need here varies depending on which skin you're using. Follow the style you see for the other navbar links.
Single Sign-On
If you choose to host your discussion forums within the same repository as your project's other Fossil-managed content, you inherently have a single sign-on system. Contrast third-party mailing list and forum software where you either end up with two separate user tables and permission sets, or you must go to significant effort to integrate the two login systems.
You may instead choose to host your forums in a separate Fossil repository from your other assets. A good reason to do this is that you have a public project where very few of those participating in the forum have special permissions for assets managed by Fossil for the project itself, so you wish to segregate the two user sets.
Fossil offers a way to split the difference: you can host your forum in a repository separate from your other Fossil-managed content yet still have single sign-on for that common set of users that will have logins on both repositories. Simply enable Fossil's login groups feature in Admin → Login-Group, which allows one Fossil repository to recognize users authorized on another repository.
Email Notification
See the email notification design document for now. More administration-oriented documentation TODO.
Moderation
TODO
Troubleshooting
TODO