Project

General

Profile

Roadmap » History » Version 22

koszko, 04/29/2022 10:26 AM
add references do Debian packaging

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