Project

General

Profile

Roadmap » History » Version 23

koszko, 04/29/2022 10:28 AM
adjust debian packaging references to look better

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