Overview
The Ed-Fi Alliance welcomes code contributions from the community. This documentation provides guidelines for making contributions. Although the details and examples that follow are focused on the Ed-Fi ODS / API, the same principles and requirements are applicable to most Ed-Fi Alliance products.
In general, contributions will be released with the next scheduled product release. Exceptions include cases where contributions introduce breaking changes, in which case they are rolled into the next major version release, and cases where a timely change is needed for the current release (in which case the Ed-Fi Alliance will create a new hotfix/minor release with the appropriate change incorporated).
License Agreements
All publicly available Ed-Fi source code is governed by the Apache License, version 2.0. Accepted code contributions will in turn be shared with the community under the same terms.
In order to clarify the intellectual property license granted with contributions from any person or entity, the Alliance must have a Contributor License Agreement ("CLA") on file that has been signed by each Contributor, indicating agreement to the license terms. This license is for your protection as a Contributor as well as the protection of the Alliance and its users; it does not change your rights to use your own Contributions for any other purpose.
Contributors commit to the CLA via click-through agreement when submitting a pull request through GitHub.
For the full text of the agreement, see Ed-Fi Individual Contributor License Agreement in GitHub.
Note |
---|
Some AI coding assistants reproduce existing application code in violation of that code's license terms. One implication of the Ed-Fi Individual Contributor License Agreement is that such tools must not be used to help generate code for Ed-Fi software projects. The prime example is GitHub CoPilot, which should not be used. AI coding assistants that do give credit to the original source are allowed, so long as that original source does not use a "viral" license such as the GNU Public License (GPL), and so long as that source is credited in the appropriate NOTICES.md file. |
Planning and Executing a Code Contribution
Whether a student looking for real world software projects to support or a large multi-national corporation, and everything in between, there is room at the table for you.
Tracker Ticket
All code contributions must be linked to an Ed-Fi Tracker ticket; for features and bugs coming from the community, this means first creating a case in the Ed-Fi Community Hub. The support team will review that case and create a ticket in Ed-Fi Tracker if there isn't a similar ticket already.
Except for Tracker tickets labeled "up-for-grabs," it is a best practice to begin a discussion with the Product Owner and/or core development team before beginning to work on a ticket. Simply post a new Comment to begin the conversation, which will help uncover any architectural concerns and implications for other work already in progress. The conversation should include a tentative timeframe for completion so that the development team can plan appropriately for the review process.
Tip |
---|
If you have a suggested / requested change that is not in already in an Ed-Fi Tracker ticket, then please create a new support case. |
Existing Ticket
Interested in helping with an existing issue? Tickets with label "up-for-grabs" are immediately available without further discussion. Please assign to yourself. Here are some Tracker queries to help find these up-for-grab tickets:
At any given time there might not be any current tickets with this label.
Other queries will be made available after completion of the respective project's migration to the Apache license, which will also correspond with a loosening of permissions to those projects in Tracker.
As mentioned above, please begin a conversation on other tickets before beginning development work.
New Feature or Improvement
See How To: Get Technical Help or Provide Feedback and How To: Submit a Feature Request. Please be sure to search carefully for existing tickets that might already address the request.
New Bug
See How To: Get Technical Help or Provide Feedback. Please be sure to search carefully for existing tickets that might already the incident.
Development Workflow and Standards
In order to contribute code, please follow this development process:
- In the comments, ask to be assigned to be assigned to the Tracker ticket.
- Create a fork in GitHub.
References: Forking Workflow (external)
Note |
---|
Ed-Fi staff and contractors will be invited to join the appropriate organization on GitHub and will be granted write access to appropriate repositories. In those situations, creating a fork is not necessary. Please note that organization members must have Two-Factor Authentication (2FA) enabled, as of September 1, 2022. |
- Create a branch off of the repository's
main
branch. By convention, the Alliance uses the JIRA Issue ID as the branch name (e.g., ODS-3140). - References: Git Feature Branch Workflow (external); caveat: the Alliance uses the
main
branch for merges, not the master
branch as shown in this article
- Commit your changes and push your changes to GitHub. Keep commits granular and specific, and they must be signed. Multiple small commits are favored over a large commit. Do not include ticket numbers in the commit messages.
- References: Signing Git Commits
- Create a pull request against the