Versions Compared

Key

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


Info

Are you a new developer looking for how to get started with DSpace?  Take a look at our New Developers Hub

Contributing to DSpace Software

Table of Contents
minLevel2

Excerpt

This page provides links to resources/notes on how you can contribute to DSpace

...

, whether you are a repository manager or a developer.

How to "Hack" the DSpace Community

This presentation was given at Open Repositories 2014 in Helsinki, Finland. It provides some tips on how and why you may wish to contribute to DSpace:

https://www.slideshare.net/tdonohue/hack-d-spacecommunityor14

Ways To Contribute and Participate

You do not have to just contribute code! There

Ways To Contribute and Participate

You do not have to just contribute code! There are other ways you can contribute:

  • Communicate - Use the Mailing Lists, this Wiki and the DSpace Chat Channel to Slack to communicate with the community
  • Congregate - Attend user groups, conferences, library events, developer meetings - and any other venue where DSpace users meet to share information and ideas. If you are a developer (or just interested in developer discussions), join the weekly DSpace Developer Meetings. If you are a repository manager, you may wish to volunteer for the DSpace Community Advisory Team or attend their meetings / online discussions.
  • Test - Download and try out beta releases; provide bug reports, experiences, feedback. Our DSpace Demo Server provides a place to test the latest and greatest version of DSpace. If you find a bug, report it via our Issue Tracker (your Wiki Account also works in the Issue Tracker)
  • Develop - Contribute bug fixes, new features, developer cycles. Contributing code is far easier than you might think! See the How To Contribute Code section below and the Code Contribution Guidelines for more details.
  • Translate - Translate the DSpace user interface into your language, using the new language pack feature of DSpace 1.3 and subsequent versions. See I18nSupport . See DSpace 7 Translation - Internationalization (i18n) - Localization (l10n) for more details.
  • Prototype - The best way to gain support for an idea is to build and share prototype code. If you'd like to share existing prototypes, see the Code Contribution Guidelines for more details.
  • Deploy - Share your experiences in deploying DSpaces in different organizations and situations, at large and small scales
  • Support - Become active members on the mailing lists, answer others' queries and help solve their technical problems
  • Experiment - Take the system for a spin, try it out with different types of content and scenarios; tell everyone what you find. Again, the DSpace Demo Server provides a place to experiment with the latest and greatest version of DSpace. (If you are running a larger, scalability test experiment on the Demo Server, please let us know by emailing the 'dspace-devel' mailing list
  • Donate content and metadata - To test and experiment with DSpace, free test collections unencumbered by restrictive usage rights are needed. Contact us via the mailing lists if you have content to donate for testing.
  • Request new features / Share ideas - Is there something that you really need out of DSpace or isn't working right? Request new features/improvements or report bugs via our Issue Tracker (your Wiki Account also works in the Issue Tracker). You can also vote on existing features, or add your own comments/suggestions. Both of these can help developers decide which issues are the most important to the community. See the below section on #How How To Contribute Ideas or Suggest New Features for more details.
  • Help Improve Documentation - Our DSpace Documentation is now managed directly via a new section of our Wiki: DSpace Documentation. Although normal Wiki users cannot edit that area of the Wiki, you can always add comments for additions/changes/suggestions. If you are interested in contributing more formally, volunteer to help via one of the mailing lists, and we can add you to our Documentation Team and provide you with access rights to edit/improve the Documentation directly.
  • Let us know if there's a way we can ease the process of contributing to DSpace
  • Don't be shy! Contributions don't have to be 100% polished or perfect; no one will think any the less of you. "Share early, share often" is a well-known open source mantra. The sooner you contribute something, the sooner others can help with the polishing, and you no longer have to maintain the customization against the evolving core DSpace platform, since it will be part of the platform!

...

  • This Wiki - Help making this Wiki a useful, concise and up-to-date information source by
    • supplying content
    • correcting content
    • deleting obsolete content
    • restructuring or otherwise improving content
  • The Mailing Lists- Take an active part in the discussion on DSpace.
    • share your thoughts about DSpace
    • ask questions
    • provide feedback
  • Official DSpace Documentation
    • add comments to existing docs, to help enhance the existing content
    • volunteer to help improve content or otherwise enhance it
  • DSpace Community Sandbox - A Open Source shared community environment for working on DSpace Modules and Prototypes.
    • Add your projects, modules, prototypes and code. Get in touch on the 'dspace-devel' mailing list, to get set up.
    GitHub - GitHub allows for collaborative & social code development! You can create your own GitHub account (it's free) to get started, and then "fork" our repository to start creating your own modifications (which can be submitted back to us via a GitHub "Pull Request"). For much more information see Development with Git.
  • Issue TrackerThe Feature/Issue Tracking System (JIRA) (uses same login as Wiki)
    • bug reports
    • feature requests
    • patches
    • add your vote to existing issues, or add your own comments
    • "watch" existing issues (you will receive an email any time a new comment is added or the issue status is updated)
    • volunteer to work on a feature/issue (just add a comment to that issue)

...

You should submit your idea or feature request to our Issue Tracking System (JIRA) (uses the same login as the WikiGitHub). However, before going through the process of submitting your ideas, it's always best to search the Issue Tracker to see if others have already requested this feature. If someone else has requested this feature, you can add your ideas as "comments", or "vote" for that feature to be added/implemented.

...

  • If you have a local developer who has time to work on this feature, let us know when you submit the issue (or add a comment later). If a local developer can already work on the issue/feature request, we may just need to approve the code (see Code Contribution Guidelines, for details on our DSpace Code Approval/Acceptance processes).
  • If you know of other institutions with similar needs, tell them to "vote" for your issue request in the Issue Tracker, or add their own use cases/support as comments. Also, if any of them have a developer with time to develop the feature, let us know!
  • If you are not sure if other institutions may have this need, you can promote your issue by sending an email to 'dspace-generalcommunity' or 'dspace-tech' mailing lists, asking for others' feedback. Hopefully, others can add comments/suggestions or even point us in the direction of an interested volunteer developer.
  • Even if we cannot find an interested developer in the community, the DSpace Committers will review your request and see if one or more Committers have time to devote towards the work. In some cases, a Committer may be able to convince their institution of the importance of the new feature (again, sample use cases are helpful to convince institutions of a feature's importance).

...

  1. The DSpace Committers - They review every feature request or bug report that comes into the system, often in weekly Developer Meetings. Note: Because of occasional backlogs, it is sometimes possible there may be a delay of several weeks/months before your request will get a formal review by the Committers. However, it is worth noting that your request will be immediately emailed to the 'dspace-devel' listserv, tickets' mailing list. where individual developers may provide immediate feedback before the formal review takes place. So, you may not need to wait that long for immediate response, or even for a developer to volunteer to work on that feature.
    • For more information on which issues the Committers are planning to review in their next meeting, see the currently posted agenda on the Developer Meetings page. Please Note: The Committers always review issues in the order they are received. However, as noted above, all new feature requests are emailed to 'dspace-devel', so if there is immediate interest amongst developers, you may find you will receive more immediate feedback and/or questions.
  2. The DSpace Community Advisory Team - They review and request additional feedback about any new feature request. This is a team of Repository Managers (or similar) who provide additional feedback to the Committers on new features.

...

If you plan to develop new features for DSpace, we recommend checking out forking and cloning our Source Code via Subversion (SVN)Github:

Here's a brief summary of what you'll find in SVN:

    • Stable versions (i.e. official releases) of DSpace can be found under Tags in SVN
    • The Unstable, latest code is on Trunk in SVN
    • When we are working on a new bug-fix-only release, that work happens out of the Branches in SVN

More information on using DSpace + GitHub is at: Development with Git

Info
titleDevelopment Hints
Info
titleDevelopment Hints/Tips

More hints/tips on developing with DSpace are available in the following locations:

...

  • Please be sure to share your plans with the DSpace community on the 'dspace-devel' list (or via one of the weekly Developer Meetings) before embarking on any sizable development effort. This will ensure you achieve your goals in a way that is consistent with the DSpace architecture and plans of the rest of the community. This will minimize the chances of a scenario where you have invested a large amount of time and effort into a body of code that does not fit in with the DSpace architecture or the consensus of the community, meaning that you need to spend further time refactoring your code or worse, 'forking' the code.
  • Develop incrementally; try and implement and contribute a basic form of your feature as soon as possible, rather than aiming to implement a complete and 'polished' solution. This will help ensure you're on the right track with regards to the rest of the DSpace community and platform. The sooner your code is part of the core code base, the less time you will have to spend 'chasing' the main code base, i.e. keeping your changes up-to-date with that core code base.
  • Obtain the DSpace code using SubversionGitHub. This will make code management much easier. It's very simple to do; see Developer Guidelines and Tools and Development with Git.
  • Read Code Contribution Guidelines to ensure you are following DSpace conventions. This page also gives you a sense of the DSpace Code Approval processes.

...

Do you have a developer (or two) with some extra time? Are you looking for ways that you can help the community and improve your local DSpace?

Please , take a look at our current listing of 'unassigned' New Feature requests or DSpace Improvements. Any help you can provide would be much appreciated!issues lists

Please, take a look at our current listing of "good first issue" tickets. Any help you can provide would be much appreciated!

(If none are currently listed, as on Slack or via email and we'll find a smaller ticket for you to start with) 

But, before you get started, please make sure to do the following:

  1. Add a comment to the Feature/Improvement you plan to work on, letting us know you will work on it.
  2. If you'd like more input on the feature/improvement, or potential requirements, post your questions and/or plans as a comment as well.
  3. Make sure your developer is following our Code Contribution Guidelines. If you have questions about any guidelines, or want some early feedback/suggestions from developers, please get in touch with us on the 'dspace-devel' listserv. We'd be glad to help make suggestions on ways in which to implement the new feature, and the earlier you get in touch, the earlier we can give you feedback on whether there's anything you may need to change before we can accept it as part of out-of-the-box DSpace. See also the Code Review Process on the Code Contribution Guidelines page.
  4. If you run into any "gray areas", ask questions! If it's a development issue, contact the Developers via the 'dspace-devel' listserv. If it's a policy issue or requires feedback from Repository Managers, get in touch with the DSpace Community Advisory Team, as they can help you query the community for feedback and/or provide you with their immediate opinions

Most of all: Thanks! The more individuals/institutions can give back to DSpace, the better the software is for everyone!

Submitting

...

Code Changes

See Code Contribution Guidelines for guidelines that all submissions must adhere to. That page also describes the general process for how a patch/contribution gets accepted into DSpace. The mechanics of creating a patch file are described in Developer Guidelines and Tools.

...

You will receive full acknowledgment for contributing the code; so we do encourage you to incorporate your enhancements to DSpace's functionality for everyone to benefit. You will also see benefits since you will neither have to re-incorporate the changes with new versions of DSpace, nor maintain this code solely yourself!

If your code contribution uses third-party products/tools, you should also double-check that they use a compatible open source license. Compatible licenses are listed at: Licensing of Contributions section of the Code Contribution Guidelines page.