Thank you for your interest in contributing to Von! This AI-agent system for academic research is developed by the Strong AI Lab at the University of Auckland, and we welcome contributions from the community.
This guide will help you get started with contributing to the project. For an overview of Von's features and goals, see the README.
Before you begin, ensure you have the following installed:
- Python 3.10 or higher
- Node.js 16+ (for frontend development)
- Git for version control
For external contributors (recommended):
If you don't have write access to the main repository, you'll need to fork it:
- Fork the repository on GitHub by clicking the "Fork" button at https://github.com/Strong-AI-Lab/Von
- Clone your fork locally:
git clone https://github.com/YOUR-USERNAME/Von.git cd Von - Add upstream remote to keep your fork in sync:
git remote add upstream https://github.com/Strong-AI-Lab/Von.git
For collaborators with write access:
If you have write access to the repository, you can clone directly:
git clone https://github.com/Strong-AI-Lab/Von.git
cd VonImportant: If you cloned directly without forking and don't have write access, you won't be able to push branches. In this case:
- Fork the repository on GitHub
- Update your local repository's remote:
# Rename the current origin to upstream git remote rename origin upstream # Add your fork as the new origin git remote add origin https://github.com/YOUR-USERNAME/Von.git # Verify remotes git remote -v
If you're working from a fork, sync it regularly with upstream:
# Fetch latest changes from upstream
git fetch upstream
# Switch to your main branch
git checkout main
# Merge upstream changes
git merge upstream/main
# Push updates to your fork
git push origin mainRun the automated setup script in PowerShell:
# Install Python and JavaScript dependencies
./setup_all.ps1
# If you need to specify a Python version (e.g., 3.12):
./setup_py.ps1 -ConfigureVSCode -PythonVersion 3.12
./setup_js.ps1Start the development server:
./run.ps1Open your browser to http://localhost:5001 and verify Von is running correctly.
To stop the server:
./run.ps1 stopVon uses environment variables for configuration (database, API keys, tokens).
- The repo-root
.envfile is for local secrets and is intentionally ignored by git (see.gitignore). Never commit it. - Use
.env.templateas the source of truth for documented configuration options. If your change introduces a new environment variable, add a commented placeholder and brief explanation to.env.template. - Avoid pasting secrets into issues, pull requests, logs, or screenshots.
Before making changes, create a new branch from main:
If working from a fork:
git checkout main
git pull upstream main # Sync with upstream
git checkout -b feature/your-feature-nameIf working with direct clone (write access):
git checkout main
git pull origin main # Sync with main repo
git checkout -b feature/your-feature-nameBranch naming convention:
feature/- New features or enhancementsfix/- Bug fixesrefactor/- Code refactoring- Etc.
Examples:
feature/arxiv-integrationfix/concept-search-bug
Make your changes following the project conventions. See the Suggested Style section for code style guidelines.
Before committing, ensure your changes work correctly by running the application locally with ./run.ps1 and testing your modifications.
Write clear, concise commit messages that describe what changed and why:
git add .
git commit -m "Add arXiv paper import feature to concept service"Good commit messages:
- ✅ "Fix concept search returning duplicate results"
- ✅ "Add support for Google Gemini API integration"
- ✅ "Refactor annotation extraction to improve performance"
- ✅ "Update README with Ollama setup instructions"
Push your branch to the appropriate remote:
If working from a fork:
git push origin feature/your-feature-nameIf working with direct clone (write access):
git push origin feature/your-feature-nameThen open a Pull Request (PR) on GitHub:
For fork contributors:
- Go to your fork on GitHub:
https://github.com/YOUR-USERNAME/Von - GitHub will show a prompt to "Compare & pull request" for your recently pushed branch
- Click it, or manually go to the main Von repository and click "New Pull Request"
- Select "compare across forks" and choose your fork and branch
- Write a detailed description (see template below)
For direct collaborators:
- Go to the Von repository
- Click "New Pull Request"
- Select your branch from the dropdown
- Write a detailed description (the repository includes a PR template at
.github/PULL_REQUEST_TEMPLATE.md)
PR Description should include:
- What changes were made
- Why the changes were necessary
- Reference any related issues (e.g., "Fixes #123")
Use the repository’s PR template to keep reviews consistent: .github/PULL_REQUEST_TEMPLATE.md.
- Required approvals: Your PR will need approval from project maintainers before merging
- Be responsive: Address review comments and feedback promptly
- Iterate: Push additional commits to the same branch to update your PR
- Stay patient: Reviews may take a few days depending on maintainer availability
We particularly welcome contributions in these areas:
- Integrate external APIs (e.g., Semantic Scholar, PubMed, Google Scholar)
- Extend existing MCP servers with new capabilities
- Create domain-specific MCP tools
- Improve automatic extraction of researchers, institutions, concepts from text
- Build pipelines for bulk entity creation
- Enhance NLP-based annotation systems
- Add domain-specific ontology branches (biology, computer science, social sciences)
- Define new relationship types and predicates
- Create validation rules for ontology consistency
- Systematic literature review workflows
- Citation network analysis tools
- Collaboration mapping features
- User guides and tutorials
- API documentation
- Code examples and use cases
- UI/UX enhancements
- Graphical UI improvements
- Data visualization features
- Accessibility improvements
When contributing, please follow these guidelines:
- Code comments: Explain complex logic and algorithms
- Docstrings: Add docstrings to Python functions and classes (Google style preferred)
- Type hints: Use Python type hints for better code clarity
Python docstring example:
def create_concept(name: str, parent_id: str, description: str = "") -> dict:
"""
Create a new concept in the Vontology hierarchy.
Args:
name: The name of the concept
parent_id: The ID of the parent concept
description: Optional description of the concept
Returns:
A dictionary with 'success' boolean and 'concept' data
Raises:
ValueError: If parent_id is invalid
"""
# Implementation...- Bug reports: Use the issue tracker to report bugs with reproducible steps
- Feature requests: Propose new features with clear use cases
- Questions: Ask questions about the codebase or development process
When creating an issue, include:
- Description: Clear summary of the issue or request
- Steps to reproduce: For bugs, provide detailed steps
- Expected behavior: What should happen
- Actual behavior: What actually happens
- Environment: OS, Python version, browser (if applicable)
- Screenshots: Visual evidence if relevant
We are committed to providing a welcoming and inclusive environment for all contributors. We expect:
- Respectful communication: Treat everyone with respect and courtesy
- Constructive feedback: Provide helpful, actionable feedback in reviews
- Open-mindedness: Be open to different approaches and perspectives
- Collaboration: Work together to build the best possible solution
- Academic integrity: Maintain high standards of honesty and attribution
Unacceptable behavior includes harassment, discriminatory language, or disruptive conduct. If you experience or witness unacceptable behavior, please contact the maintainers.
By contributing to Von, you agree that your contributions will be licensed under the Apache License 2.0, the same license as the project. See LICENSE for details.
Your contributions help make Von a better tool for academic researchers worldwide. Whether you're fixing a typo, adding a feature, or improving documentation—every contribution matters!
If you have questions or need help, don't hesitate to open an issue or reach out to the maintainers.
Happy Contributing! 🚀
Strong AI Lab (SAIL) University of Auckland https://github.com/Strong-AI-Lab