logo

badwolf

Minimalist and privacy-oriented WebKitGTK+ browser
commit: 3d066fb243e8e94e73fcdc51e79e6088dc6d3de9
parent: 42f87f328e7e53ca317eeb90378d09cc28543517
Author: Haelwenn (lanodan) Monnier <contact@hacktivis.me>
Date:   Wed,  8 Jan 2020 10:08:31 +0100

decisions.md: New file

Diffstat:

Adecisions.md33+++++++++++++++++++++++++++++++++
1 file changed, 33 insertions(+), 0 deletions(-)

diff --git a/decisions.md b/decisions.md @@ -0,0 +1,33 @@ +# Decisions taken over the project lifetime +## What is this? +See <https://akazlou.com/posts-output/2015-11-09-every-project-should-have-decisions/> +Bascially, the idea is to have a file in your projects repo, where you record +the decisions you make over the course of the project's lifetime. +Rewriting history will not be done but Post-Scriptum notices will. + +## 2020-01-08 08:42:00Z : Start of the decisions.md file +From memory and git log: + +- Changelog is done when preparing for a release, it is copied into the git tag description. This means that there isn't a central file and isn't a changelog entry added with commits. +- OpenPGP is deprecated in favor of signify, reasons being security and portability. +- Prefer using lower and more standard/ubiquitous layers for implementations, one example is the about information with printf and Gtk Dialog rather than a custom scheme in WebKitGTK. + - using GLib instead of POSIX was done at first but the quality/behaviour of GLib (like `g_malloc()` calling `abort()` on errors) reverted this decision. +- WebKitGTK was picked because it is the only WebKit port which is maintained enough without a bus-factor (consider giving QtWebKit a hand too?). +- The `.clang-format` file was copied from the one living in my home directory: + - function declaration is at the start of the line to allow jumping to it with a simple editor + - braces on their own lines to allow for comments space + - "tabs for indentation and space for alignement" style is used for flexibility +- mdoc was picked over other formats for the manpage, as it is implemented in mandoc and GNU groff, much simpler to read/write and transform to other formats (like HTML or Markdown). +- Markdown was picked over other formats for informal documentation, it is a simple format supported by most forges, a format which is easier to write and parse could be considered +- Proprietary systems are not supported for their lack of auditability and transparency. +- C was picked because: + 1. I wanted to avoid being limited by binding completeness or model + 2. I think it is a good language which is fit for this purpose provided you are careful enough (such as using LLVM to it's full potential for checks) + 3. It is portable and doesn't introduces more dependencies than is already needed +- POSIX was picked for it's portability (only known one where it's absent is Windows but it's not going to be supported) +- Writing a portable (almost POSIX-only) Makefile with `pkg-config(1)` was picked over other build systems which tend to be over-complicated and rely on only one implementation. +- Originally the URL entry accepted only valid URLs, this was changed to a bit of heuristics for fixing it when it was entered by the user. +- No search entry is provided, this is to encourage users to avoid search engines as much as possible, support for SmartBookmarks with keywords (similar to DuckDuckGo/Searx !bangs) will be added after support for suggestions via bookmarks +- Bookmarks are first-class citizens as they are data explicitely controlled by the user +- No browsing history is provided, this is to encourage to use and improve bookmarks, it will be added later on with data retention limits, ability to wipe it and non-reachable from WebKit (and so the Wild Web). +- Javascript is turned off by default with a checkbox to enable it temporarly, Permissions Requests (microphone, geolocation, …) are all denied, something similar to uMatrix and NoScript will eventually be done to fix this