2010-07-23 18:24:30 +02:00
Design Process : Development Framework
======================================
2025-09-08 04:04:39 +02:00
[options="autowidth"]
|====================================
|*State* | _Final_
|*Date* | _2007-06-08_
2025-10-05 02:02:22 +02:00
|*Proposed by* | Cehteh
2025-09-08 04:04:39 +02:00
|====================================
2010-07-23 18:24:30 +02:00
Development Framework
---------------------
2010-07-24 16:48:32 +02:00
Here we collect how the tree/repository will be set up and which tools are
needed/required for working on lumiera.
2010-07-23 18:24:30 +02:00
Description
~~~~~~~~~~~
.Tools required:
2025-09-08 04:04:39 +02:00
* Unix like shell environment with standard tools
2010-07-23 18:24:30 +02:00
* we don't require a specific linux distribution
2025-09-08 04:04:39 +02:00
* Git 1.5.3 (not out yet, but really soon, we want submodules support)
* GNU toolchain, autoconf/automake (maybe SCons or something else?)
* Bouml (version case unresolved)
2010-07-23 18:24:30 +02:00
.Tools suggested:
* doxygen
Tasks
^^^^^
2025-10-05 02:02:22 +02:00
* _Cehteh_ will setup a initial repository
2025-09-08 04:04:39 +02:00
(see -> link:{rfc}/RepositorySetup.html[RfC: proposed repository structure])
* ichthyo has setup a debian-APT-depot at 'deb/ichthyostega.de' and will
2010-07-24 16:48:32 +02:00
add backport packages there if necessary so the debian-people can stay near
Etch/stable in the next time
2025-10-05 02:02:22 +02:00
* _Ichthyo_ volunteers to get the new source into a debian package structure from
2010-07-24 16:48:32 +02:00
start (same as the current cinelerra is)
2010-07-23 18:24:30 +02:00
.And for later:
2025-09-08 04:04:39 +02:00
* decide on a Unit Test framework
(see -> link:rfc/UnitTestsPython.html[RfC Unit-Tests])
2010-07-24 16:48:32 +02:00
* can we get some continuous integration running somewhere (nightly builds,
testsuite)?
* find a viable toolchain for writing more formal documentation.
2025-09-08 04:04:39 +02:00
ReStructured Text, Docbook etc?
2010-07-23 18:24:30 +02:00
Cons
^^^^
2025-09-08 04:04:39 +02:00
* Git submodules are just not usable yet; we need to come along with one
2010-07-24 16:48:32 +02:00
monolitic large project until they are available.
2010-07-23 18:24:30 +02:00
Alternatives
^^^^^^^^^^^^
2025-09-08 04:04:39 +02:00
* use visual studio and .NET [big]#😇#
2010-07-23 18:24:30 +02:00
Rationale
~~~~~~~~~
2025-09-08 04:04:39 +02:00
The project will be tied to a distributed infrastructure based on Git. With recent
Git submodules support it should be easy to let contributors only checkpout/work on
2010-07-24 16:48:32 +02:00
parts of the tree (plugins, documentation, i18n, ...). We want to build up a
2025-09-08 04:04:39 +02:00
set of maintenance scripts in an `./admin` directory.
2010-07-23 18:24:30 +02:00
2010-07-24 16:48:32 +02:00
At the moment we go for rather bleeding edge tools, because we want to stay at
2010-07-26 02:54:14 +02:00
a given version to avoid incompatibility problems. Later on a version switch
needs agreement/notification by all devs.
2010-07-23 18:24:30 +02:00
Comments
--------
2010-07-24 16:48:32 +02:00
I am always in favor of getting the basic project organization and all
2010-07-26 02:54:14 +02:00
scripting up and running very early in a project. I would like if the project
would take a rather conservative approach on the required Libs and Tools, so
that finally, when we get into a beta state, we can run/compile on the major
distros without too much pain. I wouldn't completely abandon the idea to target
2025-09-08 04:04:39 +02:00
*bsd and osX as well later on.
I would propose to move Doxygen to ``required''. The Idea to use SCons sounds
quite appealing to me at the moment. Besides that, I think this RfC could be
moved to ``Draft''.
2010-07-23 18:24:30 +02:00
2025-09-08 04:04:39 +02:00
Ichthyostega:: '2007-06-17T00:18:40Z'
2010-07-23 18:24:30 +02:00
2010-07-24 16:48:32 +02:00
Moved to Draft. For Developer documentation I would prefer doxygen. For user
documentation we can make a similar/same think like nicolasm did for
cinelerra2, means wiki for edits, git to maintain it, based on gnu texinfo.
Texinfo is quite limiting in its capabilities but it suffices, seeing the
current cin2 docs, i say its rather well done.
2010-07-23 18:24:30 +02:00
2010-07-24 16:48:32 +02:00
We need to factor out some of the proposals from this page to subpages (scons,
documentation, testing,...)
2010-07-23 18:24:30 +02:00
2025-09-08 04:04:39 +02:00
ct:: '2007-06-17T17:27:59Z'
It would really suck if we have to go through the experiences described in the article
https://web.archive.org/web/20060427005516/http://freshmeat.net/articles/view/889/[»Stop the autoconf insanity!«].
I have experienced parts of that
2010-07-24 16:48:32 +02:00
in the past. I have only some beginner experience with writing autotoolized
projects (mostly based on trial-and-error) and no experience in any other build
system (such as scons). As such, I still believe that autotools can be
manageable (for me personally) once the initial hurdle of learning is overcome.
I all for Doxygen documentation. Related to documentation are
2025-09-08 04:04:39 +02:00
http://splint.org/[Splint: Annotation-Assisted Lightweight Static Checking].
See also http://splint.org/manual/html/appC.html[descriptions of annotations (in comments)].
I suggest
that we consider using such a tool for QA. Like ct said, this should be
2010-07-24 16:48:32 +02:00
discussed in a subpage.
2010-07-23 18:24:30 +02:00
I agree with using currently bleeding-edge tools.
2025-09-08 04:04:39 +02:00
* _historic remark(Ichthyo):_ who wrote that comment? (neither me nor ct)
We have now a ``compatibility wiki'', finalized this proposal
2010-07-23 18:24:30 +02:00
2025-09-08 04:04:39 +02:00
ct:: '2008-03-26T13:43:26Z'
2010-07-23 18:24:30 +02:00
2025-10-05 02:02:22 +02:00
''''
....
....
Assessment 2025
~~~~~~~~~~~~~~~
[underline]#In hindsight,# this RfC captures the baseline of our project setup. +
We soon settled upon the following toolchain, which is used up to today:
- One published Git repository per developer, with direct pull / merging; +
history is consolidated eventually into the
link:{rfc}/MasterRepositorySetup.html#historical_remark[»official Lumiera repository«],
which is made accessible at
https://git.lumiera.org/?p=LUMIERA;a=summary[`git://git.lumiera.org/LUMIERA`]
- We never used link:{rfc}/GitSubmoduleTransistion.html#_comments[Git submodules]...
- https://www.scons.org/[SCons] became the primary buildsystem soon,
with Autotools discontinued in 2011
- https://trac.edgewall.org/[Trac] is used as planning- and ticket system.
- API documentation is extracted with https://www.doxygen.nl/[Doxygen]
- Website and documentation pages are generated by
https://asciidoc-py.github.io/[Asciidoc], with source files for
documentation maintained
https://git.lumiera.org/?p=LUMIERA;a=blob;f=doc/index.txt;h=9bc0f11e6fb67588388e7616320b695841571278;hb=20f3252892d5b53a05ecd8aeb571122806baba17[in-tree],
published
https://git.lumiera.org/?p=website;a=blob;f=build_website.sh;h=60b90e18d5732d66566baf2c20a217212a5dcece;hb=aefc91e13a95a3c742dc8143c374ec982e0aa56b[automatically on push].
- A https://classic.tiddlywiki.com/[TiddlyWiki] is used for development notes
- for Unit-Tests, we use our own minimalist
https://git.lumiera.org/?p=LUMIERA;a=blob;f=src/lib/test/run.hpp;h=035633af9bde7a8053bcd304baffc21693dcf031;hb=20f3252892d5b53a05ecd8aeb571122806baba17[Test-runner].
and a
https://git.lumiera.org/?p=LUMIERA;a=blob;f=tests/test.sh;h=8c13810eb475bbacd97c528607e6750f47bb145e;hb=20f3252892d5b53a05ecd8aeb571122806baba17[shell script]
to support definition of test collections.
- A Debian package is maintained with
https://wiki.debian.org/PackagingWithGit[git-buildpackage] and published
in our own DEB depot generated by the
https://wiki.debian.org/DebianRepository/SetupWithReprepro[reprepro tooling].
- UML plays only a marginal role today -- yet in fact we generated our initial class
hierarchy with https://web.archive.org/web/20070625100128/http://bouml.free.fr/[Bouml],
as proposed by _Cehteh_. Sometimes, UML design sketches are made with
https://uml.sourceforge.io/[Umbrello], while schematic drawings,
Icons and graphic elements for the GUI are maintained
with https://inkscape.org/[Inkscape]
- Test-visualisation relies heavily on
https://graphviz.org/[Graphviz] and
http://www.gnuplot.info/[Gnuplot]
Ichthyostega:: '2025-09-20'
2010-07-23 18:24:30 +02:00
''''
2025-09-08 04:04:39 +02:00
Back to link:/x/DesignProcess.html[Lumiera Design Process overview]