Fossil SCM

fossil-scm / www / gsoc-ideas.md
Source Blame History 177 lines
47b1f6a… danshearer 1 # List of Projects and Tasks
47b1f6a… danshearer 2
47b1f6a… danshearer 3 This list was made for the Fossil project's application for [Google Summer of Code](https://summerofcode.withgoogle.com/) in 2021. That application was
620c817… danshearer 4 unsuccessful, but still this list is a starting point for anyone looking
620c817… danshearer 5 for a place to start. We welcome newcomers, and invite developers to follow the simple
620c817… danshearer 6 [procedures for contributing to Fossil](./contribute.wiki). The
620c817… danshearer 7 [hacker how-to](./hacker-howto.wiki) is recommended reading.
47b1f6a… danshearer 8
47b1f6a… danshearer 9 There are two implementations of the Fossil data model:
47b1f6a… danshearer 10
47b1f6a… danshearer 11 * [the classic Fossil project](https://fossil-scm.org) , which is where this file is maintained and
47b1f6a… danshearer 12 which is as of 2021 how everyone interacts with Fossil objects
47b1f6a… danshearer 13 * [libfossil](https://fossil.wanderinghorse.net/r/libfossil), which is an independent project to manipulate Fossil objects from a library, or using commandline tools which are thin wrappers to the library
47b1f6a… danshearer 14
47b1f6a… danshearer 15 As of 2021 the two implementations have an identical implementation of the
47b1f6a… danshearer 16 Fossil data model, are 100% compatible in terms of data access since they use
47b1f6a… danshearer 17 the same SQL, and are 100% binary compatible in terms of on-disk storage.
47b1f6a… danshearer 18
47b1f6a… danshearer 19 The projects listed here are grouped by functionality - User Interface, Integration, Email,
47b1f6a… danshearer 20 etc. If you are looking for something easy to start with, then depending where
47b1f6a… danshearer 21 your interests lie, there are some small libfossil tasks and small
47b1f6a… danshearer 22 features to work on in the UI.
47b1f6a… danshearer 23
47b1f6a… danshearer 24 # UI, Look and Feel
47b1f6a… danshearer 25
47b1f6a… danshearer 26 Tasks for those interested in graphic/web design:
47b1f6a… danshearer 27
a9427d9… danshearer 28 * Add a quote button to the Forum, such as [discussed in this thread](https://fossil-scm.org/forum/forumpost/7ad03cd73d)
56e59a3… stephan 29 * Improve the documentation history-browsing page to enable selection of 2 arbitrary versions to diff, similar to the [Mediawiki history feature enabled on Wikipedia](https://en.wikipedia.org/w/index.php?title=Fossil_\(software\)&action=history)
316b55a… danshearer 30 * Allow diffing of Forum posts
47b1f6a… danshearer 31 * General touch-ups in the existing skins. This may, depending on how deep one
47b1f6a… danshearer 32 cares to dig, require digging into C code to find, and potentially modify, how
47b1f6a… danshearer 33 the HTML is generated.
47b1f6a… danshearer 34 * Creation of one or more new skins. This does not specifically require any C
47b1f6a… danshearer 35 know-how.
47b1f6a… danshearer 36 * Complete per-feature CSS facilities in [the Inskinerator](https://tangentsoft.com/inskinerator/dir) and add features to the Inskinerator
47b1f6a… danshearer 37
47b1f6a… danshearer 38 # Projects Relating to Fossil Integration
47b1f6a… danshearer 39
316b55a… danshearer 40 * Fossil hooks for pipelines with CI/CD such as static analysis, Buildbot, Gerrit, Travis and Jenkins are not well-documented and may need some further development. Make this work better, with configuration examples
316b55a… danshearer 41 * Create a [Pandoc](https://pandoc.org) filter that handles Fossil-style Markdown
316b55a… danshearer 42 * Create a [Pandoc filter that handles Pikchr](https://groups.google.com/g/pandoc-discuss/c/zZSspnHHsg0?pli=1) (Pikchr can be used with many kinds of layout, not just Markdown)
316b55a… danshearer 43 * Editor integration: [improve the Fossil VSCode plugin](https://marketplace.visualstudio.com/items?itemName=koog1000.fossil) or [create a Fossil plugin for Eclipse](https://marketplace.eclipse.org/taxonomy/term/26%2C31)
47b1f6a… danshearer 44 * Develop a test suite for the draft JSON API in libfossil. This JSON API is a way of integrating many kinds of systems with Fossil
47b1f6a… danshearer 45 * Re-implement the draft JSON API in libfossil to use the JSON capability in SQLite, now that SQLite has JSON. This is a large project and would start with feasibility analysis
316b55a… danshearer 46
316b55a… danshearer 47 # Adding Inbound (Receiving) Email to Fossil
316b55a… danshearer 48
316b55a… danshearer 49 This task involves designing a new feature and working with Fossil developers to
316b55a… danshearer 50 see how it can be feasible in practice.
316b55a… danshearer 51
316b55a… danshearer 52 Fossil can [send email alerts](./alerts.md), but cannot receive email at all.
316b55a… danshearer 53 That is a good thing, because a complete [SMTP
316b55a… danshearer 54 MTA](https://en.wikipedia.org/wiki/MTA) is complicated and requires constant
316b55a… danshearer 55 maintenance, so Fossil should not try to be an MTA or ever listen to mail ports
316b55a… danshearer 56 on the Internet.
316b55a… danshearer 57
316b55a… danshearer 58 There is one specific type of email reception that make sense for Fossil to
316b55a… danshearer 59 handle. When there is inbound mail related to a message that Fossil has
316b55a… danshearer 60 previously generated with a unique hash, Fossil already knows the context of
316b55a… danshearer 61 that message. An unknown sender cannot guess a valid hash although a malicious
316b55a… danshearer 62 sender could of course find a way to receive a valid hash and then use that to
316b55a… danshearer 63 gain access. The risk of automatic and non-specific spam is very low.
316b55a… danshearer 64
316b55a… danshearer 65 A proposal to handle that would be to implement a Fossil command like this:
316b55a… danshearer 66
316b55a… danshearer 67 ```
316b55a… danshearer 68 fossil email -R repo receive -t TYPE-OF-EMAIL -h HASH
316b55a… danshearer 69 ```
316b55a… danshearer 70
316b55a… danshearer 71 Where the type of email would be one of a list something like this:
316b55a… danshearer 72
316b55a… danshearer 73 * mail_bounce
316b55a… danshearer 74 * ticket_reply
316b55a… danshearer 75 * forum_reply
316b55a… danshearer 76
316b55a… danshearer 77 This command is a non-network-aware [Mail Delivery
316b55a… danshearer 78 Agent](https://en.wikipedia.org/wiki/Mail_delivery_agent), and would be called
316b55a… danshearer 79 by an SMTP MTA such as Postfix, Courier or Exim. The MTA would need to be
316b55a… danshearer 80 configured to recognise that this is an email intended for Fossil, and what
316b55a… danshearer 81 type of email, and to extract its hash. People who configure MTAs are used to
316b55a… danshearer 82 doing this sort of thing, but no doubt Fossil would include a sample
316b55a… danshearer 83 [Postfix mail filter](http://www.postfix.org/FILTER_README.html#simple_filter) and
316b55a… danshearer 84 an equivalent driver for Exim.
316b55a… danshearer 85
316b55a… danshearer 86 The Fossil command would reject anything that doesn't look like a bounce it is expecting.
316b55a… danshearer 87
316b55a… danshearer 88 It is not certain that this design is the best one to address the inbound mail
316b55a… danshearer 89 problem. That is why the first part of this task is to find a workable design.
316b55a… danshearer 90
0f90d0d… danshearer 91 # Work relating to the ticketing system in Fossil
316b55a… danshearer 92
316b55a… danshearer 93 The Fossil SCM project uses tickets in a [somewhat unusual manner](https://fossil-scm.org/home/reportlist)
316b55a… danshearer 94 because the social programming
0f90d0d… danshearer 95 model has evolved to often use the Forum instead of ticketing. Other Fossil-using projects
316b55a… danshearer 96 use tickets in a more traditional report-a-bug manner. So this means that the
0f90d0d… danshearer 97 Fossil ticketing system user interface is underdeveloped.
0f90d0d… danshearer 98
0f90d0d… danshearer 99 On the other hand, pretty much every software developer uses a ticketing system
0f90d0d… danshearer 100 at some point in their workflow, and Fossil is intended to be usable by most
0f90d0d… danshearer 101 developers. That means the ticketing system really needs to be further
0f90d0d… danshearer 102 developed. The underlying technology for the Fossil ticketing system is
0f90d0d… danshearer 103 guaranteed, so to improve it requires only user interface changes.
316b55a… danshearer 104
316b55a… danshearer 105 Projects relating to the ticketing system include:
316b55a… danshearer 106
0f90d0d… danshearer 107 * Improving the [Fossil cli for tickets](https://fossil-scm.org/forum/forumpost/d8e8a1cf92) which is confusing, as pointed out in that ticket. This is still classified as a "user interface" even though it isn't graphical.
316b55a… danshearer 108 * Alternatively, instead of improving Fossil's cli, implement a comprehensive ticket commandline with [libfossil's primitives](https://fossil.wanderinghorse.net/r/libfossil/wiki/home), look under the f-apps/ directory.
0f90d0d… danshearer 109 * Improving the Fossil web UI for ticketing, which is clunky to say the least. Fossil tries not be a heavy user of Javascript and Javascript libraries, but the wikiedit, chat and Forum code are all more advanced than ticketing,
0f90d0d… danshearer 110 and have UI features that would improve ticketing
0f90d0d… danshearer 111 * If there is an inbound email system as per the previous section "Adding Inbound (Receiving) Email to Fossil", then implement this system for ticketing
932f88c… danshearer 112
932f88c… danshearer 113 # Tasks Requiring Fossil Data Model Knowledge
932f88c… danshearer 114
932f88c… danshearer 115 The Fossil data model concepts are simple, but the implications are quite subtle and impressive. The data model
932f88c… danshearer 116 is designed to [endure for centuries](./fileformat.wiki),
932f88c… danshearer 117 be [easily accessible](./fossil-v-git.wiki#durable), and is [non-relational](./fossil-is-not-relational.md).
932f88c… danshearer 118 You will need to understand the data model to work on the following tasks:
932f88c… danshearer 119
8b453eb… stephan 120 * Add the ability to tag non-checkin artifacts, something supported by
8b453eb… stephan 121 the data model but not the current CLI and UIs. This would open the
8b453eb… stephan 122 door to numerous new features, such as "sticky" forum posts and
8b453eb… stephan 123 per-file extended attributes. This could also relate to the RBAC
8b453eb… stephan 124 system.
932f88c… danshearer 125 * Implement "merge" and "stash" in libfossil
932f88c… danshearer 126 * Analyse the different kinds of [split/export/shallow clone](https://fossil-scm.org/forum/forumpost/1aa4f8ea8c6f96) use cases for Fossil including [complete bifurcation](https://fossil-scm.org/forum/forumpost/6434a06871). There are many proposals, relating to many different use cases, and a good analysis would help us to work out what should be implemented, and what should be implemented in Fossil and what is instead a libfossil wrapper
932f88c… danshearer 127
932f88c… danshearer 128 # Fossil is cool
932f88c… danshearer 129
932f88c… danshearer 130 There are many reasons why Fossil is just plain cool:
932f88c… danshearer 131
932f88c… danshearer 132 * Fossil is symbiotically connected with [SQL and SQLite](5631123d66d96)
932f88c… danshearer 133 * Fossil is highly portable accross different operating systems
932f88c… danshearer 134 * Fossil is the [only credible alternative to Git](./fossil-v-git.wiki)
932f88c… danshearer 135 * Fossil is both ultra-long-term stable and has a high rate of development and new features
932f88c… danshearer 136 * Fossil has thought deeply about Comp Sci principles including [CAP Theorem](./cap-theorem.md) and [whether Fossil is a blockchain](./blockchain.md)
932f88c… danshearer 137 * Fossil has two independent implementations of the same data model: Fossil and libfossil
932f88c… danshearer 138
932f88c… danshearer 139 and a lot, lot more, in the source, docs, forum and more.
932f88c… danshearer 140
932f88c… danshearer 141
932f88c… danshearer 142
932f88c… danshearer 143
932f88c… danshearer 144 ``` pikchr center toggle
932f88c… danshearer 145 // Click to see the rendered diagram this describes,
932f88c… danshearer 146 // written in Fossil's built-in pikchr language, see https://pikchr.org
932f88c… danshearer 147 //
932f88c… danshearer 148 // based on pikchr script by Kees Nuyt, licensed
932f88c… danshearer 149 // https://creativecommons.org/licenses/by-nc-sa/4.0/
932f88c… danshearer 150
932f88c… danshearer 151 scale = 1.0
932f88c… danshearer 152 eh = 0.5cm
932f88c… danshearer 153 ew = 0.2cm
932f88c… danshearer 154 ed = 2 * eh
932f88c… danshearer 155 er = 0.4cm
932f88c… danshearer 156 lws = 4.0cm
932f88c… danshearer 157 lwm = lws + er
932f88c… danshearer 158 lwl = lwm + er
932f88c… danshearer 159
932f88c… danshearer 160 ellipse height eh width ew fill Bisque color CadetBlue
932f88c… danshearer 161 L1: line width lwl from last ellipse.n
932f88c… danshearer 162 line "click for" bold above width lwm from last ellipse.s
932f88c… danshearer 163 LV: line height eh down
932f88c… danshearer 164
932f88c… danshearer 165 move right er down ed from last ellipse.n
932f88c… danshearer 166 ellipse height eh width ew fill Bisque color CadetBlue
932f88c… danshearer 167 L3: line "example of Fossil" bold width lws right from last ellipse.n to LV.end then down eh right ew
932f88c… danshearer 168 line width lwm right from last ellipse.s then to LV.start
932f88c… danshearer 169
932f88c… danshearer 170 move right er down ed from last ellipse.n
932f88c… danshearer 171 ellipse height eh width ew fill Bisque color CadetBlue
932f88c… danshearer 172 line width lwl right from last ellipse.n then to L1.end
932f88c… danshearer 173 line "coolness" bold width lwl right from last ellipse.s then up eh
932f88c… danshearer 174
932f88c… danshearer 175 ```
932f88c… danshearer 176
932f88c… danshearer 177

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button