Next: Copying, Previous: C API reference, Up: Top
Liquid War 6 is released under the GNU General Public License (GPL). Therefore, contribution to the main source tree is welcomed if submitted under the same license. While this is usually not a problem with C or Guile code, the situation gets complex when the material concerned is something else.
Documentation, for that matter, is released under the GNU Free Documentation License (FDL).
But as it is a game, graphical and interactive, Liquid War 6 also comes with many items such as maps, graphics, sounds, musics. And it is not always to figure out what is purely data, and what is purely code. A level for instance might come with a resource file containing constants, directive on how it should behave, which are not that far from code. It also happens that in the current implementation, levels are stored as images, but they really do contain some logical elements which could have been stored elsewhere, or even hardcoded in C. Conversely, some graphical aspects are hardcoded in the various graphical submodules. As for musics, there are plans to tweak Csound scores or even orchestras on the fly to adapt the music dynamically to the game context. So it is really not that easy to figure out what is artwork and what is code.
Problems raise when most artwork creators do not use code related licenses such as the GPL. Instead, they use artwork related licenses such as the Free Art License or the Creative Commons Attribution-ShareAlike 2.5. While this is perfectly understandable, it gets complicated to include such work directly in Liquid War 6. Therefore, when possible, contributors are asked to dual license their work so that it can be available under the terms of the GNU GPL for Liquid War 6 (which means dual license for any use, as the GNU GPL does not restrict the context in which you use the software). Of course, the work can be licensed under the GNU GPL in the first place, but this is obviously not mandatory, and it sometimes does not really make sense, when taken out of the Liquid War 6 context, graphics or musics can cease to have this code related aspect.
TODO...
Once you have installed GNU Arch (tla), take a look at arch meets hello-world, a usefull tutorial.
You can introduce yourself and create a repository by issuing commands like:
tla my-id me@@home.net tla register-archive me@@home.net--2006 /home/me/tla-archives
Then, you can get create your own repository, with a command like:
tla tag -S liquidwar6@@sv.gnu.org/liquidwar6--beta--0.1 me@@home.net--2006/liquidwar6--beta--0.1
The idea is that you create, locally, a depot which has a name that matches the name on sv.gnu.org (this is for convenience, you could technically give it any name...) and indicate that they represent, today, the same thing.
You can get a working copy of your depot with the command:
tla get me@@home.net--2006/liquidwar6--beta--0.1
This will create a complete source tree, which you are free to modify, this is where you should hack.
To synchronize yourself with upstream developments, go into
your copy (the directory created by tla get
) and type:
tla star-merge liquidwar6@@sv.gnu.org/liquidwar6--beta--0.1
This will apply locally all the changes that happened since the
last synchronization. Of course this is one way to work, you
can decide to cherry pick patches and such stuff, but for most
dayly uses, a good'ol star-merge
is fine.
Not that star-merge
will only apply patches on your
working copy, not on your repository. The only way to actually
commit the modifications on the repository is to use the
commit
command.
When using Arch, you can of course still send patches created
with diff
, or even send updated files directly, the way
you would without revision control.
But it can be more convenient to either
/home/me/tla-archives
in our example).
tla mkpatch
.
Here's an example of an mkpatch
command, and which will
compute the differences between a previous
liquidwar6--beta--0.1--patch-2
snapshot and a not yet
commited latest version:
tla mkpatch {arch}/++pristine-trees/unlocked/liquidwar6/liquidwar6--beta/liquidwar6--beta--0.1/me@@home.net--2006/liquidwar6--beta--0.1--patch-2 . my-patch
This will create a my-patch
directory, which can be gzipped
and sent by mail.