This section of the Lumiera technical documentation deals with the code base itself, and is less concerned with the internals of the Lumiera application. It is primarily aimed at people who want to participate in Lumiera development.
The Lumiera source base is huge already, and expected to grow for some time to come. Judging based on the lines of code metric, Lumiera can be considered a medium sized system — which gives us some hints towards the adequate practices, conventions and the degree of formalism to apply.
Generally speaking, a small system doesn’t exceed the mental capacity of a single knowledgeable human person. A single developer can reasonably know everything and understand everything in such a code base. Thus, any further formalism and organisational overhead is detrimental; we’re best off doing away with any kind of “Method” and just rely on our taste and craftsmanship.
Yet this approach reaches a hard limit, a kind of sonic barrier — usually somewhere at a size of about 60000 LoC. From this point on, the appropriate value system is completely reversed: since no single person can understand and know everything about such a system, communication and understanding become the primary concerns of the development process. Suddenly, we do need some organisation, some rituals and a methodical approach. Yet still we don’t need a high degree of formalism — as long as we can at least easily know and recall everyone involved.
To create a distinction from the other side, a constantly growing project might eventually reach the point where the actual coding of new functionality makes up less than 25% of the overall work required. More people might be involved than anyone can reasonably recall or survey. A code size of 1 Million LoC seems to exceed any kind of sufficiently precise imagination. From that point on, a rigorously formalised organisation is vital to keep such a large scale project from floundering.
Conventions
-
Lumiera is Free Software (GPL-2+)
-
Lumiera code uses: GNU style, 4-space indent, CamelCase and British spelling
-
Branches and Releases are organised according to Git-flow
|
|