Versions Compared

Key

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

Table of Contents

Welcome!

If you are reading this document then you are interested in contributing to Islandora, and that's awesome! All contributions are welcome: use-cases, documentation, code, patches, bug reports, feature requests, etc. You do not need to be a programmer to speak up!

We also have an irc channel -- #islandora -- on freenode.net. Feel free to hang out there, ask questions, and help others out if you can.

Worfklows

Islandora Committers Calls happen every Thursday at 2PM EST. The meetings are generally held on Skype, and you can join the calls by sending a request to community@islandora.ca.

Improve Islandora Documentation

You can contribute documentation in two different ways. One way is to join the Documentation Interest Group. Another way is to open an issue. You will need a JIRA account to do this. If you don't have one, you can sign up here. Set the Issue Type to "Documentation".

Request a new feature (use cases)

To request a new feature you should open an issue. You will need a JIRA account to do this. If you don't have one, you can sign up here. Set the Issue Type to "New Feature".

In order to help us understand the feature request, it would be great if you could provide us with a use case:

Title (Goal)The title or goal of your use case
Primary ActorRepository architect, implementer, repository admin, user
ScopeThe scope of the project. Example: architecture, access
LevelThe priority the use case should be given; High, Medium, Low
StoryThis is a user story.

Examples:

  • Bullet
  • Listed
  • Examples should you want to provide them.

Remarks:

  • Bullet
  • Listed
  • Remarks should you want to provide them.

Report a bug

To report a bug you should open an issue that summarizes the bug. Set the Issue Type to "Bug".

In order to help us understand and fix the bug it would be great if you could provide us with:

  1. The steps to reproduce the bug. This includes information about e.g. the Islandora version you were using along with version of stack components.
  2. The expected behavior.
  3. The actual, incorrect behavior.

Feel free to search the issue queue for existing issues (aka tickets) that already describe the problem; if there is such a ticket please add your information as a comment.

If you want to provide a pull along with your bug report:

That is great! In this case please send us a pull request as described in section Create a pull request below.

Participate in a release

Islandora releases occur twice yearly, at the end of April and October. Two to three months before a release, a Call for Volunteers will be issued across Islandora communication channels (website, Twitter, listservs). The Release team consists of both developers and end-users who fix bugs, test fixes, verify improvements and new features; update documentation; and review README and LICENSE files. A Release VM is issued with each release so that testers can have a stable, easy-to-deploy environment in which to work.

To join an Islandora Release Team, sign up for one or more modules in any of the following roles:

  • Component Manager (Very familiar with module code; reviews and merges commits)
  • Tester (Tests JIRA tickets marked "Ready for test" and does a general workover of the module)
  • Documentor (Reviews and updates existing documentation or writes new documentation for new modules)
  • Auditor (Reviews and updates README and LICENSE files to ensure complaince with templates and standards)

Contribute code

Before you set out to contribute code you will need to have completed a Contributor License Agreement or be covered by a Corporate Contributor Licencse Agreement. The signed copy of the license agreement should be sent tocommunity@islandora.ca

If you are interested in contributing code to Islandora but do not know where to begin:

In this case you should browse open issues.

If you are contributing Drupal code, it must adhere to Drupal Coding Standards; Travis CI will check for this on pull requests.

Contributions to the Islandora codebase should be sent as GitHub pull requests. See section Create a pull requestbelow for details. If there is any problem with the pull request we can work through it using the commenting features of GitHub.

  • For small patches, feel free to submit pull requests directly for those patches.
  • For larger code contributions, please use the following process. The idea behind this process is to prevent any wasted work and catch design issues early on.

    1. Open an issue and assign it the label of "New Feature" or "Improvement", if a similar issue does not exist already. If a similar issue does exist, then you may consider participating in the work on the existing issue.
    2. Comment on the issue with your plan for implementing the issue. Explain what pieces of the codebase you are going to touch and how everything is going to fit together.
    3. Islandora committers will work with you on the design to make sure you are on the right track.
    4. Implement your issue, create a pull request (see below), and iterate from there.

