Contributing to the AllenSDK
February 17, 2026 ยท View on GitHub
Project status and contribution scope (maintenance mode)
AllenSDK is in selective maintenance mode.
What this means for contributors:
- Pull requests for bug fixes, security fixes, documentation improvements, tests, and targeted compatibility fixes are actively welcome.
- Community contributions are welcome, including feature PRs.
- Maintainers are not planning to develop new features.
- Compatibility updates are best-effort and may be declined if they require major refactoring, ecosystem migrations, or substantial ongoing maintenance.
- Some issues/PRs may be closed as not planned based on maintainer capacity and project scope.
Before starting large changes, please open an issue to discuss scope and maintenance impact.
Contributing
Thank you for your interest in contributing! There are a few ways you can contribute to the AllenSDK project:
- Answering User Questions
- Adding test coverage
- Add Example Notebooks
- Reporting Bugs
- Requesting features
- Contributing Code
How contributions are prioritized
Changes most likely to be accepted:
- Small and low-risk
- Backward compatible
- Well-tested
- Low long-term maintenance cost
Changes that may be declined:
- Major rewrites or architectural changes
- Supporting additional platforms/toolchains not currently supported
- Ongoing maintenance commitments beyond current maintainer capacity
Answering User Questions
A great way to contribute to the AllenSDK is to help answer user questions on the forums or StackOverflow. Assisting new users is not only a valuable service for the community, but also contributes to a wider culture of scientific collaboration.
Bug Reports and Feature Requests
Before reporting a bug or requesting a feature, use Github's issue search to see if anyone else has already done so. Don't reopen an issue tagged with wontfix without getting consensus
from maintainers in the comment thread.
Reporting Bugs
If there is no existing issue, create a new one. You should include:
- A brief, descriptive title
- A clear description of the problem
- If you are reporting a bug, your description should contain the following information:
- What you did (preferably the actual code or commands that you ran)
- What happened
- What you were expecting to happen
- How your system is configured (operating system, Python version)
If you are comfortable addressing this issue yourself, take a look at the guide to contributing code below.
Possible triage outcomes include: accepted, needs-info, help wanted, or not planned.
An issue may be closed as not planned when the implementation cost or maintenance burden exceeds current project scope/capacity.
Add Example Notebooks
Adding example notebooks are a great way to contribute to documentation and help other users get started on the AllenSDK. Take a look at our existing notebooks as a general guide for the style and content. We have many great notebooks, but Extracellular Electrophysiology Data is a good one to take a look at to get a sense for what we're looking for. All new notebook contributions should be compatible with Python 3.10+.
Notebook Guidelines:
- Provide notebooks for major features/interfaces.
- Use markdown cells for titles, explanatory text, and subtitles that clarify your code.
- Include external references additional resources as needed.
- Import your libraries in the first code cell.
- Display your graphics inline -- for example, using the magic command
%matplotlib inline. - Try to keep the cells of your notebook fairly simple. Think of a cell as a paragraph in a book; its contents should support a single idea.
- Make sure all of the cells are required and in order -- you should be able to execute all cells in the notebook from the top down.
- Check in your cell outputs. We do not currently build notebooks when we generate documentation due to the long runtime for some examples.
- Save your notebook in
doc_template/examples_root/examples/nb.
Suggesting Features/Enhancements
Before suggesting a feature or enhancement, please check existing issues first.
Because AllenSDK is in selective maintenance mode, maintainers are unlikely to implement new features directly. Community feature PRs are welcome, but acceptance depends on long-term maintenance cost and scope fit.
When suggesting a feature, please include:
- Clear motivation and use case
- Expected user impact
- API/design sketch (if applicable)
- Testing plan
When proposing or contributing a new feature, consider:
- Is the change clearly explained and motivated?
- Would the enhancement be useful for a broad set of users?
- Can it be implemented with low long-term maintenance burden?
- Does it preserve backward compatibility?
- Could it be better maintained as a third-party extension/project?
Asking Questions
- Is your question about the Allen Software Development Kit, or about Allen Institute data and tools more generally?
- If the latter, you should check our online help or the Allen Brain Map Community Forum. If you can't find what you are looking for with the aforementioned resources, you can submit your question using this form.
- If you do have an AllenSDK question, first check the documentation (including the examples and the api reference) to make sure that your question is not already addressed.
- If you can't find an answer in the documentation, please create an issue on Github.
Contributing Code
If you are able to improve the AllenSDK, send us your pull requests! Contributing code yourself can be a great way to include the features you want in the AllenSDK.
To contribute code, please follow this list:
- Read contributing guidelines
- Sign Contributor License Agreement (CLA)
- Check if changes are consistent with Coding Style
- Write Unit Tests
- Run Unit Tests
- Make a pull request
Deciding What to Contribute
GitHub issues are used for planning and triage. In maintenance mode, filtering
for good first issue, help wanted, bug, and documentation/testing tasks
is a good way to find issues that are a good fit for outside contributions.
Setting Up
Code contributions should be submitted in the form of a pull request. Here are the steps:
-
Make sure that there is an issue tracking your work. See above for guidelines on creating effective issues.
-
Create a fork of the AllenSDK and clone it to your development environment.
-
Make a new branch for your code off of
master. We suggest the following convention for branch naming:<type>/<short-description>. For example:fix/auto-reward-key feat/parallel-behavior-analysis docs/update-contributing-guide -
Create an environment and install with test dependencies:
pip install -e ".[test]" -
Start writing code!
Style Guidelines
We follow PEP-8 guidelines for new python code. We also follow PEP-484 for type annotations. Before submitting a pull request, run flake8 and mypy linters to check the style of your code. All new code contributions should be compatible with Python 3.10+.
Docstrings
Docstrings for new code should follow the Numpy docstring standard. This allows us to ensure consistency in our auto-generated API documentation.
Testing Guidelines
All code you write should have unit tests, including bugfixes (since the presence of bugs likely indicates a gap in test coverage). We use pytest for running unit tests.
If you write a new file foo.py, you should place its unit tests in test_foo.py.
Follow the directory structure of the parent module(s) for your tests so that
they are easy to find. For example, tests for allensdk/brain_observatory/foo.py
should be in allensdk/test/brain_observatory/test_foo.py.
Testing Guidelines
- Smaller, faster tests are better (and more likely to be run!)
- Tests should be deterministic
- Tests should be hermetic. They should be packed with everything they need and start any fake services they might need.
- Tests should work every time; use dependency injection to mock out flaky or long-running services.
Committing Guidelines
We use Conventional Commits for commit messages.
The format is:
<type>: <short summary>
Optional longer description.
Common types: fix, feat, docs, test, refactor, ci, chore.
Examples:
fix: correct pixel resolution fallback for zero values
feat: add parallel behavior analysis support
docs: update contribution guidelines for maintenance mode
If a commit relates to a GitHub issue, reference it in the summary or body:
fix: correct pixel resolution fallback (#1234)
Keep commits granular and readable. Group small related changes into a single commit when it makes sense. Your commits should tell a clear story.
Making a Pull Request
- Make sure your tests pass locally first (
make testorpython -m pytest <a test file or directory>) - Update your forked repository and rebase your branch onto the latest
masterbranch. - Target the
masterbranch for your PR. - Use a brief but descriptive title, preferably in conventional commit format.
- Include a short description of your changes in the body of the pull request.
- Support your changes with additional resources. Having an example notebook or visualizations can be very helpful during the review process.
Review Process
Once your pull request has been made and your tests are passing, a maintainer
will review it. Please be patient, as review timing may vary. Once approved,
a maintainer will merge your changes into master. Releases are made
periodically based on maintainer availability and priority fixes.
If in doubt how to do anything, don't hesitate to ask!