Contributions and patches to the gvSIG code
- Contributions and patches to the gvSIG code
- What is the gvSIG CLA?
- CLA status
- gvSIG code contribution profiles
- Modules gvSIG-desktop
Contributions and patches to the gvSIG code
Version: | 1.2 |
---|
Scope of this document
This document aims to give guidance on the steps to follow to make changes to the existing code in gvSIG.
The contributions to the gvSIG code are mainly divided into three types:
- Bugs. Bug fixes in the existing feature in gvSIG.
- Improvement of a feature finishing. They are small improvements on existing feature in gvSIG.
- New features. Contribution of new feature or modifications to existing code to develop new feature externally.
Since these three ways to contribute to the gvSIG code do not follow exactly the same channels and procedures, we will describe them separately.
A common theme to the forms to contribute to the gvSIG code is that you must surrender the authorship rights of the code contribution to the gvSIG project, as described in the documents What is the gvSIG CLA? and the Contributor License Agreement.
Exclusions
This document does not cover the requirements to be met by a project that provides a new plugin to gvSIG, for this we recommend you to consult the Official gvSIG Projects.
Bugs
If you have detected a bug in the application and have implemented to correct code to fix it, you can contribute it to the project so this is included in future versions of the application.
Not always all corrections will be accepted, sometimes for a lack of resources for inclusion in the review, others for disagreements over whether that implementation is adequate or not to correct the bug. Keep in mind that sometimes the correction of a small bug can give rise to unwanted effects in other parts of the application.
You must complete two tasks to make corrections and fix a bug:
Firstly, the bug must be recorded in the gvSIG bug registry. gvSIG uses as a bug registry a tracker into the issues manager.
To record the bug, it is advisable to register as a user of the forge, but if you do not register you still can record it.
It is advisable to read the following documentation before loading a bug into the registry:
Once the bug is recorded, you could attach to it a patch with the source code and mark the field Has patch with a yes in the ticket.
Tip
It is very important to mark in the ticket since the Patch field is used by the development team to identify bugs that contribute code.
The more information is provided in the ticket description about what your code does, more ease will be the task of the gvSIG person responsible for assessing the potential impact of its correction.
If after evaluating the correction of the bug it is considered appropriate to place it in gvSIG, you will be advised through your ticket that the task has been performed.
If this correction is considered to be problematic, you will also be informed through your ticket.
On the other hand, the first time you must send us the document with the CLA surrendering your copyright on the code that you are giving to gvSIG. More information about this can be found in the Contributor License Agreement document.
Important
If the code modification is proposed by a user with permission to commit, it will not be necessary to attach a patch, instead simply leave a comment with the review number that applies to the change.
It is also advisable to review the document What should I do to fix a bug?.
Before you upload changes, you must wait until your ticket is approved and assigned.
This means that for all corrections a ticket should be registered, approved and allocated.
Remember that the gvSIG project resources are limited and we can not always act immediately on the tickets received. We will try to respond as soon as possible.
Improvements in a feature finishing
We understand that sometimes there are a number of small changes that although they are not considered errors or bugs; it would be good that they are made on gvSIG. They can be as simple as changing the default option of a dropdown menus or the position of a menu option which it seems more logical somewhere else. They are not errors as such because the application works as designed. They are really small improvements in the existing feature.
The steps to follow to make such amendments to the code will be similar to those to be followed during the contribution of code for a bug, with the only exception that instead of using the gvSIG bug registry it should be used the New request for features .
New Features
When implementing a new feature in gvSIG it must be noted that, in general, new features are incorporated in the form of new plugins, so from the user point of view to add a new feature does not normally requires going through this process. The simplest way is to add the new feature to the unofficial gvSIG catalogue or to follow the procedures described in Official gvSIG Projects so it is included as an official project.
So ... When do we follow these procedures?
We should apply this procedure when in order to add our feature we have to modify parts of gvSIG, usually adding new extension points. The features from the user point of view will be kept in a separate plugin, and the necessary changes will be introduced in gvSIG so the plugin works as designed.
To provide sufficient code to gvSIG that would allow us to develop our plugin, we should request it through the tracker in New request for features. There we will register a ticket with a description of what we want to do, attaching the code as a patch or patches, with the implementation of it.
Before we develop our feature we should register the ticket, describing:
- What is the new feature to be added to gvSIG? It is not the feature that you want to implement in your plugin, but the one you need to add to gvSIG in order to develop your plugin.
- The motivation that led you to seek the introduction of this feature, what do you need it for?.
- How you plan to address it. A written account of how you will implement the feature, which modules need to be changed, why and what for?
- A written account of what parts of gvSIG you think may be affected by the proposed changes.
In the ticket you must mark in the Has patch field a yes so that development team clearly identifies the ticket as a request for feature that aims to provide code to gvSIG.
Note that:
- If your request involves changes in various parts of the application it may require the intervention of several developers for testing. This may slow down the process of inclusion of the amendments.
- If it is found that your request may result in loss compatibility or data with user projects, you should review your proposal, because it will not be accepted.
- An inadequate documentation of the new feature may cause not be understood by those responsible with its evaluation, with the consequent rejection. Provide all information you deem relevant to facilitate the task of evaluating your proposal.
- Your request can be considered irrelevant since there might be already other ways to do it. Consult with development lists before you begin making changes in gvSIG.
Once the petition is read, you can be requested to provide more information or to make some changes in some part of what it claims to do, and finally, to be asked for the code that implements it, as a patch or patches, to be attached to the ticket.
Important
If the code modification is proposed by a user with permission to commit, it will not be necessary to attach a patch, instead simply leave a comment with the review number that applies to the change.
Before you upload changes, you must wait until your ticket is approved and assigned.
Remember, the first time you must send us the document with the CLA surrendering your copyright on the code that you are giving to gvSIG. More information about this can be found in the Contributor License Agreement document.
version | Description |
---|---|
1.1 | (translation pending) Añadidos los valores a los que deben dejarse los campos state y resolution de un ticket. |
1.2 | Update references from OSOR to the https://devel.gvsig.org/redmine site |
What is the gvSIG CLA?
Version: | 1.0 |
---|
Tip
This document is based on the OpenBravo legal aspects document.
The current gvSIG official projects copyright holder is the gvSIG Association. Any contribution to the gvSIG project requires to sign our contributor's agreement and send it by regular mail or by fax to gvSIG (this is an unfortunate consequence of copyright law in some jurisdictions). This requirement does not apply to external modules, localizations, documentation, except if they are contributed to us. It only applies to contributions that will be part of the core products.
The objective of contributor agreement is to protect the integrity of the project, its users and developers. The contributor agreement transfers the contributor's copyright to gvSIG who grants a non-exclusive license back to allow the contributor to use his/her own work. The rationale behind the agreement is:
- In case of a legal claim, having a single copyright owner makes it easier to defend the interests of the gvSIG users and developers. The gvSIG Association is committed to defend gvSIG projects in the event of any claim or infringement by third parties.
- The gvSIG Association can relicense its works under any other license in the future. When starting an open source project, the choice of license is intended to be permanent, but the experience of the past few years is that the ability to relicense a project is a useful tool in meeting challenges for open source projects. Not having that flexibility may be a drawback. Without the agreement, every single contributor must be contacted and unanimity reached in order to relicense a code base, or parts of the code must be reimplemented. This is true for all but the most permissively-licensed open source projects.
- The contributors assert that their contributions are original and not protected by any patents. It guarantees to all contributors in the project that all the contributions are original.
Contributor's agreements are standard procedure in open source projects followed by projects ranging from the Free Software Foundation to the OpenOffice.org project, including the Apache project, on which this agreement is loosely based.
If you are not contributing code within the framework of a company or an institution, (i.e. your work is done as an individual), you have just to sign the contribution agreement and send it to the gvSIG Association.
If you are a company, please ensure that someone authorised to sign on behalf of the company signs the agreement and lists the names of people that agreements covers. This is usually done by a senior manager in the organization. This helps to reduce the number of individuals agreements to be signed.
If you have any question regarding this contract please contact us gvsig-legal@gvsig.com.
References
Similar pages of other free software projects:
- OpenLayers HowTo Contribute: http://trac.openlayers.org/wiki/HowToContribute
- OpenBravo legal aspects: http://wiki.openbravo.com/wiki/Contributor%27s_Guide#Legal_aspects
- Nuxeo contributors page: http://www.nuxeo.org/xwiki/bin/view/Main/ContributionSpace
Version | Description |
---|---|
1.0 | First published version of the document |
CLA status
Organizations
Organization name | Date received |
---|---|
LSI (UJI) | 2011/06/01 |
ai2 (UPV) | 2011/06/01 |
DISID | 2012/03/28 |
Laboratorio de Bases de Datos. Universidade da Coruña | 2012/04/24 |
Software Colaborativo | TBD |
Prodevelop | TBD |
CartoLab | TBD |
iCarto | TBD |
Individual contributors
Name | Date received |
---|---|
Fernando Pinotti (UPV) | 2011/09/04 |
Fernando González | 2012/03/26 |
Antonio Falciano | 2012/08/02 |
César Martínez Izquierdo | 2012/09/28 |
gvSIG code contribution profiles
gvSIG code contribution profiles
Version: | 1.0 |
---|
Introduction
This document integrates the description of the different contributor profiles that can participate on the development of gvSIG, presenting at the end on a pretty schematic way the main workflows available when contributing software code to gvSIG.
Described profiles are:
- External developer
- Project developer
- Maintainer
- Reviewer
- Tester
- Software architecture support
Profiles
External developer
Any community member interested on contributing patches. He doesn't have to had a strong commitment with the project and he should be able to do small contributions without too much barriers.
Project developer
A developer with write permission on the whole gvSIG source repository or at some section. He is a developer strongly committed to the project, providing code regularly, so he needs to be comfortable committing changes.
To obtain this role a request to the TSC Board will be presented and will pass with simple majority if (s)he fulfil the established metrics. If the metrics are not fulfilled, the motion will pass with a qualified majority of 3/4. This role can be lost if a request to the TSC Board is presented and will pass with the same criteria that to get the profile.
Maintainer
It's the person in charge to any task to coordinate the development of a subsystem. They will deal with tickets from external developers, or reassign them to project developers. On the other hand, from a technical point of view they will take care to maintain a high cohesion and loose coupling in the subsystem they maintain.
To obtain this role a request to the TSC Board will be presented and will pass with simple majority if (s)he fulfil the established metrics. If the metrics are not fulfilled, the motion will pass with a qualified majority of 3/4. This role can be lost if a request to the TSC Board is presented and will pass with the same criteria that to get the profile.
Reviewer
Is the person in charge of the review and evaluation of the changes on the subsystems started by someone's request or because a periodic supervision.
He's objective is to maintain stability and robustness of the application as a whole, focusing specially on subsystem interfaces and the collaborations between them.
She is a developer with an special sensitivity that encourages her to look with criticism the code, looking more for the impact of changes on the system than on the usefulness of the functionality that code adds.
This profile doesn't requires specific knowledge on the module affected by any change, nor a deep knowledge on gvSIG architecture, and they won't be assigned to any specific subsystem inside gvSIG.
An important note in that a reviewer is not to support any module or subsystem maintainer at all. If you understood that, please read carefully the maintainer description.
To get or loose this profiles the same rules that for maintainers will be applied.
Tester
Note
This tester description is not complete, here there are relevant information about their relation with the other roles described on this document.
A tester is a person in charge of verifying that the application behaves on the way it is noted on a ticket. If the ticket is about a bug fix, it will contain the code, but also all the relative information about how to reproduce the error and how to verify it has been fixed. If the ticket is about a new functionality, it will contain a description of its requirements and how the tester can assure they are fulfilled.
To qualify for this profile an appointment by the testing manager is the only requirement.
Software architecture support
Is a member of the gvSIG software architecture team who can be asked by any developer for advice or help in assessing the impact of a given change.
gvSIG code point of view of every role
Every role related with the development and interaction with the source code of gvSIG has a different point of view of the project. It can be of high level or in-depth. For example, a high level perspective will see a gvSIG product as a set of subsystems that interact trough a group of well defined interfaces. A low level point of view is focused on a subsystem implementation. With this definition in mind, next table shows the roles points of view on the gvSIG code:
Role | Visibility |
---|---|
Software architecture support | They have a general point of view of the application, looking at it as a whole. |
Maintainer | He looks for his module code, as well as any API his module interacts |
Reviewer | He looks at interfaces or even methods. He evaluates the impact of changes on the semantics, interfaces, method signatures or their context. |
Rights and Obligations
The following are the duties and rights of each of the profiles:
Role | Rights and Obligations |
---|---|
External developer |
|
Project developer |
|
Maintainer |
|
Reviewer |
|
Tester |
|
Software architecture support |
|
Activities restrictions
Next table shows what is not allowed to every role.
Role | Restricitons |
---|---|
External developer |
|
Project developer |
|
Maintainer |
|
Reviewer |
|
Role metrics
Next table shows the different metrics to take in account to obtain a role.
Role | To obtain a role |
---|---|
Project developer |
|
Maintainer |
|
Reviewer |
|
This table shows some considerations to be taken in account when losing a role:
Role | To lose a role |
---|---|
Project developer |
|
Maintainer |
|
Reviewer |
|
Use cases and work flows overview
Warning
In development
Use case 1: new ticket with patch
- A new ticket is created with the bug or new functionality despription
- The developer adds a source code patch
- If the ticket is managed by a reviewer:
- The maintainer or architecture team member assigns the ticket to a reviewer
- If the reviewer detects something wrong, he adds a note on the ticket and if he sees that the contributor would solve it, he asks for fixing at the same ticket
- When the reviewer agrees with the patch, he commits it to the SVN and updates the ticket, changing the status to reviewed
- If the ticket is managed by a maintainer
- The maintainer or architecture team member assigns the ticket to a maintainer
- The maintainer commits the changes to the SVN and updates the ticket
- The maintainer or an architecture team member assigns the ticket to a reviewer
- If the reviewer detects something that can be wrong, informs of this on the ticket and ask the maintainer about fixing it
- When the reviewer is happy with the changes updates the ticket to reviewed
- If the ticket is managed by a project developer
- The maintainer or architecture team member assigns the ticket to the project developer
- The developer commits the changes to the SVN and updates the ticket
- The maintainer or architecture team member assigns the ticket to a reviewer
- If the reviewer detect something that can be wrong, informs of this on the ticket and ask the developer about fixing it
- When the reviewer is happy with the changes updates the ticket to reviewed
Use case 2: ticket management by a project developer
- The developer will firstly contact the project maintainer using the ticket comments to inform about his interest on solving that bug
- The maintainer assigns the ticket to the developer
- The developer commits the changes to the SVN and updates the ticket
- The maintainer or architecture team member assigns the ticket to a reviewer
- The reviewer checks the code and if everything is ok changes to ticket to reviewed
Use case 3: ticket management by a maintainer
- The maintainer assigns to himself the ticket
- The maintainer commits the changes and updates the ticket
- The maintainer or an architecture team member assigns the ticket to a reviewer
- The reviewer checks the code and if everything is ok changes the ticket to reviewed
version | Description |
---|---|
1.1 | Added information about the workflow (to be reviewed) |
Modules gvSIG-desktop
gvSIG-desktop v1
Proyect | Maintainer | |
---|---|---|
Applications | ||
|
J.Piera | jpiera@prodevelop.es |
|
Fran Peñarrubia | fpenarru@gmail.com |
Extensions | ||
|
||
|
||
|
||
|
Fran Puga | fpuga@cartolab.es |
|
J.Piera | jpiera@prodevelop.es |
|
Nacho Varela | nachouve@gmail.com |
|
Fran Peñarrubia | fpenarru@gmail.com |
|
||
|
||
|
Fran Puga | fpuga@cartolab.es |
|
||
|
||
|
||
|
||
|
||
|
Pablo Sanxiao | psanxiao@icarto.es |
|
||
|
||
|
||
|
Fran Peñarrubia | fpenarru@gmail.com |
|
Fran Puga | fpuga@cartolab.es |
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
Fran Peñarrubia | fpenarru@gmail.com |
|
||
|
||
|
||
|
||
|
J.Piera | jpiera@prodevelop.es |
|
Fran Peñarrubia | fpenarru@gmail.com |
Frameworks | ||
|
||
Libraries | ||
|
||
|
||
|
||
|
||
|
||
|
||
|
Fran Peñarrubia | fpenarru@gmail.com |
|
Fran Peñarrubia | fpenarru@gmail.com |
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
Nadal | francisco_nad@gva.es |
Another gvSIG 1.X proyects | ||
|
Fran Puga | fpuga@cartolab.es |
|
||
|
||
|
Andrés Maneiro | amaneiro@icarto.es |
|
||
|
||
|
||
|
||
Proyects not incluided in gvSIG 1.X | ||
|
Fran Peñarrubia | fpenarru@gmail.com |
|
Jordi Torres | jtorres@ai2.upv.es |
|
Jordi Torres | jtorres@ai2.upv.es |
gvSIG-desktop v2
Proyect | Maintainer | Comments | |
---|---|---|---|
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
José Manuel Vivó | jmvivo@disid.com | |
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
Nacho Brodín | ibrodin@prodevelop.es | |
|
Nacho Brodín | ibrodin@prodevelop.es | |
|
Nacho Brodín | ibrodin@prodevelop.es | |
|
Nacho Brodín | ibrodin@prodevelop.es | |
|
Nacho Brodín | ibrodin@prodevelop.es | |
|
Nacho Brodín | ibrodin@prodevelop.es | |
|
Nacho Brodín | ibrodin@prodevelop.es | |
|
Nacho Brodín | ibrodin@prodevelop.es | |
|
Nacho Brodín | ibrodin@prodevelop.es | |
|
Nacho Brodín | ibrodin@prodevelop.es | |
|
|||
|
|||
|
|||
|