Project

General

Profile

Roadmap » History » Version 17

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