From Modelio Community
To develop a module, you have to contribute to an existing module development project. Such a project can be hosted anywhere you like, but the Modelio Forge provides such a hosting for convenience. To share a module with other users you have to have it referenced on the Modelio Store.
This article will explain how to join an existing module development project and how to create a new one on the Modelio Forge. It will mainly address the relevant forge infrastructure and project administration details.
This article does not address the development of the module itself (no gory details about code, API or resources packaging). You may want to have a look at the Module Developer's Guide for that kind of informations.
This article doesn't address the development of the Modelio core either. This is addressed in the Enhance the core article.
Joining an existing module development project on the Modelio Forge
There are several way to contribute to an existing module development project. Mainly, what you can do depends on your rights in the module's development project.
- As a simple user registered on the forge website (aka non member of the project), you can already contribute to the project's quality by reporting issues and evolution request. You can even provide diff patches as attachment to the issues and evolution report. The only requirement to do all this is to register on the forge website. It is fast, easy and free!
- As a member of the project, you can of course do the above. Additionally - depending on your rights in the project - you can also edit the wiki pages of the project. These wiki pages are used as the documentation of the module so they are really important.Again depending on your rights in the project, you can also contribute with code and resources for the module itself directly into the SVN repository.
- As the manager of the project, you can do all the above and also manage the projects plugins (i.e. forge functionalities for the project), allocate user roles to registered users (this defines their rights in the project) and create sub-projects.
Reporting issues and asking for evolutions
If you feel something is wrong with a module, you can fill in a bug report in the project's bug tracker. This can also be used to post evolution requests for the module. For more details, see Reporting issues.
Becoming a member
If you feel that you can contribute more to a module than issue reports and evolution requests, you should send a message to the project manager and ask to become a member of the project. Only project managers can add members to projects and defines their right (through assigning them user roles). The project managers are be mentioned as "manager" on the main page of the module's project. Click on their name to access their profile page and you should have access to their mail address.
Note that becoming a member of a project might require you to sign a "Contributor License Agreement" depending on the project's contribution policy. Several previous "non member contributions" like bug reports (with diff patch fixes or text corrections) and obvious commitment to the project are usually also mandatory, but again this depends on the project's policy.
Contributing to a project
You are now a member of the project with documentation edition rights and want to contribute to the module's documentation. Now is the time to start editing the Wiki pages of the projects. The Wiki can usually be found as a sub-project of the module's main project. It is itself split into several sub-projects, one for each supported language. The Wiki syntax used on the Modelio Forge is Markdown.
Code and resources contribution
You are now a member of the project with repository modification rights and you want to contribute to the module's code and resources. Then you first have to check-out the content of the SVN repository.
The URL of the SVN repository is the same as the project's development sub-project (see Structure of a Project), only with "svn" instead of "projects" in the URL.
If the for the JavaDesigner project, the main project's URL is: http://forge.modelio.org/projects/javadesigner
The development sub-project's URL is: http://forge.modelio.org/projects/javadesigner-development
And the SVN repository URL is: http://forge.modelio.org/svn/javadesigner-development
Now you should have the module's source code, its resources and more importantly, the corresponding ant file. This file is used to create an Eclipse project for the module and to build and package the module into a .jmdac file. After doing whatever modification you wanted to do, don't forget to test your module before commiting your modification to the SVN repository!
For more information on module development, see Module Developer's Guide.
Create a new module development project
The Modelio Forge
The Modelio Forge is a convenient place provided to the community to host module development projects.
A project on the Modelio Forge correspond to one and only one module development project. A Modelio Forge project provides several functionalities, most of them being optional:
- user roles management policies
- integration with SVN for source code and resources management
- a wiki for module documentation
- project specific bug tracking system for issue management and non committer patch publication
Technically, the actual forge chosen to manage the module development projects in web mode is Redmine.
Opening a new project on the forge
First things first, you'll need to register as a user on the forge website. Then you'll need to contact the forge administrator by sending a mail at firstname.lastname@example.org asking that a new project is created for you. Your mail must contain the module name, its goal, its description, your forge login (so that the administrator can make you the project manager) and some basic personal informations that will be kept offline but are required to ensure there is a real person that will take care of the project: your real name and/or company name and a postal address.
Once the project is created and you are the project manager, there are several things that can be taken care of.
- define the project's policy regarding license (GPL, APL, ...?) and contribution (is there a Contribution License Agreement to be signed by contributors before they can actually become members of your project?)
- configure what functionalities you want for your project: do you want a Wiki for the documentation (recommended), a dedicated bug tracker, etc
- add members to your project
- freeze and distribute stable versions of your module.
Structure of a Project
A module development project usually have at least 2 sub-projects:
- 1 for the code development aspect
- 1 for the documentation aspect (the Wiki). This project is itself split into several sub-projects (1 for each supported language).
But the actual organization of the project is the responsibility of the project manager.
Sharing: the Modelio Store
When you are satisfied with your current module state, you will probably want other people to use it, so that they can provide you with feedback, fill bugs reports or maybe even join your team! To do that, you can use the Modelio Store. This is a place where all Modelio resources are referenced so that users can easily find them.
Note that the Modelio Store is only a list of references though, and you remain responsible for the hosting of the file. However if your module's development project is hosted on the Modelio Forge, then the hosting is already taken care of!
More details can be found on the article about the Modelio Store.