All Nuxeo Platform documentation versions

Nuxeo Platform 5.6
Nuxeo Platform 5.5
Nuxeo Enterprise Platform (EP) 5.4
Nuxeo Enterprise Platform (EP) 5.3

Nuxeo Platform Dev version (unreleased)

This documentation refers to the unreleased development version of the Nuxeo Platform. For the current production version, refer to the 5.6 documentation.

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Fixed links and format
Section
Column
width70%

Founded on the principles of open source, Nuxeo is passionate about community: the ecosystem of our community users, customers and partners who run their critical content-centric applications on our platform. Open source ensures that these external stakeholders have full visibility into not only the source code but the roadmap and ongoing commitment to standards and platforms. Customers, integrators, contributors and our own developers come together to share ideas, integrations and code to deliver value to the larger user base.
Nuxeo development is fully transparent:
* important development choices are made on the public mailing lists,
* any commit in the code can be followed on ecm-checkins@lists.nuxeo.com,
* any evolution and bug fixing is tracked on JIRA,
* quality of the product development can be monitored on our Jenkins continuous integration site.

Nuxeo is always happy when someone offers to help in the improvement of the product, whether it is for documentation, testing, fixing a bug, suggesting functional improvement or contributing totally new modules. To maintain the quality of such an open development process, Nuxeo has set up a few strict rules that a Nuxeo community member should follow to be able to contribute. There will be in the future a "contributions portal"; until then, this page explains the process that should be respected.

Column
Panel
bgColor#FFFFFF
titleOn this page
Table of Contents

Before describing this process, here are a few points that are the basis of the Nuxeo development process and that should always be kept in mind.

  • Any evolution in Nuxeo sources should be matched with a JIRA issue (http://jira.nuxeo.com/browse/NXP or corresponding product).
  • Any code evolution must be documented, in the English language.
  • Any new feature, even a low-level one, must be unit-tested. Nuxeo will reject any non unit-tested code.
  • Any new feature must be implemented respecting usual Nuxeo software design, leveraging Services, not putting business logic in Seam components, a bad design code could be rejected.

Translations

Nuxeo labels are stored in UTF-8 files and thus can be translated in any language. The process is the following:

  1. Fork nuxeo-features/nuxeo-platform-lang (French and English) and nuxeo-platform-lang-ext (all other languages) projects. See How to translate Nuxeo DM for more details.
  2. Use any standard Java i18n tool to edit the files (postfix it with the i18n code of the language you are translating).
  3. Create a contribution type ticket via JIRA NXP ticket.
  4. Submit your path file attached to the issue or make a pull-request in GitHub.
  5. Optionally, send an email to nuxeo-dev mailing list with the subject "Labels contribution proposal".

Documentation

Contribution is welcome both for technical (Nuxeo book, FAQ, tutorials) and functional documentation. Ask on ecm@lists.nuxeo.com a contributor account for doc.nuxeo.com, with "Documentation contributor account request" in the subject.

Testing

Testing, particularly when Nuxeo submits a Release Candidate version of its products, is always welcome. As our products are easily downloadable, it doesn't require any specific development skill.

  1. Download the version you want to test, set it up.
  2. Get and read the user guide for the selected distribution and modules (Nuxeo DM, Nuxeo DAM, Nuxeo CMF).
  3. For any bug you detect, ask for a confirmation on Nuxeo Answers, create a JIRA ticket, specifying the version of the product, the environment (OS, browser, ...), the conditions and the reproduction steps. You can also set the version for which the bug should be fixed. Before each release every ticket is read and depending on its severity, fixed before the release or postponed.

Improvements and bugfixes

Improving a module is always welcome and is carefully managed by Nuxeo developers. Process is through a JIRA "Contribution" ticket and https://github.com/. You'll get credentials to commit directly when you get used to submitting pull requests and that those one respect the framework logic and quality rules. Depending on the nature of your changes, you might be asked to sign and return the Contributor Agreement. This is mandatory for everything that isn't minor improvement or bugfix.

  1. Create a JIRA "Contribution" ticket that will hold a description of your improvements, functionally and technically.
  2. Send an email to nuxeo-dev mailing list, to notify the community as well as Nuxeo developers.
  3. Nuxeo will approve your specifications (or ask you some more information/change) and will give you recommendations. The JIRA issue will be in "specApproved" state.
  4. Read the Coding and design guidelines.
  5. Fork the project on GitHub.
  6. Do your modifications in a new branch named "FEATURE-the_Jira_issue-a_short_description", respecting the coding and design guidelines. Be sure it doesn't break existing unit tests.
  7. Send a pull-request.
  8. In JIRA, set the ticket to "devReview" state and give a link to your pull request.
  9. Finally, we can ask for some changes, putting comments on your code, then your branch will be merged by a Nuxeo developer.

New Modules

Nuxeo is highly modularized and as a consequence, it is totally possible to develop a new feature that will be deeply mixed with existing interface. Our main recommendation, among respecting coding rules and design, is to respect the usual code layout: core, API, facade, web, … If you have such a project, Nuxeo will be glad to help you designing your module, and to provide a GitHub repository, aside a web page (Wiki) and a JIRA project for the visibility of your development.

  1. Start by an introductory email in the mailing list, explaining purpose of the new module you want to develop (BEFORE developing it) and how you think of doing it or how you did it (although it is always better to contact the list before).
  2. After a few exchanges in the mailing list, return the Contributor Agreement signed. Nuxeo will then add you to the GitHub organization and give you rights to commit in a new GitHub repository.
  3. Read and respect the Coding and design guidelines.
  4. Commit your development regularly (meaning don't wait to finish everything: on the contrary commit each of your developments on a very atomic mode, mentioning purpose of your commit in JIRA (take it as an advice more than a rule).
  5. Unit tests are mandatory and Test Driven Development is strongly encouraged. Functional tests could also be integrated. We'll put your module under continuous integration, if the quality of the code respects Nuxeo criteria.
  6. You can ask for a code review in the nuxeo-dev mailing list.

In addition to code conventions and development good practices above-mentioned, wen creating a new module you should also take the following recommendations into considerations:

  • Align your code on a recent released version or on the latest development version.
  • Provide a clean POM (well indented, no duplication, inheriting nuxeo-ecm POM, ...).
  • If needed, provide a list of the artifacts (libraries) or Public Maven repositories that should be added to the Nuxeo Maven repository to be able to build.
  • Avoid embedded libraries.
  • Avoid introducing new libraries if the equivalent already exist in Nuxeo.

Allergic to GitHub ?

If you are allergic to GitHub, you can sill contribute patches the old way:

  1. create a JIRA ticket of type "Contribution" describing the problem and what you plan to do (or what you did, if it comes after).
  2. Send an email to nuxeo-dev mailing list, to notify the community.
  3. Read the Coding and design guidelines.
  4. Fork the "master" branch of the sub-project you want to patch.
  5. Do your modifications, respecting the coding and design guidelines, checking it doesn't break existing unit tests.
  6. Create a patch file and attach it to the JIRA ticket you created.
  7. Send an email to nuxeo-dev mailing list to notify the community of your contribution.
  8. Patch will be validated or some comments you need to take into considerations will be made.
  9. Patch will be committed by a Nuxeo developer.

Contributor Agreement
Anchor
contributoragreement

Click here to download the Nuxeo Contributor Agreement (PDF).

Content by Label
titleRelated pages
showLabelsfalse
labelsgit
typepage