Guide for CartoWeb 3 Development
This page is meant to be useful for existing and new developers wanting to extend and contribute to cartoweb3. It gives general rules and pointers to documentation.
Coding style: See the Coding style section in the CartoWeb documentation
Consistency: please be consistant with the existing style (naming) and policy. See NamingPolicy for recommended/required names.
See CartowebCvs how to setup your project in CVS
- The existing infrastructure matches your needs:
Use the concept of project to customize the aspect of cartoweb: ProjectHandling
- Most of the work of the visual customisation and configuration can be done using the concept of projects.
- You need new functionalities not present in cartoweb:
- Be really sure the existing plugins can not fit your needs. Just ask what you want on the mailing list, and with luck a developer will tell you that it is already possible to do it in the base system.
- Do not reinvent the wheel: try to extend an existing plugin which does already part of what you are trying to achieve.
- If the base plugin does not expose a point of extension for derivated plugins to use:
- Ask the developers about you need, and the proposition of modification you need to make to the base system. As an example, you would need that an existing plugin includes a protected method which can be overriden by subclasses, to let them do specific work. The base plugin would then have a "do nothing" method for this purpose.
- If the base plugin does not expose a point of extension for derivated plugins to use:
- Write a proposal in the wiki, with the explanation of the requirements, the proposed design and implementation
- Develop your new plugin.
If the framework would benefit from your plugin -> See next point.
You want to make changes to the framework:
- This might be the case when:
- you added new functionalities
- to improve the main framework
- to add extensibility to the framework for your new plugin
- you added a new plugin
- you added new functionalities
- Announce the changes you are about to commit to the list.
- Be sure you respected the coding style and philosophy of the framework.
- Add the new features (if visible) to the "test" mapfile. All features should be visible by default.
- Add unit test for the new plugins and features. There are plenty examples in the tests directory how to do it.
- Be sure all tests are passed ok.
Before Commit:
Before committing a new functionnality, a new plugin or an improvement which implies several changes in framework, you have to submit it to other Cartoweb developpers.
- Create a patch using 'cvs diff'. You MUST use the unified diff format and use 8 lines of context. You can achieve this by putting this line to your ~/.cvsrc:
diff -u8
Send the patch to cartoweb-dev@lists.maptools.org
- Wait for remarks
- Make changes if needed
- Commit
Announce commit to cartoweb-dev@lists.maptools.org