Fossil

Project Ideas for Google Summer of Code 2021
Login

This list was made for the Fossil project's application for Google Summer of Code in 2021. GSoC pays students to contribute to free software projects during the Northern Hemiphere summer. If you are a student, you will be able to apply for GSoC starting March 29th 2021.

This page applies to the two implementations of Fossil: the classic Fossil and libfossil. 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.

General Features

Add code to handle email bounces

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. There is one specific case where receiving mail in some fashion would help, and that is for handling bounce messages from invalid email addresses.

A proposal for that is to implement a Fossil command such as:

fossil email -R repo receive_bounce

This is a non-network-aware Mail Delivery Agent, and would be called by an MTA such as Postfix, Courier or Exim. This command would reject anything that doesn't look like a bounce it is expecting.

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