|
| 1 | +# Contributing to NEON Tree Classification |
| 2 | + |
| 3 | +Thank you for your interest in contributing! We welcome contributions from researchers at all technical levels. |
| 4 | + |
| 5 | +## 🚀 Quick Start for Contributors |
| 6 | + |
| 7 | +### Option 1: UV Setup (Recommended) |
| 8 | +UV is faster and ensures consistent dependencies across all users. |
| 9 | + |
| 10 | +```bash |
| 11 | +# 1. Fork the repository on GitHub (click the Fork button) |
| 12 | +# 2. Clone your fork |
| 13 | +git clone https://github.com/yourusername/NeonTreeClassification.git |
| 14 | +cd NeonTreeClassification |
| 15 | + |
| 16 | +# 3. Install UV if you don't have it |
| 17 | +curl -LsSf https://astral.sh/uv/install.sh | sh |
| 18 | +# or: pip install uv |
| 19 | + |
| 20 | +# 4. Install the package |
| 21 | +uv sync |
| 22 | +``` |
| 23 | + |
| 24 | +### Option 2: Pip Setup (Alternative) |
| 25 | +If you prefer traditional pip or can't install UV: |
| 26 | + |
| 27 | +```bash |
| 28 | +# After cloning (steps 1-2 above) |
| 29 | +pip install -e . |
| 30 | +``` |
| 31 | + |
| 32 | +> **Note**: UV is preferred because it ensures all contributors have the same dependency versions using the `uv.lock` file. |
| 33 | +
|
| 34 | +## 🤝 How to Contribute |
| 35 | + |
| 36 | +### 1. Found a Bug? |
| 37 | +- Open an [issue](https://github.com/Ritesh313/NeonTreeClassification/issues) |
| 38 | +- Describe what you expected vs what happened |
| 39 | +- Include any error messages |
| 40 | + |
| 41 | +### 2. Have a Feature Idea? |
| 42 | +- Open an [issue](https://github.com/Ritesh313/NeonTreeClassification/issues) to discuss it first |
| 43 | +- We can help figure out the best approach |
| 44 | + |
| 45 | +### 3. Want to Contribute Code? |
| 46 | +1. **Create a branch**: `git checkout -b your-feature-name` |
| 47 | +2. **Make changes**: Edit files, add features, fix bugs |
| 48 | +3. **Test it works**: `uv run python -c "import neon_tree_classification; print('Works!')"` |
| 49 | +4. **Submit**: Create a Pull Request on GitHub |
| 50 | + |
| 51 | +> **For advanced testing**: Use `uv sync --all-extras` to install development tools, then run `uv run pytest tests/` |
| 52 | +
|
| 53 | +## 💡 Easy Ways to Help |
| 54 | + |
| 55 | +**No coding required:** |
| 56 | +- Report bugs or issues you encounter |
| 57 | +- Suggest improvements to documentation |
| 58 | +- Share example use cases |
| 59 | +- Test the package with your data and report results |
| 60 | + |
| 61 | +**Light coding:** |
| 62 | +- Fix typos in documentation |
| 63 | +- Add examples or tutorials |
| 64 | +- Improve error messages |
| 65 | + |
| 66 | +**More involved:** |
| 67 | +- Add new model architectures |
| 68 | +- Improve data processing tools |
| 69 | +- Add visualization features |
| 70 | + |
| 71 | +## 🆘 Need Help? |
| 72 | + |
| 73 | +- **First time with Git/GitHub?** Check out [GitHub's guides](https://guides.github.com/) |
| 74 | +- **Python packaging confusion?** Just ask in an issue - we're happy to help! |
| 75 | +- **Not sure where to start?** Look for issues labeled "good first issue" |
| 76 | + |
| 77 | +## 📝 Guidelines |
| 78 | + |
| 79 | +- **Be descriptive** in commit messages and pull requests |
| 80 | +- **Test your changes** - make sure imports still work |
| 81 | +- **Ask questions** - we'd rather help than have you struggle alone |
| 82 | + |
| 83 | +We appreciate all contributions, whether it's fixing a typo or adding a major feature! |
0 commit comments