Haketilo/Hydrilla Roadmap

Planned tasks

This section lists tasks on which efforts are going to concentrate. It is not said that all of those tasks are being worked on at any given point in time. They are just considered to be potentially very beneficial when completed.

Distribution of Hydrilla and Haketilo in package managers (#106)

It is beneficial to have tools available in a format specific to various operating system distributions.
While the process of inclusion in official repositories is often a complex and lengthy one, preparing
the actual packages, as is the goal of this task, is a good first step to making that happen.

To do

Development of Hydrilla website part (#35)

A project's website makes its first impression, and therefore deserves special care. In our case the
website will be part of our software Hydrilla.

To do

Permissions system for Haketilo-supplied resources (#73)

Custom, user-supplied resources Haketilo may deploy on viewed pages might require looser
restrictions than those normally employed on pages. Or, they might allow for tighter security
mechanisms to be employed.

To do

Further means of user-controlled customization of sites (#108)

Besides the initial function of replacing sites' JavaScript it is also desired to facilitate supplying
additional data (e.g. images) and replacing other site components.

To do

50 sample site resources for Haketilo (#109)

To build the community its purpose depends on, Hydrilla must be clearly ready for use. This
requires a representative, well-stocked library of packages.

To do

Localization of Haketilo and Hydrilla

To truly empower to web users all over the world, Haketilo, Hydrilla, and all associated materials
must be able to support languages from across the world.

To do

Tighter testing of Haketilo

Testing in multiple browser environments can help catch problems.

To do

Tooling for building of site resources

Simple scripts don't require building before distribution. Wasm modules and bigger libraries do. We could benefit from a well-defined way of accessing the sources and repeating the build process.

Hydrilla builder currently allows contents of APT packages to be reused in Haketilo packages. This already partially achieves the goal, since APT/Debian have a well-defined way of building packages. On the other hand, it might be more practical to instead use GNU Guix for the tasks as its package definitions can usually be contained inside a single file and it has a friendlier learning curve.

To do

Haketilo uses encrypted HTTPS connections to query Hydrilla API. However, to boost the security
and enable use of mirrors, we plan to also use PGP signatures on site resources served.

To do

Support for custom meta-sites in Haketilo/Hydrilla

Allowing users to modify pages loaded by their browsers is our goal. Allowing them to aggregate
content from many sites on one page is a natural extension of it. Just as is allowing them to run
static web apps without having to trust some website serving them.

To do

REUSE specification compliance

License terms of software projects' files should be unambiguous and easy to analyze by humans
and computers alike. Compliance with the REUSE specification helps ensure that.

To do

Extra task ideas

This section lists tasks that could be considered in the future but which are not currently being worked on. In general, tasks on this list are considered to have higher amount-of-work:usefulness ratio than those in the Planned tasks section.

Upstream proxy configurable through Haketilo UI

It is currently possible to use proxychains-ng to tunnel Haketilo traffic through yet another proxy. This can be for example a Tor SOCKS proxy. Chaining Haketilo with other proxies could be made more convenient, especially for non-technical users. It can be achieved for example by integrating proxychains into Haketilo as a dependency.

Haketilo site resources available as GreaseMonkey user scripts (when applicable)

Haketilo in general aims to do something different than GreaseMonkey does. Despite that, some scripts distributed through Hydrilla could probably be also useful to GreaseMonkey users.

More thorough documentation of Haketilo and Hydrilla internals

With codebase refactored and stabilized, a worthy thing is to have it properly described for others
to hack on.

To do

Sample meta-sites for Haketilo/Hydrilla

Running a static webapp like litewrite by visiting its website relies on the security of TLS and
network connectivity. Having it packaged as a separate browser extension requires giving it
excessive permissions. Running it from an HTML file is inconvenient.

To do

User upload of custom site resources to Hydrilla website

To be able to easier gather and share custom site resources within the community, we need a
user-friendly platform.

To do

Facility for setting up Hydrilla repository mirrors

While allowing users to set up independent instances of Hydrilla gives them greater control over
site content they use, it does not by itself increase the robustness and maximum throughput of
Hydrilla platform. Enabling the use of mirrors does.

To do

Self-documented Haketilo

Now matter how user-friendly the graphical interface is, an explanation of some of the concepts
might be needed. The next step, after having the documentation available on the project website,
is bundling it with the extension itself.

To do

Automatic generation of independent browser extensions from Haketilo site resources

Haketilo's rich feature set might also be an inconvenience. It may be overwhelming or irritating to
some users and has a higher risk of breaking with newer browser versions than a simple extension
would have. Thus, an option to install just a single Haketilo resource in the browser would be
useful.

To do

Facility to automatically convert page's "native" scripts to a Haketilo resource (#6)

Haketilo gives users control over scripts being executed on a given web page. The scripts to be
used need to be defined in Haketilo as a resource. Doing this manually might be time-consuming
for a user who aims to use mostly the same JavaScript a website normally serves, but served from
within Haketilo.

To do

Support for building Hydrilla and Haketilo using Autotools

The specificity of Haketilo and Hydrilla means a complex build system like Autotools is not
necessary. It could, however, be added as optional to supplement the Python build system used.

To do

Completed tasks

Section title leaves no need for additional explanation.

Haketilo and Hydrilla 1.0 pre-release (#103)

Some big code changes to land in Haketilo and Hydrilla 1.0 will be available in a pre-release. The
pre-release will be made before delivery of several other side artifacts planned for 1.0.

To do

Haketilo and Hydrilla 1.0 release (#104)

This will be the first release since receiving the NLnet grant and the first non-demo
release, hence it includes many improvements in various fields.

To do

Development of a user-controlled captcha client (#107)

Haketilo's goal is to give internet users control over their browsing. Replacing proprietary,
privacy-hostile client-side programs is part of that. A tool similar to the librecaptcha Python program
is needed, but in the form of a JavaScript library.

To do

Haketilo LibrePlanet presentation (#110)

LibrePlanet is a conference organized by the Free Software Foundation (FSF). It is "an opportunity
to meet and interact with other people with both a technical and non technical background" and to
share experience.

To do

Integrity constraints in Haketilo

One Haketilo custom site resource may depend on another, but initial versions of Haketilo did not
verify that dependencies are present. This and other sanity checks can be employed.

To do

Tasks that have been put aside

This section describes tasks that were once in the roadmap but which will not be specifically worked on. Tasks might have landed here for various reasons. It might be that they are too complicated to complete, too far-reaching or that their completion relied on actions of some other party. Regardless of the cause, the tasks are listed here for documentation purposes.

Security vetting of Haketilo and Hydrilla

As NLNet-funded projects, Haketilo and Hydrilla have the privilege of a security review from
Radically Open Security. To make use of this opportunity, we will ensure any findings provided are
properly addressed.

To do

Accessibility vetting of Haketilo and Hydrilla

To empower every web user, Haketilo and Hydrilla must support the interfaces they need.

To do

Manifest V3 Haketilo port

Although highly controversial, the Manifest V3 extension format seems unavoidable.

To do

Easier content management and editing within Haketilo (I)

Easy configuring and editing of site resource bundles is Haketilo's raison d'ĂȘtre. To definitively
meet this expectation, any shortcomings must be identified and rethought.

To do

Easier content management and editing within Haketilo (II)

The previously compiled plan and carefully-prepared user interface mocks will direct the
implementation efforts.

To do

Haketilo build system runnable from the browser

For portability of Haketilo's POSIX shell-based build system we avoided depending on Node.js,
NPM and similar tools. However, an even more portable alternative exists - to contain the build
system inside a standalone HTML page.

To do

Further development of Hydrilla platform

Users should be able to share not only custom site resources but also their opinions about them.

To do

150 sample site resources for Haketilo

To maintain community growth and participation, Hydrilla's collection must be visibly alive and
evolve with Haketilo's feature set.

To do

200 sample site resources for Haketilo

To maintain community growth and participation, Hydrilla's collection must be visibly alive and
evolve with Haketilo's feature set.

To do

Automated building of Haketilo source packages uploaded to Hydrilla

Requiring packagers to upload compiled code places an extra burden on them, and complicates
reproducibility. Hydrilla should be able to build from source packages.

To do

Displaying Hypothesis annotations for given site

Haketilo makes site resources for websites you visit available in only a few clicks. It would be
useful to have the same capacity for comments. The established, libre https://hypothes.is/ provides
a framework for this.

To do

Use of a standalone JavaScript engine to perform unit tests in Haketilo

A Selenium-driven web browser is currently used to test parts of Haketilo. Those tests that don't
rely on browser APIs could as well be run outside of browser which would save time during tests.

To do

Supplemental anti-bot measures in Hydrilla

Limiting the number of allowed registrations and content uploads is our planned basic way to
prevent Hydrilla instances from being harmed by automated requests. Another measures can be
added to further improve platform's resilience.

To do

Support for external user authentication mechanisms in Hydrilla

It should be possible to run Hydrilla as part of a bigger web service. Users should be able to use
the same set of credentials for logging in in various parts of such service.

To do

Evaluation of non-WebExtension platforms for the purpose of porting Haketilo

WebExtensions are really a convenient platform for developing software that empowers users. But
this platform is also tightly controlled by big organizations and has some serious limitations and
shortcomings.

To do

Development of the first non-WebExtension Haketilo port

Users suffer a vendor lock-in with few mainstream web browsers. Lack of their favorite extensions
is what stops them from switching to more user-controlled alternatives. Haketilo should not
contribute to that problem.

To do

  1. APT repository and debian package git branches (Hydrilla and Hydrilla builder

  2. commit 7206db45f277c10c34d1b7ed9bd35343ac742d30 

  3. this very document 

  4. Haketilo Software Bill of Materials 

  5. Hydrilla Software Bill of Materials 

  6. commit 4c6a2323d90e9321ec2b78e226167b3013ea69ab 

  7. Hydrilla and Hydrilla builder repositories 

  8. JSON schemas repository 

  9. commit 57ce414ca81682a71288018a4d9001604002ec23  

  10. commit ea6afb92048c835752fe1c72ad52f424e2df88a8 

  11. User manual 

  12. commit 1cb6aaae2055283d04aa0aa581e82addb8049ce4 and commit 363cbbb6a9fac49a377d8fa13ffede1483feabd5 

  13. Haketilo release v2.0-beta1 

  14. Hacktcha release 2022.6.21 

  15. Hacktcha demo script 

  16. https://libreplanet.org/2022/speakers/#5790