Project

General

Profile

Roadmap » History » Version 20

koszko, 04/29/2022 10:18 AM
mark task 2 milestones as completed

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