Up: Developing an Open Source
This column is in itself an ongoing project with the purpose of
documenting the development of an Open Source Project from scratch. The
project monitored and explained in here will be the ``MakeMan'' (or ``mama'')
``MakeMan'' is a project to provide several frontends, GUI and non-GUI, to an
XML interface to write man pages. ``MakeMan'' will use ``DocBook'''s RefEntry definition as a basis1, so as to allow a large variety of applications to access the same
data. This will make it possible to write different frontends, possibly
networked client and www-interfaces, SOAP-services etc. while at the same time
promoting proper documentation.
While following the development of this project, the reader will gain a
thorough understanding of the various Open Source tools, resources and
possibilities used and appreciated all over the world. Since the project is
Open Source, the reader can participate in and influence the development of
``MakeMan''; (s)he can practice, learn and teach Open Source techniques and
As this documentation and the project develops, we will encounter various
tools, concepts, languages; we will learn to use them wisely and properly (or
so we hope) and as this entire project is work in progress, nothing is written
in stone. Let's try to come up with a list of technologies that we will,
might or want to cover.
Topics that (almost) definitely will be covered:
- SGML / XML - XML has been The Next Big Thing(tm) for quite a while now,
it's about time that we see if it lives up to the expectations. If
all goes well, an XML basis will allow us to deploy the same
algorithms in different approaches. Naturally, we will need to take
a close look at XML's parent, SGML.
- VIM - enough of these IDE's already! I'll use my favorite
editor for all editing and we shall see if we can't find a few nifty
tricks that will make our life easier. If you're an emacs-person,
feel free to contribute with The Emacs Way every time
something turns out to be vim-specific.
- autoconf and friends - we want our project to be as
platform independent as possible. It is vital to understand how to
check the system for dependencies, how to actually generate the infamous
- make - naturally, ``make'' will become our close friend.
Hopefully, this project will develop and grow so that we can learn
about complex Makefiles spanning various directories etc.
- CVS - to grant access to the code to other Open Source developers,
``CVS'' will be used.
- man - well, obviously, since the end-result will be a tool to develop
man pages, we will need to closely understand ``man'' itself.
A frontend for ``MakeMan'' will be implemented in at least one of the following:
- GTK+/GNOME - GUI development in C
- Qt/KDE - GUI development in C++
- Java/SWING - GUI development in Java
- Perl - text based tools
- (n)curses - console UI development in C
- Python - I never did anything in Python, now might be as good
a time as ever to start tinkering with it
Additional topics that might be covered:
- flex and bison - it might be interesting (and possibly
needed) to write our own parser to validate a given input-file.
- PHP - a web-frontend
- SOAP - this might come in handy with a PHP or Perl based web
frontend. Yet another buzzword that demands to be investigated.
Up: Developing an Open Source