Developer questions? We have a lot of excellent developer documentation that can be found here.

Issue / Topic Branches

All JIRA issues should be worked on in separate git branches. The branch name should be the same as the JIRA issue number, including all-caps, so ISLANDORA-153, ISLANDORA-118, etc.

Example: git checkout -b 7.x-ISLANDORA-977 or git checkout -b 7.x-1.4-ISLANDORA-977

Create a pull request

Take a look at Creating a pull request. In a nutshell you need to:

  1. Fork a given Islandora Foundation component repository at https://github.com/islandora to your personal GitHub account. See Fork a repo for detailed instructions.
  2. Commit any changes to your fork.
  3. Send a pull request to the Islandora GitHub repository that you forked in step 1. If your pull request is related to an existing JIRA issue -- for instance, because you reported a bug/issue earlier -- then prefix the title of your pull request with the corresponding issue number (e.g. ISLANDORA-123: ...). The branch name should also correspond to the JIRA issue number.

You may want to read Syncing a fork for instructions on how to keep your fork up to date with the latest changes of the upstream (official) islandora repository.

Community members who have push/merge permissions on a repository should never push directly to a repo, nor merge their own pull requests.

Release branch pull requests

The pull request process will roughly look like this:

  1. fork from Islandora repo if that has not already been done
  2. git remote add islandora git@github.com:Islandora/islandora_checksum.git
  3. git pull islandora 7.x
  4. Make changes, commit
  5. git push origin 7.x and issue a pull request on 7.x
  6. git fetch --all
  7. git checkout 7.x-1.4 if that does not work, git checkout islandora/7.x-1.4 then git checkout -b 7.x-1.4
  8. Make changes/cherry pick/copy changes from earlier, commit
  9. git push origin 7.x-1.4 and issue a pull request on 7.x-1.4

License agreements

The Islandora Foundation requires that contributors complete a Contributor License Agreement or be covered by aCorporate Contributor Licencse Agreement. The signed copy of the license agreement should be sent tocommunity@islandora.ca. This license is for your protection as a contributor as well as the protection of the Foundation and its users; it does not change your rights to use your own contributions for any other purpose.

There are many ways one can contribute to the Islandora community. The below is a guide to help you contribute back to the community; however, please don't feel that you are limited to the ways we list below. Let us know at community@islandora.ca if you like to contribute to the community in a way other than the ones listed below and we will assist you the best that we can.

If you have any questions, please contact us at community@islandora.ca and we'll get back to you as soon as we can.

Bugs

You found a bug in Islandora - now what? You can help us squash them by reporting these bugs through the JIRA Ticketing System.

If you think you have a patch ready to fix the bug, please refer to the Code section above for coding standards and how to submit your patch.

Testing

We always need testers for new releases and modules! Contact community@islandora.ca for more information about current testing schedules.

Metadata Forms

If you have a metadata form that you think others would like to use, please visit the Forms page to see what already has been submitted. The instructions for sharing a form to the community is in the Github repository.

Documentation 

Documentation is what makes the Islandora world run. There are several ways you can help contribute to documentation:

Support

Like to solve problems on the fly? Or maybe you'd like to help others in their problem solving? Either way, the community has two public Google Groups for you to share your knowledge: Developers Google Group and the General Islandora Google Group.

Training

Training is an essential part of the community in terms of ensuring members get the most out of Islandora. You can share training materials through the General Islandora Google Group.

Code

Code contributions can come in several flavors, from small script and patches to new modules and solutions packs. The code for Islandora can be found in our GitHub repositories . Please refer to the Coding Standards for Islandora Section on the Islandora Community page for coding and documentation standards that the community uses for code contributions. Additional documentation for developers can be found in the Islandora Github repository.

 

For those of you who are curious on the high level view of how code contributions work, here is a chart from the Islandora Developers page (which also contains general information for developers):

 

Image Removed