General Overview
Participating in the community
ArchivesSpace is an opensource program and is released under the Educational Community License, version 2.0 (http://opensource.org/licenses/ecl2.php).
There are many ways to contribute to ArchivesSpace, including updating and writing documentation, writing code, and participating in testing. If you'd like to contribute to ArchivesSpace, then look at our wiki pages: {+}https://archivesspace.atlassian.net/wiki/spaces/ADC+ and our development catalog: https://archivesspace.atlassian.net/issues/?filter=13630.
The technical documentation can be found on the ArchivesSpace website at {+}http://archivesspace.org/application/technical-documentation/+ and http://archivesspace.github.io/archivesspace/.
Get a copy of the latest master branch from {+}https://github.com/archivesspace/archivesspace+.
Join the "users group" and "core committers" mailing lists. The users group list, Archivesspace_Users_Group@lyralists.lyrasis.org, is where almost all user discussion takes place. The core committers group list, Archivesspace_Core_Group@lyralists.lyrasis.org, is for the core committers. All development questions should go there, though you might want to check the list archives first.
Contributors
Code approval
- Share Early, Share Often!
The overriding mantra is share early, share often. Here are a few things to consider before you begin working on your code:
- Please be sure to share your plans with the ArchivesSpace community on the ArchivesSpace users list or via one of the monthly Core Committers' Meetings before embarking on any sizable development effort. This will ensure you achieve your goals in a way that is consistent with the ArchivesSpace architecture and plans of the rest of the community. It 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 ArchivesSpace architecture or the consensus of the community.
- Develop incrementally; try to 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 ArchivesSpace 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 or keeping your changes up-to-date with that core code base.
- Obtain the ArchivesSpace code using GitHub. This will make code management much easier. You can either clone or fork the ArchivesSpace Github repository.
- Read the Code Contribution Guidelines in this document to ensure you are following ArchivesSpace conventions. This will ensure your code is more likely to be immediately accepted as part of out-of-the-box ArchivesSpace.
- Ensure that any third-party tools/libraries that you plan to utilize are released under compatible open source licenses.
- For Larger Initiatives/Codebases: If you are building out a much larger project, we highly recommend notifying the community of the work early on via an email to both the Google Group and Users Group lists. This can help find collaborators or get early feedback. We also recommend you develop your project in GitHub, as it provides easier ways to review/collaborate with other developers.
- Make your code available (preferably in GitHub) and create a ticket in our JIRA repository.
Once your code is ready, you must make your code available to the ArchivesSpace Core Committers Group for review. The easiest way for us to review your code is by putting your code into GitHub and then submitting a "Pull Request" to our GitHub repository.
You must also create a new ticket in our ArchivesSpace JIRA Repository. This ensures that the ArchivesSpace Program Team and Core Committers are notified of your contribution, and JIRA provides a place for us to comment on the work or make suggestions for improvements.
- Code Review Process
Once the code is made available, the Core Committers Group will take time to review the work and provide feedback/comments. Code must be reviewed by at least one other core committer from another organization before it can be merged.
Usually, one (or more) core committers who are interested in this work will contact you and discuss any feedback they have, and whether or not there would need to be some general changes before we could accept it. Some patches/features are readily accepted (because they are stable and look good), others may require more work (if there are concerns or issues that Core Committers notice).
The timeframe of a code review will vary, based on how much time the Core Committers have. Smaller changes may be reviewed within days, while larger changes/features may take many weeks to do a full review. All Core Committers are volunteers and only have a small amount of time to provide to the program in a given week. We will make every effort to get back to you with feedback within a few weeks. But, if you haven't heard anything, feel free to ask!
- Reworking Code (if necessary) & Next Steps
After the code review & feedback, interested Core Committers may help you to rework the code (if needed). They'll also provide you with next steps on getting the code into ArchivesSpace. If it can be accepted immediately, it will be. If not, we'll try to help figure out the best route forward.
How you can help speed up the process
As our Core Committers are all volunteers, they don't always have the time to rework code changes for you. If you want your code change accepted in a timely manner, please offer to make the changes yourself (otherwise your patch suggestion may wait in a "holding queue" until someone has enough time to work on any necessary fixes).
If you are unsure of next steps, please let us know by adding a comment to your issue in JIRA. Communication is absolutely necessary to ensure that we can help you rework anything that needs reworking. If we don't hear from you, we'll assume you are hard at work. So, if you've run into issues, please let us know! If, locally, you don't have the time or expertise to do the rework that is necessary, also let us know. We can try to locate a community developer to help out, and/or ask both the Core Committers Group and the ArchivesSpace Program Team if they know of any interested developers with time to spare.
- Acceptance
Once your code is accepted, it will be released in the next version of ArchivesSpace software. It is time to celebrate, as your name will be added to the prestigious list of ArchivesSpace Contributors.