Skip to content

Commit a1d7bd5

Browse files
author
Drew Yang
committed
docs: 📝 improve contribute.md | fix markdownlint config
1 parent d4632c0 commit a1d7bd5

File tree

2 files changed

+113
-75
lines changed

2 files changed

+113
-75
lines changed

‎.markdownlint.yaml‎

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,24 @@
11
# https://github.com/DavidAnson/markdownlint
22
# https://github.com/DavidAnson/markdownlint/blob/main/doc/Rules.md
3+
MD007: false # Unordered list indentation
34
MD009: false # permit trailing spaces
4-
MD013:
5-
line_length: "88" # Line length limits
5+
MD013:
6+
# previously we defined line_length to 88 which is better for python
7+
# but not for markdown
8+
line_length:
9+
- strict: false
610
tables: false # disable for tables
711
headings: false # disable for headings
12+
MD029: false # Ordered list item prefix
813
MD030: false # Number of spaces after a list
14+
MD032: false # Lists should be surrounded by blank lines
915
MD033: # HTML elements allowed
10-
allowed_elements:
16+
allowed_elements:
1117
- "div"
1218
- "span"
1319
- "a"
1420
- "br"
15-
- "sup"
21+
- "sup"
1622
- "figure"
1723
MD034: false # Bare URLs OK
1824
MD031: false # Spacing w/code blocks. Conflicts with `??? Note` and code tab styling

‎src/about/contribute.md‎

Lines changed: 103 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -1,77 +1,114 @@
11
# Contribution Guidelines
22

3-
Thank you for your interest in contributing to DataJoint Elements!
3+
Thank you for your interest in contributing to DataJoint open-source software!
44

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.
5+
These guidelines are designed to ensure smooth collaboration, high-quality contributions, and a welcoming environment for all contributors. Please take a moment to review this document in order to make the contribution process easy and effective for everyone involved.
96

