Thanks for your interest in this project. Contributions are welcome!
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in IETF BCP14 (RFC2119 & RFC8174)
First thing you need to do before contributing is to create an account with the Eclipse Foundation. Once your account is created, you will need to sign the Eclipse Contributor Agreement (ECA). Lastly, you will need to create a GitHub account if you do not already have one and then link your GitHub account to your Eclipse Foundation account.
Best way to get engaged and contribute are to:
-
Subscribe to the uprotocol-dev mailing list
-
Join the Eclipse-SDV Slack workspace and subscribe to the #uprotocol channel
-
Subscribe to the Eclipse-SDV Community Calendar
-
Attend our Weekly Zoom Meeting
-
Read project page
-
Checkout overview page
The uProtocol community meets regularly on Zoom calls covering different focus areas. Please refer to the Eclipse-SDV Community Calendar for details.
Join Zoom Meeting https://eclipse.zoom.us/j/87919934501?pwd=7CI4VuAIRNq4pstQbFtHhb8mM0XwQR.1 Meeting ID: 879 1993 4501 Passcode: 640538
The following section will elaborate on the best practices we (the contributor community) will apply to each repositories in the Eclipse-uProtocol project.
-
Projects that are intended to be used in production MUST adhere to BCPs listed below.
If the project is not intended to be used for production:
-
MUST clearly labeled in your repos README.adoc as
NOT INTENDED FOR PRODUCTION USE
Code reviews MUST be performed by at least one committer before a pull request can be merged.
Reviewers SHOULD make suggestions in lieu of comments, for issues found in a pull request following GitHub’s guidelines.
Below are the requirements for a commit (or set of commits) to be merged into the main branch:
-
Commit messages and pull request descriptions, MUST contain a well described summary description followed by detailed description of the change
-
New features/functions SHOULD have an associated GitHub issue linked in the pull request
-
Developer facing API MUST have full descriptive documentation
-
Non-developer facing APIs, SHOULD have full descriptive documentation
-
SHOULD have 100% test coverage
-
MUST update the projects README.adoc if any of the instructions to build or use the software has changed
-
Pull Requests MUST NOT be merged till all reviewer’s comments and/or suggestions have been acknowledged by the commit author or reviewer, either by accepting, rejecting (with explanation), or filing a separate issue for unresolved comments and/or suggestions.
The following are BCPs for newly created repositories under the Eclipse-uProtocol project:
-
GitHub actions MUST be used to create CI/CD workflows for validating build, test, and documentation for every pull request for main branch
-
"Branch Protection Rules" MUST be enabled with the minimal settings below (replace
verify-pr
for the target that runs the build, test, and documentation workflows):
branch_protection_rules: [
orgs.newBranchProtectionRule('main') {
required_approving_review_count: 1,
required_status_checks+: [
"verify-pr"
],
},
],
-
Release MUST follow http://semver.org requirements and begin with
v0.1.0-dev
. Each subsequent release will have theMAJOR
,MINOR
, andPATCH
number incremented following semver requirements -
Initial commit MUST include the following legal documents:
-
LICENSE
MUST be Apache 2.0 or Eclipse Public License 2.0 (see why below) -
CONTRIBUTING.adoc
MUST link to https://github.com/eclipse-uprotocol/up-spec/CONTRIBUTING.adoc -
CODE_OF_CONDUCT.adoc
MUST link to https://github.com/eclipse-uprotocol/up-spec/CODE_OF_CONDUCT.adoc -
README.adoc
MUST Clearly document how to build and use your software -
SECURITY.adoc
MUST link to https://github.com/eclipse-uprotocol/.github/SECURITY.adoc
-
-
SHOULD NOT contain
CONTRIBUTORS.adoc
as the information can be fetched from the git history
If NOTICE
information cannot be autogenerated:
* MUST include NOTICE.adoc
-
SHOULD have a software testing framework (tools) that can measure test code coverage (ex. jacoco, gtest, ctest, etc…)
The Apache 2.0 License and the MIT License are both popular open-source licenses, but they have some differences in terms of their requirements and provisions. Here are the key distinctions:
-
Scope: The Apache 2.0 License is more comprehensive and covers patents, trademarks, and attribution requirements, while the MIT License is simpler and primarily focuses on copyright.
-
Patent Grant: The Apache 2.0 License includes a patent grant, which means that it provides explicit permission for users to use any patents held by the licensor. The MIT License does not include a specific patent grant.
-
Redistribution: Both licenses allow for the redistribution of the software, but the Apache 2.0 License includes specific requirements for preserving notices, disclaimers, and license terms in derivative works.
-
Copyleft: The MIT License is considered a permissive license, allowing for more flexibility in how the software is used and integrated into other projects. The Apache 2.0 License has some copyleft provisions, requiring modifications and derivative works to be licensed under the same license.
-
Compatibility: Both licenses are generally considered compatible with other open-source licenses. However, the Apache 2.0 License is more explicitly compatible with the GNU General Public License (GPL) version 3, while the MIT License is compatible with a wider range of licenses.
Contact the project developers via the project’s "dev" list or on slack.