Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Info
titleOur recommended way to make code available

The best way to inform us of your code contribution is by entering a new issue into our DSpace Issue Tracker. In that issue you should provide information as to why you feel this code is a worthwhile contribution (e.g. describe the bug it fixes or a use case that it meets). You can either submit a corresponding "Pull Request" to our GitHub repository (recommended, see Development with Git) or upload any files/patches to that issue directly. We will then review & comment on your code in that same area (and it will automatically send you an email with our comments).
For Larger Initiatives: If you are building out a much larger project, we highly recommend notifying the community of the work early on via an email to dspace-devel@lists.sourceforge.net. This can help find collaborators or get early feedback. We also recommend you develop your project via Git/GitHub, as it provides easier ways to review/collaborate with other developers.

...

  1. Any changes must be Java 1.6 compliant.
  2. When possible, your contribution should be a "Pull Request" sent to our GitHub repository (see Development with Git). However, you may also create a patch against the SVN Trunk (latest) code.the latest version of the code.
  3. Ensure the code is commented and correctly formatted (you can use Eclipsemany IDE's format function functions to do that or a tool like Jacobe ). Refer to the Coding Conventions section below.
  4. Your contribution must adhere to licensing requirements to be included. Refer to the Licensing of Contributions below
  5. User interface patches must be internationalised (see the I18nSupport guide)
  6. User interface patches must be XHTML-compliant and have a W3C WAI Conformance Level of "Double-A"
  7. Where possible, new User Interface features are encouraged to support both XMLUI and JSPUI interfaces. However, this is not a requirement. Patches supporting only one interface may be accepted.
  8. Your patch must come with Documentation. Minimally, technical documentation must be part of the system docs – see Documentation Contributions below. Ideally, we'd also like User/Usage Documentation.
  9. Examples or Use Cases should be submitted to help Committers understand and adequately test the patch prior to applying it to the core codePatches should be small diffs (no large all encompassing patches!) using the unified output format. If you need help with generating a patch, there are many good resources out on the web. Here are just a few:
  10. How to Create a Patch
  11. Creating Patchs
  12. Ten Minute Guide to Diff and Patch
  13. Any new features should be configurable (i.e. try not to make features specific to your own institution, they need to be generalized if possible). Be careful in particular with the dspace.cfg file. Make sure you only patch this if you change involved new configuration parameters in it, and make sure you have good default values for them. Don't accidentally include your own local configuration parameters (e.g. host name etc) in the patch! If the new feature is in any way specific to a particular application (e.g. open access, theses), it should be switched off by default
  14. If you add new configuration parameters, name them appropriately. Also, they should not be required to be in dspace.cfg – if the parameters are omitted, DSpace should continue to operate as before.
    • For example, if you add a new e-thesis-related submission step, you might add a couple of new config parameters: webui.submit.thesisstep, and webui.submit.thesisstep.color. If webui.submit.thesisstep = false, the submission process should not be affected for those not using DSpace for e-theses. Also, if your code finds that webui.submit.thesisstep is missing, it should assume a default of 'false' so that after an update, previous installations of DSpace behave as expected, and they do not have to add that parameter to their dspace.cfg.
  15. Add appropriate WARN, INFO and DEBUG-level logging. Use the included Apache Log4J toolkit, in concert with the org.dspace.core.LogManager class to do this. See org.dspace.app.webui.servlet.DSpaceServlet for an example of how to do this.
  16. Retain backwards compatibility where possible. If there are questions/concerns about this, let us know. There are always exceptions.
  17. No Database schema changes unless absolutely necessary – this will mean upgrading would require effort. In this case, you also need to supply upgrade instructions and/or code to upgrade in existing installation. See Database schema changes below

...