10-
The principal maintainer of DataJoint and associated tools is the DataJoint company. The
11-
pronouns “we” and “us” in this guideline refer to the principal maintainers. We invite
12-
reviews and contributions of the open-source software. We compiled these guidelines to
13-
make this work clear and efficient.
7+
The principal maintainer of DataJoint and associated tools is the DataJoint company. The pronouns “we” and “us” in this guideline refer to the principal maintainers. We invite reviews and contributions of the open-source software. We compiled these guidelines to make this work clear and efficient.
8+
9+
## Table of Contents
10+
- [Community Engagement](#community-engagement)
11+
- [How to Contribute](#how-to-contribute)
12+
- [Project Lists](#project-lists)
13+
- [Prerequisites](#prerequisites)
14+
- [Reporting Bugs](#reporting-bugs)
15+
- [Proposing Features or Enhancements](#proposing-features-or-enhancements)
16+
- [Submitting Pull Requests (PRs)](#submitting-pull-requests-prs)
17+
- [Code Reviews](#code-reviews)
18+
- [Releases](#releases)
19+
- [Contribution Acknowledgment](#contribution-acknowledgment)
20+
21+
22+
## Community Engagement
23+
24+
For general questions, ideas, discussions or live debugging sessions, please join [DataJoint Slack](https://join.slack.com/t/datajoint/shared_invite/enQtMjkwNjQxMjI5MDk0LTQ3ZjFiZmNmNGVkYWFkYjgwYjdhNTBlZTBmMWEyZDc2NzZlYTBjOTNmYzYwOWRmOGFmN2MyYzU0OWQ0MWZiYTE) or [Stack Overflow](https://stackoverflow.com/questions/tagged/datajoint), but for direct technical issues should stay in `Github Issue` in the respective project's repository. Response times may vary depending on maintainer availability.
25+
26+
- For resolving bugs, errors, or general debugging help, please submit it through `Github Issue` in the respective repository.
27+
- For live debugging, urgent help, or broader discussions, join the [DataJoint Slack](https://join.slack.com/t/datajoint/shared_invite/enQtMjkwNjQxMjI5MDk0LTQ3ZjFiZmNmNGVkYWFkYjgwYjdhNTBlZTBmMWEyZDc2NzZlYTBjOTNmYzYwOWRmOGFmN2MyYzU0OWQ0MWZiYTE).
28+
- For feature requests, please open an issue directly in the `Github Issue` of the respective repository providing sufficient details to facilitate discussion and prioritization.
29+
30+
[Back to Top](#table-of-contents)
1431

1532
## How to Contribute
1633

17-
### Feedback and Communication
34+
### Project Lists
35+
36+
Actively maintained projects by DataJoint:
37+
38+
- DataJoint Enhancement Proposal - in progress
39+
- [DataJoint Specs](https://github.com/datajoint/datajoint-specs)
40+
- [DataJoint Docs](https://github.com/datajoint/datajoint-docs)
41+
- It is the landing page of DataJoint documentation.
42+
- Each project has its own documentation in its repository.
43+
- Please help us to improve our documetations, it's the easiest but most impactful way to contribute!
44+
- [DataJoint Python](https://github.com/datajoint/datajoint-python)
45+
- [DataJoint Elements](https://github.com/orgs/datajoint/repositories?q=element)
46+
- [datajoint/djlabhub-docker](https://github.com/datajoint/djlabhub-docker)
47+
- [datajoint/nginx-docker](https://github.com/datajoint/nginx-docker)
1848

19-
Engage with the community through GitHub Issues and PR discussions.
49+
Archived projects by DataJoint, but still open for community contributions:
2050

21-
Use inclusive and professional language.
51+
- [Datajoint MATLAB](https://github.com/datajoint/datajoint-matlab)
52+
- [DataJoint Pharus](https://github.com/datajoint/pharus)
53+
- [DataJoint SciViz](https://github.com/datajoint/sci-viz)
54+
- [DataJoint LabBook](https://github.com/datajoint/datajoint-labbook)
55+
- Most of [Docker images](https://github.com/orgs/datajoint/repositories?q=docker) expect the ones listed above
56+
57+
### Prerequisites
58+
59+
- Familiarize yourself with the project documentation and guidelines.
60+
- Start with reading the repository's `README.md` and `CONTRIBUTION.md`. You should expect to find the following instructions for the respective project:
61+
- Installation instructions.
62+
- Development environment setup.
63+
- Testing instructions.
2264

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.
65+
> Please open an issue in the respective repository if any of those instructions in the documentations or `READMD.md` are unclear to you. Contributions to documentations are equivalently important to any code for the community, please help us to resolve any confusions in documentations.
2866
29-
### Reporting Issues
67+
### Reporting Bugs
3068

31-
Use `GitHub Issues` to report bugs or request features. Clearly describe the issue,
32-
including:
69+
Before you open up a new issue, please check `Github Issue` to see if there are any related open/closed issues or open/closed PRs to avoid duplicates. If not, please open a new issue with clearly description of your bug, including:
3370

3471
- Steps to reproduce (if applicable).
3572
- Expected and actual outcomes.
3673
- Any relevant error messages, logs, or screenshots.
37-
- Include environment details (e.g., OS, library versions) to speed up troubleshooting.
74+
- Include environment details (e.g., OS, pip, conda dependencies) to speed up troubleshooting.
3875

39-
Check existing issues to avoid duplicates.
76+
### Proposing Features or Enhancements
4077

41-
### Proposing Features/Changes
42-
43-
Before significant contributions, open a `GitHub Issue` to discuss your proposal. Please
44-
include:
78+
Before starting your significant work, open a `Github Issue` to discuss your proposal first. Please include:
4579

4680
- A clear problem statement.
4781
- Proposed solution or feature details.
4882
- Relevant examples or use cases.
4983

50-
### Submitting Pull Requests (PRs)
51-
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:
84+
> There will be a repository for DataJoint Enhancement Proposal to centralize all proposals, it is currently in progress.
5685
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.
61-
62-
- `Example: fix(auth): resolve token expiration bug.`
86+
### Submitting Pull Requests (PRs)
6387

88+
> In DataJoint, we use **[Forking Workflow](https://www.atlassian.com/git/tutorials/comparing-workflows/forking-workflow)** to manage contributions to keep the main fork's branch management clean.
89+
90+
1. Fork the repository to your own Github account and clone it to your local machine.
91+
- Please remember to always sync your fork's main branch with the DataJoint repository's main branch before starting your work.
92+
- In your own fork, we suggest you use [Feature Branch Workflow](https://www.atlassian.com/git/tutorials/comparing-workflows/feature-branch-workflow) to manage your branches in your own fork, just in case someone will work on multiple contributions at the same time.
93+
2. Create a descriptive feature/fix branch from your fork's main branch, e.g., `fix/typo-docs` or `feature/add-logging`.
94+
3. Optionally, but highly recommended to follow [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) to make commit messages easier to be searched and categorized: If you use VSCode, please install [Conventional Commits](https://marketplace.visualstudio.com/items?itemName=vivaxy.vscode-conventional-commits) extention, it will help you to edit your commit messages following the commit types for versioning:
95+
- `fix`: Bug fixes.
96+
- `feat`: New features.
97+
- `docs`: Documentation updates.
98+
- `Breaking changes`: Changes would break backward compatibility, may affect the existing users when they upgrade. Use ! after the type or add BREAKING CHANGE in the commit footer.
99+
- `chore`: Like the name, it is a chore.
100+
- Example, if you are not using the VSCode extension: `git commit -m "fix(auth): resolve token expiration bug."`
64101
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:
102+
5. Cover new functionality or bug fixes with appropriate tests. Ensure all tests pass before submission. Typically as it relates to tests, this means:
67103
1. No syntax errors
68104
2. No integration errors
69105
3. No style errors e.g. PEP8, etc.
70106
4. Similar or better code coverage
71-
6. Additional documentation to reflect new feature or behavior introduced.
107+
6. **Additional documentation** to reflect new feature or behavior introduced.
72108
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.
109+
8. Submit the PR for review. Maintainers will also ensure that PR’s have the appropriate assignment for reviewer.
110+
111+
### Code Reviews
75112

76113
A contributor should not approve or merge their own PR. A maintainer will review and
77114
approve the PR.
@@ -81,52 +118,47 @@ contributor’s fork. A less intrusive way to collaborate would be for the revie
81118
to the contributor’s fork/branch that is associated with the main PR currently in
82119
review.
83120

84-
### Code Reviews
121+
Expect constructive feedback from maintainers. Maintainers will review your PR and suggest changes or improvements. Be responsive to feedback and iterate as needed. Reviews focus on code quality and adherence to standards, and documentation and test coverage. Once approved, the PR will be merged.
85122

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.
123+
[Back to Top](#table-of-contents)
90124

91125
## Releases
92126

93127
Releases follow the standard definition of
94128
[semantic versioning](https://semver.org/spec/v2.0.0.html). Meaning:
95129

96-
`MAJOR` . `MINOR` . `PATCH`
130+
`MAJOR` . `MINOR` . `PATCH/MICRO`
97131

98-
- `MAJOR` version when you make incompatible API changes,
132+
- `MAJOR` version bump when breaking changes make backward incompatible.
99133

100-
- `MINOR` version when you add functionality in a backwards compatible manner, and
134+
- `MINOR` version bump when added functionalities is backward compatible.
101135

102-
- `PATCH` version when you make backwards compatible bug fixes.
136+
- `PATCH/MICRO` version when included bug fixes are backward compatible.
103137

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.
138+
> Backward Compatible means that the existing users can upgrade to the new version without any changes to their existing code.
107139
108-
## Community Engagement
140+
For DataJoint open-source projects, we have two ways of making a release at this moment since we are improving the release process, and we will eventually consolidate into one way:
109141

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.
142+
- Datajoint Python release, the future direction:
143+
- We use `Github Label` and [PR Labeler action](https://github.com/actions/labeler) to categorize each PR.
144+
- Then we use [Release Drafter](https://github.com/release-drafter/release-drafter) to manually trigger a Github Actions workflow to make a draft release.
145+
- Changelog will be provided by [Github Compare URL](https://github.com/datajoint/datajoint-python/compare/v0.14.2...v0.14.3) at the end of the release note.
146+
- Then we manually publish the draft release to trigger a release Github Actions workflow.
147+
- Others:
148+
- This process is very dependent on conventional commits and tagging.
149+
- It will be triggered by pushing a new tag to the repository.
150+
- It uses [python-semantic-release](https://python-semantic-release.readthedocs.io/en/latest/) to parse all the conventional commits for the release note and `CHANGELOG.md`.
117151

118-
## Prerequisites
152+
> We found the former resolver would work the best for our community since contributors are from different background, we do not want to require them to adopt conventional commits.
119153
120-
- Familiarize yourself with the project documentation and guidelines.
121-
- Install necessary tools and dependencies listed in the repository's `README`.
154+
[Back to Top](#table-of-contents)
122155

123156
## Contribution Acknowledgment
124157

125-
We deeply appreciate every contribution! By adhering to these guidelines, you help
126-
maintain the quality, usability, and success of DataJoint Elements.
158+
We deeply appreciate every contribution! By adhering to these guidelines, you help maintain the quality, usability, and success of any DataJoint open-source software.
127159

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-
or contact `[email protected]`.
160+
For any questions, feel free to reach out via `Github Issue` in the specific repository, our [Community Slack](https://join.slack.com/t/datajoint/shared_invite/enQtMjkwNjQxMjI5MDk0LTQ3ZjFiZmNmNGVkYWFkYjgwYjdhNTBlZTBmMWEyZDc2NzZlYTBjOTNmYzYwOWRmOGFmN2MyYzU0OWQ0MWZiYTE) or contact `[email protected]`.
131161

132162
Thank you for your contributions!
163+
164+
[Back to Top](#table-of-contents)

0 commit comments

Comments
 (0)