Introduction
This document describes the organization of the project Cronos Control. This includes which comments should be in document headers, how the subversion repository is structured, where bug reports and feature requests go, how the code is licensed and organizational things like that. It's not intended to contain details of programming even if they are conventions, too, like file formats etc. They should be specified elsewhere.
Language
CC started as an idea of few Costa Rican engineers. We spent hours of discussion all in Spanish, but decided to make everything regarding the project in English, since it's some kind of world language and the one most populated in computer business. Comments in source code, mailing lists, homepage and documentation should all be in English. This should make it possible to join this project from all over the world.
License
We decided to publish CC under
not decided yet license.
The license of this document itself is not decided yet.
If you want to set your part under GPL, please use one of the following headers to include in your source code.
English
This file is part of CC (Cronos Control).
CC is free software; you can redistribute it and/or modify it under the terms of the not decided yet license.
You should have received a copy of the not decided yet license along with CC; if not, write to the info@cronoscontrol.net
Disclaimer
CC is distributed in the hope that it will be useful, but without any warranty; without even the implied warranty of merchantability or fitness for a particular purpose. See the not decided yetlicense for more details.
Document State
This document is, like the whole project, in planning and development state. Any statement might be subject to change and cannot be relied on.
Subversion
Short Introduction
Subversion is a version control system. We put nearly everything regarding the project in our
subversion repository. Information about accessing this Subversion repository may be found in the document "
Subversion (Version Control for Source Code)".
Repository Folder Structure
Although subversion itself doesn't care about folder names, it's recommend to specify a commitment on a uniform structure. In daily programming a structure of subprojects has proven to be useful. These subproject folders then contain the subfolders branches, tags and trunk. The current development takes place in trunk, releases are copied to tags. These tags mark fix levels of development and are usually not changed in folder tags again. Alternative development branches are put to folder branches. It's possible to merge these branches back to main development branch in trunk. See section Short Introduction and cited references for details.
You can see an example of a folder structure of CC subversion repository below. It only shows the structure itself. Some parts are already used in this way or will be created (e.g. the folders homepage and docs). Other folder names like the ones for libs or clients are freely thought up examples. Create folders with the real names of these parts when you need it.
The folder docs should contain documents like this one. It should contain things like diagrams, concepts, conventions, licensing stuff and so on.
/svnroot
+- homepage
| +- branches
| +- tags
| | +- 060919_first_launch
| +- trunk
| +- de
| +- en
| +- img
| +- include
| +- template
+- docs
| +- branches
| +- tags
| +- trunk
|- daemons
| +- impulsd
| +- branches
| +- tags
| +- trunk
| +- src
| | +- transport
| | +- httpd
| +- test
+- libs
| +- perlclientlib
| | +- branches
| | +- tags
| | +- trunk
| +- somefancydaemonlib
| +- branches
| +- tags
| +- trunk
+- cr
+- imperlc
| +- branches
| | +- first_micq_client
| +- tags
| +- trunk
| +- conf
| +- Impuls
| +- Plugin
| +- CenterIcq
| +- Climm
| +- Psi
+- qt-reader
+- branches
+- tags
+- trunk
Properties
Beside files and folders itself subversion supports so called
properties for each of these elements. They can be used to paste dynamic text as done in this document. This can be the author who last changed the file, revision of file or similar stuff. There are also properties specifying the
mime-type [
1] or marking a file as executable.
On text files (e.g. source code or LaTeX documents) please always set the property
svn:mime-type to "text/plain" or anything better matching starting with "text". Subversion distinguishes text files from binary files with this property. (In fact subversion tries to recognize binary files automatically and sets them to "application/octet-stream". Files without
svn:mime-type set are treated as text files.)
Please also set
svn:eol-style to "native" on all text files. CC parts are intended to be portable to different operating systems and this prevents from problems with line termination characters in text files.
Commit Messages
The intention of commit messages is not to bother you. They are really helpful to find a certain point of development later. It helps to find the point of time when a certain bug was fixed, the start of a branch, the introduction of a new feature and so on. So
please make commit messages which shortly explain
what you did and
where! This saves time and in many cases searching directly through the code shouldn't be necessary.
Source Code
This is about things which should be in source code beside program logic.
Copyright, License, Headers
Please put copyright and license notes as comment at the beginning of each file. Copyright should always be on "The Cronos Control-Team". How the license part looks in detail depends on the license used. A short overview of what is done in this specific file is also useful at the beginning of each file.
Please avoid putting your name in the copyright notice. We want to avoid some kind of "possession" of files. There should be no "This is my project or tool and nobody else should change it." However you are free to write your own tools with your own license playing together with CC outside of impuls-toolset.org.
Comments and Indentation
First and only rule:
Do it! Comments are really cool for other developers reading your code and indentation makes it lot easier to read.
Communication
We are using the mailing lists of sourceforge.net for our project. Everything besides bugs, tasks and feature requests, which are done here, is discussed on the
mailing lists.