Fossil

List of Projects and Tasks
Login

This list was made for the Fossil project's application for Google Summer of Code in 2021. That application was unsuccessful, but still this list is a starting point for anyone looking for a place to start. We welcome newcomers, and invite developers to follow the simple procedures for contributing to Fossil. The hacker how-to is recommended reading.

There are two implementations of the Fossil data model:

As of 2021 the two implementations have an identical implementation of the Fossil data model, are 100% compatible in terms of data access since they use the same SQL, and are 100% binary compatible in terms of on-disk storage.

The projects listed here are grouped by functionality - User Interface, Integration, Email, etc. If you are looking for something easy to start with, then depending where your interests lie, there are some small libfossil tasks and small features to work on in the UI.

UI, Look and Feel

Tasks for those interested in graphic/web design:

Projects Relating to Fossil Integration

Adding Inbound (Receiving) Email to Fossil

This task involves designing a new feature and working with Fossil developers to see how it can be feasible in practice.

Fossil can send email alerts, but cannot receive email at all. That is a good thing, because a complete SMTP MTA is complicated and requires constant maintenance, so Fossil should not try to be an MTA or ever listen to mail ports on the Internet.

There is one specific type of email reception that make sense for Fossil to handle. When there is inbound mail related to a message that Fossil has previously generated with a unique hash, Fossil already knows the context of that message. An unknown sender cannot guess a valid hash although a malicious sender could of course find a way to receive a valid hash and then use that to gain access. The risk of automatic and non-specific spam is very low.

A proposal to handle that would be to implement a Fossil command like this:

fossil email -R repo receive -t TYPE-OF-EMAIL -h HASH

Where the type of email would be one of a list something like this:

This command is a non-network-aware Mail Delivery Agent, and would be called by an SMTP MTA such as Postfix, Courier or Exim. The MTA would need to be configured to recognise that this is an email intended for Fossil, and what type of email, and to extract its hash. People who configure MTAs are used to doing this sort of thing, but no doubt Fossil would include a sample Postfix mail filter and an equivalent driver for Exim.

The Fossil command would reject anything that doesn't look like a bounce it is expecting.

It is not certain that this design is the best one to address the inbound mail problem. That is why the first part of this task is to find a workable design.

Work relating to the ticketing system in Fossil

The Fossil SCM project uses tickets in a somewhat unusual manner because the social programming model has evolved to often use the Forum instead of ticketing. Other Fossil-using projects use tickets in a more traditional report-a-bug manner. So this means that the Fossil ticketing system user interface is underdeveloped.

On the other hand, pretty much every software developer uses a ticketing system at some point in their workflow, and Fossil is intended to be usable by most developers. That means the ticketing system really needs to be further developed. The underlying technology for the Fossil ticketing system is guaranteed, so to improve it requires only user interface changes.

Projects relating to the ticketing system include:

Tasks Requiring Fossil Data Model Knowledge

The Fossil data model concepts are simple, but the implications are quite subtle and impressive. The data model is designed to endure for centuries, be easily accessible, and is non-relational. You will need to understand the data model to work on the following tasks:

Fossil is cool

There are many reasons why Fossil is just plain cool:

and a lot, lot more, in the source, docs, forum and more.

click for example of Fossil coolness
// Click to see the rendered diagram this describes,
// written in Fossil's built-in pikchr language, see https://pikchr.org
// 
// based on pikchr script by Kees Nuyt, licensed
// https://creativecommons.org/licenses/by-nc-sa/4.0/

scale = 1.0
eh = 0.5cm
ew = 0.2cm
ed = 2 * eh
er = 0.4cm
lws = 4.0cm
lwm = lws + er
lwl = lwm + er

ellipse height eh width ew fill Bisque color CadetBlue 
L1: line width lwl from last ellipse.n
line "click for" bold above width lwm from last ellipse.s
LV: line height eh down

move right er down ed from last ellipse.n
ellipse height eh width ew fill Bisque color CadetBlue 
L3: line "example of Fossil" bold width lws right from last ellipse.n to LV.end then down eh right ew
line width lwm right from last ellipse.s then to LV.start

move right er down ed from last ellipse.n
ellipse height eh width ew fill Bisque color CadetBlue 
line width lwl right from last ellipse.n then to L1.end
line "coolness" bold width lwl right from last ellipse.s then up eh