A developer who has write access to the Suvi repository is free to
make any changes to the Suvi code base, update the home pages,
perform releases, etc... However, certain principles and practices
should be understood, agreed upon and adhered to, so that risks are
Everyone is responsible for ensuring that legal issues are
- If you use code written by someone else, make sure that:
- You have the right to use the code.
- You follow the license requirements carefully.
- Use of the code does not jeopardize the project.
- All code should carry a copyright statement.
- All code should preferably be under the LGPL license.
- Code ownership and responsibility is shared:
Anyone working on the project is free to change any code, as
long as the other principles are observed.
- Simplicity first / Use refactoring to keep code simple:
Everyone is responsible for keeping the code and scripts as
simple as possible.
If the functionality remains the same, code should not be
changed unless the change is towards simplicity.
Code that is not going to be used, should not be added. Unused
code should be removed.
Clear and easy to understand code is preferred to heavy
Everything that might brake should be tested (automatically).
- Automate everything / Keep everything automated:
By automating all kinds of processes (build, test, release,
update, ...), working on the project will be easier, safer and
Anyone working on the project should have the knowledge and
skills required to perform a release, for instance.
If someone, for example, makes a change to the release
process, others do not necessarily need to know about it,
because the change is applied automatically.
Preferred Java / Formatting Style
Wildcard import statements should not be used, because they
introduce the risk that code may break when new classes are added
to external packages. It is better to not use wildcard import
statements than fix things later.
Import statements should be kept sorted so that it is easier to
Tab-characters should not be used, because they cause formatting
problems between just about any tool. Most editors have an option
to not insert tabs.
I personally use JDEE / XEmacs as my development
environment, because the environment allows me to easily
automate everything. For example, it inserts import statements and
keeps them sorted for me.
Last modified: Tue Dec 16 06:10:22 EET 2003