11# Contribution Guidelines
22
3- Thank you for your interest in contributing! 🤝
3+ Thank you for your interest in contributing to DataJoint Elements!
44
5- To help keep everyone in alignment and coordinated in the community effort, we’ve
6- created this document. It serves as the contribution guideline that outlines how
7- open-source software development is to be conducted. Any software development that makes
8- reference to this document can be assumed to adopt the policies outlined below. We’ve
9- structured the guideline in a FAQ (frequently asked questions) format to make it easier
10- to digest. Feel free to review the questions below to determine any specific policy.
5+ These guidelines are designed to ensure smooth collaboration, high-quality
6+ contributions, and a welcoming environment for all contributors. Please take a moment to
7+ review this document in order to make the contribution process easy and effective for
8+ everyone involved.
119
1210The principal maintainer of DataJoint and associated tools is the DataJoint company. The
1311pronouns “we” and “us” in this guideline refer to the principal maintainers. We invite
1412reviews and contributions of the open-source software. We compiled these guidelines to
1513make this work clear and efficient.
1614
17- ## Feedback
15+ ## How to Contribute
1816
19- DataJoint APIs, DataJoint Web GUIs, and DataJoint Elements are supported by NIH grant
20- U24 NS116470 for disseminating open-source software for neuroscience research. Your
21- feedback is essential for continued funding. Your feedback also helps shape the
22- technology development roadmap for the DataJoint ecosystem. Please tell us about your
23- projects by filling out the [ DataJoint Census] ( https://community.datajoint.io ) .
17+ ### Feedback and Communication
2418
25- ## 1) Which issue should I contribute towards?
19+ Engage with the community through GitHub Issues and PR discussions.
2620
27- There are three primary things to consider when looking to contribute .
21+ Use inclusive and professional language .
2822
29- ** Availability: ** An indication of whether anyone is currently working on a fix for the
30- given issue. Availability is indicated by who is ` assigned ` . Issues that are
31- ` unassigned ` mean that there is no one yet working on resolving the issue and the issue
32- is available for someone to work on. If an issue has been assigned, then any additional
33- work on that issue should be coordinated with the assignee .
23+ For general questions or ideas, discussions and live debugging support, please join
24+ [ DataJoint Slack channel ] ( https://join.slack.com/t/datajoint/shared_invite/enQtMjkwNjQxMjI5MDk0LTQ3ZjFiZmNmNGVkYWFkYjgwYjdhNTBlZTBmMWEyZDc2NzZlYTBjOTNmYzYwOWRmOGFmN2MyYzU0OWQ0MWZiYTE )
25+ or [ other community forums ] ( https://stackoverflow.com/questions/tagged/datajoint ) , but
26+ direct technical contributions should stay in GitHub. Response times may vary depending
27+ on maintainer availability .
3428
35- ** Specification:** In order for issues to be properly addressed, the requirements of
36- satisfying and closing the issue should be clear. If it is not, a label will be added as
37- ` unspecified ` . This could be due to more debug info being necessary, more details on
38- intended behavior, or perhaps that further discussion is required to determine a good
39- solution. Feel free to help us arrive at a proper specification.
29+ ### Reporting Issues
4030
41- ** Priority:** As a community, we work on a concerted effort to bring about the
42- realization of the milestones. We utilize milestones as a planning tool to help focus a
43- group of changes around a release. To determine the priority of issues, simply have a
44- look at the next milestone that is expected to arrive. Therefore, each milestone
45- following this can be understood as lower in priority respectively. Bear in mind that
46- much like a hurricane forecast, the execution plan is much more likely to be accurate
47- the closer to today’s date as opposed to milestones further out. Extremely low priority
48- issues are assigned to the ` Backburner ` milestone. Since ` Backburner ` does not have a
49- target date, this indicates that its issues may be deferred indefinitely. Occasionally
50- the maintainers will move issues from ` Backburner ` as it makes sense to address them
51- within a release. Also, issues ` unassigned ` to a milestone can be understood as new
52- issues which have not been triaged.
31+ Use ` GitHub Issues ` to report bugs or request features. Clearly describe the issue,
32+ including:
5333
54- After considering the above, you may comment on the issue you’d like to help fix and a maintainer will assign it to you.
34+ - Steps to reproduce (if applicable).
35+ - Expected and actual outcomes.
36+ - Any relevant error messages, logs, or screenshots.
37+ - Include environment details (e.g., OS, library versions) to speed up troubleshooting.
5538
56- ## 2) What is the proper etiquette for proposing changes as contribution?
39+ Check existing issues to avoid duplicates.
5740
58- What is generally expected from new contributions are the following:
41+ ### Proposing Features/Changes
5942
60- Any proposed contributor changes should be introduced in the form of a pull request (PR)
61- from their fork.
43+ Before significant contributions, open a ` GitHub Issue ` to discuss your proposal. Please
44+ include:
6245
63- Proper branch target specified. The following are the generally the available branches
64- that can be targeted:
46+ - A clear problem statement.
47+ - Proposed solution or feature details.
48+ - Relevant examples or use cases.
6549
66- - ` main ` or ` master ` : Represents the single source of truth and the latest in completed development.
50+ ### Submitting Pull Requests (PRs)
6751
68- - ` pre ` : Represents the source at the point of the last stable release.
52+ 1 . Fork the repository and clone it to your local machine.
53+ 2 . Create a descriptive branch name, e.g., ` fix/typo-docs ` or ` feature/add-logging ` .
54+ 3 . Follow [ Conventional Commits] ( https://www.conventionalcommits.org/en/v1.0.0/ ) : Use
55+ commit messages following the commit types for versioning:
6956
70- For larger more involved changes, a maintainer may determine it best to create a
71- feature-specific branch and adjust the PR accordingly.
57+ - ` fix ` : Bug fixes (PATCH in Semantic Versioning).
58+ - ` feat ` : New features (MINOR in Semantic Versioning).
59+ - ` docs ` : Documentation updates.
60+ - ` Breaking changes ` : Use ! after the type or add BREAKING CHANGE in the commit footer.
7261
73- A summary description that describes the overall intent behind the PR.
62+ - ` Example: fix(auth): resolve token expiration bug. `
7463
75- Proper links to the issue(s) that the PR serves to resolve.
64+ 4 . Reference related issue(s) in your PR description (e.g., Closes #123 ).
65+ 5 . Cover new functionality or bug fixes with appropriate tests. Ensure all tests pass
66+ before submission. Typically as it relates to tests, this means:
67+ 1 . No syntax errors
68+ 2 . No integration errors
69+ 3 . No style errors e.g. PEP8, etc.
70+ 4 . Similar or better code coverage
71+ 6 . Additional documentation to reflect new feature or behavior introduced.
72+ 7 . Provide a detailed PR description explaining the changes and their impact.
73+ 8 . Submit the PR for review. Maintainers will also ensure that PR’s have the appropriate
74+ assignment for reviewer.
7675
77- Newly introduced changes must pass any required checks. Typically as it relates to tests, this means:
78-
79- 1 . No syntax errors
80- 1 . No integration errors
81- 1 . No style errors e.g. PEP8, etc.
82- 1 . Similar or better code coverage
83-
84- Additional documentation to reflect new feature or behavior introduced.
85-
86- Necessary updates to the changelog following [ Keep a Changelog] ( https://keepachangelog.com/en/1.0.0/ )
87- convention.
88-
89- A contributor should not approve or merge their own PR.
76+ A contributor should not approve or merge their own PR. A maintainer will review and
77+ approve the PR.
9078
9179Reviewer suggestions or feedback should not be directly committed to a branch on a
9280contributor’s fork. A less intrusive way to collaborate would be for the reviewer to PR
9381to the contributor’s fork/branch that is associated with the main PR currently in
9482review.
9583
96- Maintainers will also ensure that PR’s have the appropriate assignment for reviewer, milestone, and project.
84+ ### Code Reviews
9785
98- ## 3) How can I track the progress of an issue that has been assigned?
86+ Expect constructive feedback from maintainers. Maintainers will review your PR and
87+ suggest changes or improvements. Be responsive to feedback and iterate as needed.
88+ Reviews focus on code quality and adherence to standards, and documentation and test
89+ coverage. Once approved, the PR will be merged.
9990
100- Since milestones represent the development plan, projects represent the actual
101- execution. Projects are typically fixed-time sprints (1-2 weeks). A ‘workable’ number of
102- issues that have been assigned to developers and assigned to the next milestone are
103- selected and tracked in each project to provide greater granularity in the week-to-week
104- progress. Automation is included observing the ` Automated kanban with reviews ` template.
105- Maintainers will adjust the project assignment to reflect the order in which to resolve
106- the milestone issues.
91+ ## Releases
10792
108- ## 4) What is the release process? How do I know when my merged contribution will officially make it into a release?
109-
110- Releases follow the standard definition of [ semantic versioning] ( https://semver.org/spec/v2.0.0.html ) .
111- Meaning:
93+ Releases follow the standard definition of
94+ [ semantic versioning] ( https://semver.org/spec/v2.0.0.html ) . Meaning:
11295
11396` MAJOR ` . ` MINOR ` . ` PATCH `
11497
@@ -118,53 +101,32 @@ Meaning:
118101
119102- ` PATCH ` version when you make backwards compatible bug fixes.
120103
121- Each release requires tagging the commit appropriately and is then issued in the normal
122- medium for release e.g. PyPi, NPM, YARN, GitHub Release, etc.
123-
124- Minor releases are triggered when all the issues assigned to a milestone are resolved
125- and closed. Patch releases are triggered periodically from ` main ` or ` master ` after a
126- reasonable number of PR merges have come in.
127-
128- ## 5) I am not yet too comfortable contributing but would like to engage the community. What is the policy on community engagement?
129-
130- In order to follow the appropriate process and setting, please reference the following flow for your desired mode of engagement:
131-
132- ### 5a) Generally, how do I perform __________ ?
133-
134- If the documentation does not provide clear enough instruction, please see StackOverflow
135- posts related to the [ datajoint] ( https://stackoverflow.com/questions/tagged/datajoint )
136- tag or ask a new question tagging it appropriately. You may refer to our
137- [ datajoint tag wiki] ( https://stackoverflow.com/tags/datajoint/info )
138- for more details on its proper use.
139-
140- ### 5b) I just encountered this error, how can I resolve it?
141-
142- Please see StackOverflow posts related to the
143- [ datajoint] ( https://stackoverflow.com/questions/tagged/datajoint ) tag or ask a new
144- question tagging it appropriately. You may refer to our
145- [ datajoint tag wiki] ( https://stackoverflow.com/tags/datajoint/info ) for more details on
146- its proper use.
147-
148- ### 5c) I just encountered this error and I am sure it is a bug, how do I report it?
149-
150- Please file it under the issue tracker associated with the open-source software.
104+ Each release requires tagging the commit appropriately and is then issued following the
105+ GitHub automated semantic release. The release and Changelog will be generated
106+ automatically after the PR is merged.
151107
152- ### 5d) I have an idea or new feature request, how do I submit it?
108+ ## Community Engagement
153109
154- Please file it under the issue tracker associated with the open-source software.
110+ - For resolving bugs, errors, or debugging issues, please submit it through ** GitHub
111+ Issues** .
112+ - For live debugging, urgent help, or broader discussions, join the
113+ [ DataJoint Slack] ( https://join.slack.com/t/datajoint/shared_invite/enQtMjkwNjQxMjI5MDk0LTQ3ZjFiZmNmNGVkYWFkYjgwYjdhNTBlZTBmMWEyZDc2NzZlYTBjOTNmYzYwOWRmOGFmN2MyYzU0OWQ0MWZiYTE ) .
114+ Keep in mind maintainers’ availability may be limited.
115+ - For feature requests, directly in the GitHub Issue Tracker of the respective
116+ repository Provide sufficient details to facilitate discussion and prioritization.
155117
156- ### 5e) I am curious why the maintainers choose to __________ ? i.e. questions that are ‘opinionated’ in nature with answers that some might disagree.
118+ ## Prerequisites
157119
158- Please join the community on the
159- [ DataJoint Slack] ( https://join.slack.com/t/datajoint/shared_invite/enQtMjkwNjQxMjI5MDk0LTQ3ZjFiZmNmNGVkYWFkYjgwYjdhNTBlZTBmMWEyZDc2NzZlYTBjOTNmYzYwOWRmOGFmN2MyYzU0OWQ0MWZiYTE )
160- and ask on the most relevant channel. There, you may engage directly with the maintainers for proper discourse.
120+ - Familiarize yourself with the project documentation and guidelines.
121+ - Install necessary tools and dependencies listed in the repository's ` README ` .
161122
162- ### 5f) What is the timeline or roadmap for the release of certain supported features?
123+ ## Contribution Acknowledgment
163124
164- Please refer to milestones and projects associated with the open-source software.
125+ We deeply appreciate every contribution! By adhering to these guidelines, you help
126+ maintain the quality, usability, and success of DataJoint Elements.
165127
166- ### 5g) I need urgent help best suited for live debugging, how can I reach out directly?
128+ For any questions, feel free to reach out via GitHub Issues, our
129+ [ community Slack] ( https://join.slack.com/t/datajoint/shared_invite/enQtMjkwNjQxMjI5MDk0LTQ3ZjFiZmNmNGVkYWFkYjgwYjdhNTBlZTBmMWEyZDc2NzZlYTBjOTNmYzYwOWRmOGFmN2MyYzU0OWQ0MWZiYTE )
130+ 167131
168- Please join the community on the
169- [ DataJoint Slack] ( https://join.slack.com/t/datajoint/shared_invite/enQtMjkwNjQxMjI5MDk0LTQ3ZjFiZmNmNGVkYWFkYjgwYjdhNTBlZTBmMWEyZDc2NzZlYTBjOTNmYzYwOWRmOGFmN2MyYzU0OWQ0MWZiYTE )
170- and ask on the most relevant channel. Please bear in mind that as open-source community software, availability of the maintainers might be limited.
132+ Thank you for your contributions!
0 commit comments