Project

General

Profile

Roadmap » History » Version 14

koszko, 03/02/2022 10:20 AM
link Hydrilla manpage commits

1 1 koszko
*Note: this is derived from the project plan prepared in relation to NLnet grant received by Haketilo/Hydrilla*
2
3
# Project plan Haketilo/Hydrilla
4
At the time of this writing the browser extension Haketilo and its repository, Hydrilla, have already
5
seen their initial 0.1 demo releases. Below is a plan for their further development that will use the
6
experience gained during initial prototyping to increase stability and supply functionalities that have
7
been missing or provisional only, as well as make the tools available to a wider audience, more
8
secure and easier to use.
9
10
{{toc}}
11
12 13 koszko
## 1. ~~Haketilo and Hydrilla 1.0 pre-release~~ (#103)
13 1 koszko
Some big code changes to land in Haketilo and Hydrilla 1.0 will be available in a pre-release. The
14
pre-release will be made before delivery of several other side artifacts planned for 1.0.
15
16
##### Milestones
17
* ~~project plan~~[^1_prplan]
18
* ~~tentative software bill of materials~~[^1_bom_haketilo][^1_bom_hydrilla]
19
* ~~use of registerContentScript API in Firefox Haketilo port~~ (#92)[^1_haketilo_buildable_again]
20
* ~~move to the new Hydrilla JSON API prototyped at [https://hydrillabugs.koszko.org/projects/hydrilla/wiki/Repository_API
21
](/projects/hydrilla/wiki/Repository_API)~~[^1_haketilo_buildable_again]
22
* ~~most WebExtension storage.local uses replaced with IndexedDB~~ (#98)[^1_haketilo_buildable_again]
23
* ~~Python implementation of Hydrilla~~[^1_python_hydrilla]
24
25
[^1_prplan]: [[Roadmap|this very document]]
26
[^1_bom_haketilo]: [[Haketilo Software Bill of Materials]]
27
[^1_bom_hydrilla]: [[hydrilla:Hydrilla Software Bill of Materials]]
28
[^1_haketilo_buildable_again]: [commit 4c6a2323d90e9321ec2b78e226167b3013ea69ab](/projects/haketilo/repository/haketilo/revisions/4c6a2323d90e9321ec2b78e226167b3013ea69ab)
29
[^1_python_hydrilla]: [Hydrilla](/projects/hydrilla/repository/hydrilla) and [Hydrilla builder](/projects/hydrilla/repository/hydrilla-builder) repositories
30
31 2 koszko
## 2. Haketilo and Hydrilla 1.0 release (#104)
32 1 koszko
This will be the first release since receiving the NLnet grant and the first non-demo
33
release, hence it includes many improvements in various fields.
34
35
##### Milestones
36
* ~~basic automated Haketilo tests using Selenium and a Firefox-based web browser~~ (#66)
37
* ~~JSON schemas describing Hydrilla on-disk resource format, Hydrilla HTTP API and other JSON interfaces in use~~ [^2_schemas_repo]
38 3 koszko
* validation of all external JSON data in Haketilo and Hydrilla using included JSON schemas (#105)
39 1 koszko
* sample Apache2 configuration file for use with Hydrilla (#55)
40
* detailed documentation for installation and running of Hydrilla (#55)
41 14 koszko
* manpage for Hydrilla (#55) [^2_manpages]
42 1 koszko
43
[^2_schemas_repo]: [JSON schemas](/projects/hydrilla/repository/hydrilla-json-schemas) repository
44 14 koszko
[^2_manpages]: [commit 1cb6aaae2055283d04aa0aa581e82addb8049ce4](https://hydrillabugs.koszko.org/projects/hydrilla/repository/hydrilla/revisions/1cb6aaae2055283d04aa0aa581e82addb8049ce4) and [commit 363cbbb6a9fac49a377d8fa13ffede1483feabd5](https://hydrillabugs.koszko.org/projects/hydrilla/repository/hydrilla-builder/revisions/363cbbb6a9fac49a377d8fa13ffede1483feabd5)
45 1 koszko
46
##### Estimated time
47 4 koszko
1.5 weeks
48
49 5 koszko
## 3. Distribution of Hydrilla and (when applicable) Haketilo in package managers (#106)
50 4 koszko
51
It is beneficial to have tools available in a format specific to various operating system distributions.
52
While the process of inclusion in official repositories is often a complex and lengthy one, preparing
53
the actual packages, as is the goal of this task, is a good first step to making that happen.
54
55
##### Milestones
56
57
* .deb packaging of Haketilo and Hydrilla
58
* Nix packaging of Hydrilla
59
* Pacman PKGBUILDs for Haketilo and Hydrilla
60
* Guix packaging of Haketilo and Hydrilla
61
* RPM packaging of Haketilo and Hydrilla
62
63
##### Estimated time
64
65
2 weeks
66
67 5 koszko
## 4. Development of Hydrilla website part (#35)
68 4 koszko
69
A project's website makes its first impression, and therefore deserves special care. In our case the
70
website will be part of our software Hydrilla.
71
72
##### Milestones
73
74
* planning a site structure
75
* designing a landing page
76
* cross-reference with Hydrilla to ensure uniformity of design and compatibility with the on-disk format
77
* crafting of text, graphics, and any other media
78
* assembly of website
79
80
##### Estimated time
81
82
2 weeks
83
84 5 koszko
## 5. Development of a user-controlled captcha client (#107)
85 4 koszko
86
Haketilo's goal is to give internet users control over their browsing. Replacing proprietary,
87
privacy-hostile client-side programs is part of that. A tool similar to the librecaptcha Python program
88
is needed, but in the form of a javascript library.
89
90
##### Milestones
91
92
* facility for Haketilo-supplied scripts to bypass CORS
93
* free/libre javascript library for solving reCAPTCHA challenges
94
* sample Haketilo resource making use of the library on a chosen website
95
96
##### Estimated time
97
98
3 weeks
99
100 5 koszko
## 6. Permissions system for Haketilo-supplied resources (#73)
101 4 koszko
102
Custom, user-supplied resources Haketilo may deploy on viewed pages might require looser
103
restrictions than those normally employed on pages. Or, they might allow for tighter security
104
mechanisms to be employed.
105
106
##### Milestones
107
108
* specification of a new revision of Hydrilla API and on-disk format with permissions support
109 8 koszko
* facility to limit domains for which a Haketilo-supplied script is allowed to bypass CORS
110
* facility to specify what custom Content Security Policy should be used on a given pages (#88)
111 4 koszko
112
##### Estimated time
113
114
2 weeks
115
116 5 koszko
## 7. Further means of user-controlled customization of sites (#108)
117 4 koszko
118
Besides the initial function of replacing sites' javascript it is also desired to facilitate supplying
119
additional data (e.g. images) and replacing other site components.
120
121
##### Milestones
122
123 6 koszko
* facility to make arbitrary bundled data files accessible to Haketilo-supplied scripts (#69)
124
* facility to replace the entire interface of a web page with user-supplied HTML (#70)
125 4 koszko
* facility to add user-supplied CSS to a web page
126
* facility to add user-supplied fonts to a web page
127
128
##### Estimated time
129
130
3 weeks
131
132 5 koszko
## 8. 50 sample site resources for Haketilo (#109)
133 4 koszko
134
To build the community its purpose depends on, Hydrilla must be clearly ready for use. This
135
requires a representative, well-stocked library of packages.
136
137
##### Milestones
138
139
* guide describing how to make and contribute custom site resources to Hydrilla
140
* at least 5 alternative site interfaces
141
* Javascript of at least 10 free/libre web tools (like Etherpad, Ethercalc) repackaged to be run in a user-controlled way from Haketilo
142
* at least 50 different custom site resources in total
143
144
##### Estimated time
145
146
2 weeks
147
148 5 koszko
## 9. Hektilo LibrePlanet presentation (#110)
149 4 koszko
150
LibrePlanet is a conference organized by the Free Software Foundation (FSF). It is "an opportunity
151
to meet and interact with other people with both a technical and non technical background" and to
152
share experience.
153
154
##### Milestones
155
156
* applied to LibrePlanet 2022
157
* prepared presentation about giving users back the control over web browsing
158
* made the presentation at LibrePlanet 2022 (if accepted there) or posted a video presentation on Haketilo website (as a fallback case)
159
160
## 10. Localization of Haketilo and Hydrilla
161
162
To truly empower to web users all over the world, Haketilo, Hydrilla, and all associated materials
163
must be able to support languages from across the world.
164
165
##### Milestones
166
167
* automatic content language negotiation on Hydrilla pages and the website
168
* language selection option on Hydrilla pages and the website
169 10 koszko
* internationalization of Haketilo (#51)
170 4 koszko
* language selection option in Haketilo
171
* Polish translation
172
173
##### Estimated time
174
175
3 weeks
176
177
## 11. Security vetting of Haketilo and Hydrilla
178
179
As NLNet-funded projects, Haketilo and Hydrilla have the privilege of a security review from
180
Radically Open Security. To make use of this opportunity, we will ensure any findings provided are
181
properly addressed.
182
183
##### Milestones
184
185
* action on any recommendations or other findings
186
* report of how each finding from the vetting was addressed, and why
187
* note of any key issues in the developer documentation, in order to avoid repetition in the future
188
189
##### Estimated time
190
191
2 weeks
192
193
## 12. Accessibility vetting of Haketilo and Hydrilla
194
195
To empower every web user, Haketilo and Hydrilla must support the interfaces they need.
196
197
##### Milestones
198
199
* action on any recommendations or other findings
200
* report of how each finding from the vetting was addressed, and why
201
* note of any key issues in the developer documentation, in order to avoid repetition in the future
202
* certified WCAG accessible
203
204
##### Estimated time
205
206
2 weeks
207
208
## 13. Manifest V3 Haketilo port
209
210
Although highly controversial, the Manifest V3 extension format seems unavoidable.
211
212
##### Milestones
213
214
* background page replaced with Service Workers
215
* blocking webRequest operations replaced with declarativeNetRequest
216
* Haketilo working under a Chromium-based browser as a Manifest V3 extension
217
218
##### Estimated time
219
220
4 weeks
221
222
## 14. Tighter testing of Haketilo
223
224
Testing in multiple browser environments is important to ensure stability of the extension.
225
226
##### Milestones
227
228
* automated tests under each supported extension platform with at least 1 Firefox-based and Chromium-based platform
229
* integration tests of communication between Haketilo and a Hydrilla instance
230
231
##### Estimated time
232
233
2 weeks
234
235
## 15. More thorough documentation of Haketilo and Hydrilla internals
236
237
With codebase refactored and stabilized, a worthy thing is to have it properly described for others
238
to hack on.
239
240
##### Milestones
241
242
* graphical diagram(s) describing execution contexts in Haketilo and the way scripts running in various context communicate
243
* graphical diagram(s) describing the algorithm for querying by Haketilo URL patterns
244
* comprehensive description of strategies employed and APIs used for replacing scripts and CSP in Haketilo
245
* graphical diagram describing how entities (resources, mappings, licenses) depend on each another
246
* docstring documentation of every Python function
247
* HTML documentation generated from Python source code
248
* JSDoc description of every Haketilo javascript function exported from file
249
* HTML documentation generated from javascript source code
250
251
##### Estimated time
252
253
2 weeks
254
255
## 16. Tooling for building of site resources
256
257
Simple scripts don't require building before distribution. Wasm modules and bigger libraries do. For
258
users to control the resources they use in Haketilo, there needs to be some well-defined way of
259
accessing the sources and repeating the build process.
260
261
##### Milestones
262
263
* specification of Haketilo source package format
264
* ability to specify other programs the build process depends on
265
* software to automatically build a Haketilo source package
266
267
##### Estimated time
268
269
2 weeks
270
271
## 17. Package signing in Haketilo and Hydrilla
272
273
Haketilo uses encrypted HTTPS connections to query Hydrilla API. However, to boost the security
274
and enable use of mirrors, we plan to also use PGP signatures on site resources served.
275
276
##### Milestones
277
278
* specification of a new revision of Hydrilla API and on-disk format with PGP signatures support
279
* tool for batch signing of site resources
280
* Hydrilla support for serving PGP signatures
281
* Haketilo support for downloading and verifying PGP signatures
282
* facility to manage trusted public keys within Haketilo
283
284
##### Estimated time
285
286
3 weeks
287
288
## 18. Support for custom meta-sites in Haketilo/Hydrilla
289
290
Allowing users to modify pages loaded by their browsers is our goal. Allowing them to aggregate
291
content from many sites on one page is a natural extension of it. Just as is allowing them to run
292
static web apps without having to trust some website serving them.
293
294
##### Milestones
295
296
* specification of a new revision of Hydrilla API and on-disk format with meta-sites support
297 9 koszko
* support for meta-sites in Hydrilla and Haketilo (#72)
298
299 4 koszko
300
##### Estimated time
301
302
3 weeks
303
304
## 19. Easier content management and editing within Haketilo (I)
305
306
Easy configuring and editing of site resource bundles is Haketilo's raison d'รชtre. To definitively
307
meet this expectation, any shortcomings must be identified and rethought.
308
309
##### Milestones
310
311
* testing with untrained users/consultation with "UX experts"
312
* identified annoying quirks/problems
313
* comparison with UIs of similar extensions
314
* designed alternatives to identified problems
315
* user interface mock
316
* a compiled plan for UI changes
317
318
##### Estimated time
319
320
2 weeks
321
322
## 20. Easier content management and editing within Haketilo (II)
323
324
The previously compiled plan and carefully-prepared user interface mocks will direct the
325
implementation efforts.
326
327
##### Milestones
328
329
* new Haketilo settings page interface implementation following the plan
330
* new Haketilo popup page implementation following the plan
331
* automated Haketilo GUI tests
332
333
##### Estimated time
334
335
2 weeks
336
337
## 21. REUSE specification compliance
338
339
License terms of software projects' files should be unambiguous and easy to analyze by humans
340
and computers alike. Compliance with the REUSE specification helps ensure that.
341
342
##### Milestones
343
344
* REUSE compliance in Hydrilla repository
345
* REUSE compliance in project website repository
346
* REUSE compliance in Haketilo repository
347
* REUSE compliance in custom site resources repository(ies)
348
349
##### Estimated time
350
351
1 week
352
353
## 22. Integrity constraints in Haketilo **(optional)**
354
355
One Haketilo custom site resource may depend on another, but initial versions of Haketilo did not
356
verify that dependencies are present. This and other sanity checks can be employed.
357
358
##### Milestones
359
360
* dependency checks when "installing" or upgrading a custom resource in Haketilo
361
* dependency checks when removing a custom resource from Haketilo
362
* facility for cascade removal
363
* validation of Haketilo URL patterns and other values typed in by the user
364
365
##### Estimated time
366
367
1 week
368
369
## 23. Sample meta-sites for Haketilo/Hydrilla **(optional)**
370
371
Running a static webapp like litewrite by visiting its website relies on the security of TLS and
372
network connectivity. Having it packaged as a separate browser extension requires giving it
373
excessive permissions. Running it from an HTML file is inconvenient.
374
375
##### Milestones
376
377
* at least 5 existing webapps packaged as meta-sites
378
* at least 5 meta-sites aggregating content from various client websites
379
380
##### Estimated time
381
382
3 weeks
383
384
## 24. Haketilo build system runnable from the browser **(optional)**
385
386
For portability of Haketilo's POSIX shell-based build system we avoided depending on Node.js,
387
NPM and similar tools. However, an even more portable alternative exists - to contain the build
388
system inside a standalone HTML page.
389
390
##### Milestones
391
392 12 koszko
* Javascript-based build system in an HTML page (#47)
393 4 koszko
* facility to run the javascript-based build system from the command line
394
395
##### Estimated time
396
397
2 weeks
398
399
## 25. User upload of content to Hydrilla website **(optional)**
400
401
To be able to easier gather and share custom site resources within the community, we need a
402
user-friendly platform.
403
404
##### Milestones
405
406
* registrations on a Hydrilla instance
407
* upload of custom site resources to a Hydrilla instance
408
* facility to easily and efficiently moderate the content uploaded by users
409
410
##### Estimated time
411
412
3 weeks
413
414
## 26. Further development of Hydrilla platform **(optional)**
415
416
Users should be able to share not only custom site resources but also their opinions about them.
417
418
##### Milestones
419
420
* support for user comments
421
* support for user ratings
422
* support for flagging site resources that are broken or have other issues
423
* development of comment quality control systems and policies
424
425
##### Estimated time
426
427
2 weeks
428
429
## 27. Facility for setting up Hydrilla repository mirrors **(optional)**
430
431
While allowing users to set up independent instances of Hydrilla gives them greater control over
432
site content they use, it does not by itself increase the robustness and maximum throughput of
433
Hydrilla platform. Enabling the use of mirrors does.
434
435
##### Milestones
436
437
* support for setting up and automatically synchronizing Hydrilla mirrors
438
* support for announcing available mirrors in Hydrilla
439
* support for fetching repository mirrors list in Haketilo
440
* support for distributing requests over multiple repository mirrors in Haketilo
441
* documentation
442
443
##### Estimated time
444
445
2 weeks
446
447
## 28. 150 sample site resources for Haketilo **(optional)**
448
449
To maintain community growth and participation, Hydrilla's collection must be visibly alive and
450
evolve with Haketilo's feature set.
451
452
##### Milestones
453
454
* at least 20 alternative site interfaces
455
* at least 20 existing webapps packaged as meta-sites
456
* at least 150 custom site resources in total
457
458
##### Estimated time
459
460
2 weeks
461
462
## 29. 200 sample site resources for Haketilo **(optional)**
463
464
To maintain community growth and participation, Hydrilla's collection must be visibly alive and
465
evolve with Haketilo's feature set.
466
467
##### Milestones
468
469
* at least 20 accessibility-improving site changes
470
* at least 10 meta-sites aggregating content from various client websites
471
* at least 200 custom site resources in total
472
473
##### Estimated time
474
475
2 weeks
476
477
## 30. Automated building of Haketilo source packages uploaded to Hydrilla **(optional)**
478
479
Requiring packagers to upload compiled code places an extra burden on them, and complicates
480
reproducibility. Hydrilla should be able to build from source packages.
481
482
##### Milestones
483
484
* Hydrilla automated resource builds feature
485
* security consultation of the feature
486
487
##### Estimated time
488
489
2 weeks
490
491
## 31. Self-documented Haketilo **(optional)**
492
493
Now matter how user-friendly the graphical interface is, an explanation of some of the concepts
494
might be needed. The next step, after having the documentation available on the project website,
495
is bundling it with the extension itself.
496
497
##### Milestones
498
499
* Haketilo popup self-documented inline
500
* Haketilo settings page self-documented inline
501
* documentation included as extension-bundled HTML pages
502
503
##### Estimated time
504
505
2 weeks
506
507
## 32. Displaying Hypothesis annotations for given site **(optional)**
508
509
Haketilo makes site resources for websites you visit available in only a few clicks. It would be
510
useful to have the same capacity for comments. The established, libre https://hypothes.is/ provides
511
a framework for this.
512
513
##### Milestones
514
515
* support for displaying current site's Hypothesis annotations in the popup
516
* support for adding adding Hypothesis annotations in Haketilo
517
518
##### Estimated time
519
520
2 weeks
521
522
## 33. Automatic generation of independent browser extensions from Haketilo site resources **(optional)**
523
524
Haketilo's rich feature set might also be an inconvenience. It may be overwhelming or irritating to
525
some users and has a higher risk of breaking with newer browser versions than a simple extension
526
would have. Thus, an option to install just a single Haketilo resource in the browser would be
527
useful.
528
529
##### Milestones
530
531
* automatic generation of Firefox WebExtensions from Haketilo site resources
532
* automatic generation of Chromium ManifestV3 WebExtensions from Haketilo site resources
533
534
##### Estimated time
535
536
2 weeks
537
538 11 koszko
## 34. Facility to automatically convert page's "native" scripts to a Haketilo resource **(optional)** (#6)
539 4 koszko
540
Haketilo gives users control over scripts being executed on a given web page. The scripts to be
541
used need to be defined in Haketilo as a resource. Doing this manually might be time-consuming
542
for a user who aims to use mostly the same javascript a website normally serves, but served from
543
within Haketilo.
544
545
##### Milestones
546
547
* automatic conversion of page's inline scripts in a Haketilo resource
548
* inclusion of page's external scripts in generated resource
549 11 koszko
* inclusion of page's intrinsic javascript events in generated resource (#7)
550 4 koszko
* displaying warnings when a site's javascript is known to use mechanisms that might stop
551
  such automatic package from working properly
552
553
##### Estimated time
554
555
3 weeks
556
557
## 35. Use of a standalone javascript engine to perform unit tests in Haketilo **(optional)**
558
559
A Selenium-driven web browser is currently used to test parts of Haketilo. Those tests that don't
560
rely on browser APIs could as well be run outside of browser which would save time during tests.
561
562
##### Milestones
563
564
* selected the javascript engine to use for testing
565
* facilitated writing Haketilo tests against the chosen engine
566
* applicable existing tests modified to be run without a web browser
567
568
##### Estimated time
569
570
2 weeks
571
572
## 36. Supplemental anti-bot measures in Hydrilla **(optional)**
573
574
Limiting the number of allowed registrations and content uploads is our planned basic way to
575
prevent Hydrilla instances from being harmed by automated requests. Another measures can be
576
added to further improve platform's resilience.
577
578
##### Milestones
579
580
* email-verified registrations
581
* selected an ethical, privacy-friendly captcha solution
582
* implementation of the chosen captcha solution
583
584
##### Estimated time
585
586
2 weeks
587
588
## 37. Support for external user authentication mechanisms in Hydrilla **(optional)**
589
590
It should be possible to run Hydrilla as part of a bigger web service. Users should be able to use
591
the same set of credentials for logging in in various parts of such service.
592
593
##### Milestones
594
595
* selected an authentication mechanism to support
596
* implementation of the feature
597
598
##### Estimated time
599
600
1 week
601
602
## 38. Support for building Hydrilla and Haketilo using Autotools **(optional)**
603
604
The specificity of Haketilo and Hydrilla means a complex build system like Autotools is not
605
necessary. It could, however, be added as optional to supplement their simple build mechanisms.
606
607
##### Milestones
608
609
* Hydrilla buildable with Autotools
610
* Hydrilla out-of-source builds possible
611
* Hydrilla tarball producible with a make rule
612
* Haketilo buildable with Autotools
613
* Haketilo out-of-source builds possible
614
* Haketilo tarball producible with a make rule
615
616
##### Estimated time
617
618
1 week
619
620
## 39. Evaluation of non-WebExtension platforms for the purpose of porting Haketilo **(optional)**
621
622
WebExtensions are really a convenient platform for developing software that empowers users. But
623
this platform is also tightly controlled by big organizations and has some serious limitations and
624
shortcomings.
625
626
##### Milestones
627
628
* evaluation of existing Webkit-based browsers
629
* evaluation of XUL extensions platform still used in some Firefox forks
630
* prepared evaluation report
631
632
##### Estimated time
633
634
1 week
635
636
## 40. Development of the first non-WebExtension Haketilo port **(optional)**
637
638
Users suffer a vendor lock-in with few mainstream web browsers. Lack of their favorite extensions
639
is what stops them from switching to more user-controlled alternatives. Haketilo should not
640
contribute to that problem.
641
642
##### Milestones
643
644
* selection of a target platform based on previous evaluation
645
* specification of tasks
646
* development roadmap
647
* prototype
648
* automated tests
649
* developer documentation
650
* user documentation
651
652
##### Estimated time
653
654
7.5 weeks