6 |
7u83 |
1 |
Outline Plan for Forthcoming Restructuring
|
|
|
2 |
==========================================
|
|
|
3 |
|
|
|
4 |
For context: I shall be keeping notes and plans in plain-text, while
|
|
|
5 |
making architectural or design decisions. I plan to be spending some
|
|
|
6 |
time working out things here; I'd rather keep them archived in SVN and
|
|
|
7 |
have them archived than lost.
|
|
|
8 |
|
|
|
9 |
There is currently no documentation of high-level design or other
|
|
|
10 |
developer documentation, aside from the grammars and formats of the
|
|
|
11 |
various tools in use. I'm planning to restructure the source somewhat,
|
|
|
12 |
and would like to make these things clear.
|
|
|
13 |
|
|
|
14 |
Eventually, this information will make its way to the TenDRA website
|
|
|
15 |
in the form of developer documentation, along with block diagrams and
|
|
|
16 |
other such things.
|
|
|
17 |
|
|
|
18 |
I'm separating my voice here: "I" refers to me personally (Katherine),
|
|
|
19 |
where I am not speaking on behalf of the entire project; "we" refers
|
|
|
20 |
to the project as a whole.
|
|
|
21 |
|
|
|
22 |
I'd like to build upon the vast amount of work Jeroen has put into the
|
|
|
23 |
project, and rather than discard his efforts, to make use of them -
|
|
|
24 |
without which, I don't believe this next stage for TenDRA would happen.
|
|
|
25 |
|
|
|
26 |
|
|
|
27 |
Stages
|
|
|
28 |
------
|
|
|
29 |
|
|
|
30 |
An overview of intended stages during restructuring:
|
|
|
31 |
|
|
|
32 |
1. Lay out goals for the project.
|
|
|
33 |
|
|
|
34 |
I've sketched out a list of these (at higher resolution than the
|
|
|
35 |
three overseeing principles, which I don't want to change), and
|
|
|
36 |
grouped them into sections.
|
|
|
37 |
|
|
|
38 |
These are prioritised into chronological stages, and will form a
|
|
|
39 |
guide for a marketing plan - whilst we are non-commercial, we can
|
|
|
40 |
still use ideas from the commercial world for organising
|
|
|
41 |
ourselves.
|
|
|
42 |
|
|
|
43 |
This includes laying out phases for deployment, and identifying
|
|
|
44 |
what demographics are attracted to each stage. For example, right
|
|
|
45 |
now, the focus is on development, and so the project needs to be
|
|
|
46 |
made more attractive to developers.
|
|
|
47 |
|
|
|
48 |
2. Document existing High-Level design.
|
|
|
49 |
|
|
|
50 |
This is documentation of block diagrams, and information flow
|
|
|
51 |
within and between programs, at various levels of detail.
|
|
|
52 |
|
|
|
53 |
The purpose of this is to assist in decisions for restructuring
|
|
|
54 |
(which, currently, are estimates only), and to provide a stable
|
|
|
55 |
base of documentation from which the developer resources may grow.
|
|
|
56 |
|
|
|
57 |
3. Restructure directories. (More about this below)
|
|
|
58 |
|
|
|
59 |
In accordance with the current goal of being made attractive to
|
|
|
60 |
developers, and - perhaps more importantly - understandable by
|
|
|
61 |
developers, I'm going to split the TenDRA code base up into formally
|
|
|
62 |
separated units.
|
|
|
63 |
|
|
|
64 |
Currently the code is kept roughly separate, as with any decently
|
|
|
65 |
organised code base. However, I'd like the distinction to be visible
|
|
|
66 |
to the developer in the form of concretely-defined APIs, and
|
|
|
67 |
entirely separate build trees.
|
|
|
68 |
|
|
|
69 |
With this split, the source becomes more digestible, but, more
|
|
|
70 |
importantly, it will appeal to a wider audience. For example, a
|
|
|
71 |
person interested in working with TDF may not be interested in the
|
|
|
72 |
rest of the compiler. Previously, I suspect they were scared off
|
|
|
73 |
from using it by the other unrelated things - and this applies to
|
|
|
74 |
people interested in the other things, but not TDF!
|
|
|
75 |
|
|
|
76 |
It is important to note that the information flow within each
|
|
|
77 |
program will not change here: this is splitting up and formalising
|
|
|
78 |
the divisions, not refactoring processes within each program.
|
|
|
79 |
|
|
|
80 |
4. Bring the source tree to conform to a directory layout style guide.
|
|
|
81 |
|
|
|
82 |
This is not a code style guide; it's a higher level up. This means
|
|
|
83 |
that each directory should identify its purpose, and relate itself
|
|
|
84 |
to a high-level design, for a conceptual overview.
|
|
|
85 |
|
|
|
86 |
This is partially done (to great effect) with README files: I'd like
|
|
|
87 |
to formalise this, and correlate it with a new overview.
|
|
|
88 |
|
|
|
89 |
I suspect we're recreating documentation which did originally
|
|
|
90 |
exist, and has been long-lost. I can only assume that developer
|
|
|
91 |
documentation was not released when TenDRA was open-sourced.
|
|
|
92 |
|
|
|
93 |
Meanwhile, after the directory restructuring, we'd need to recreate
|
|
|
94 |
these anyway.
|
|
|
95 |
|
|
|
96 |
This will break the build: I'm more concerned about getting things
|
|
|
97 |
in the right place, than keeping it continuously buildable.
|
|
|
98 |
|
|
|
99 |
5. Fix up build system.
|
|
|
100 |
|
|
|
101 |
A lot of work has been done here, replacing the original build
|
|
|
102 |
system with a newer one. After restructuring the directories, this
|
|
|
103 |
will have broken drastically, and needs re-creating for each
|
|
|
104 |
individual program.
|
|
|
105 |
|
|
|
106 |
Here I'd also like to start on making the system continuously
|
|
|
107 |
buildable; from this point, commits should not break the build,
|
|
|
108 |
unless they are multistage architectural changes.
|
|
|
109 |
|
|
|
110 |
Work past this point is beyond the scope of this document.
|
|
|
111 |
|