added contributing guide

This commit is contained in:
Gamosoft 2025-11-22 20:14:25 +01:00
parent 6b2ca6a8de
commit 3c8db87f96
1 changed files with 220 additions and 0 deletions

220
CONTRIBUTING.md Normal file
View File

@ -0,0 +1,220 @@
# Contributing to NoteDiscovery
Thank you for your interest in contributing to NoteDiscovery! 🎉
This document provides guidelines and expectations for contributing to the project. Please read through this before submitting pull requests or opening issues.
## 🤝 Our Philosophy
NoteDiscovery is designed to be:
- **Lightweight** - Fast, minimal dependencies, quick to deploy
- **Simple** - Easy to understand, maintain, and customize
- **Self-hosted** - Complete control over your data, no external dependencies
- **Privacy-focused** - Your notes stay on your server
When considering contributions, we prioritize:
1. Maintaining simplicity and ease of use
2. Keeping the codebase maintainable
3. Preserving the lightweight nature of the application
4. Staying true to the self-hosted, privacy-first mission
## 📋 Before You Start
### Discuss Major Changes First
**Before submitting a pull request for a major feature or significant change, please:**
1. **Open an issue first** to discuss the idea
2. **Wait for feedback** from maintainers
3. **Get approval** before investing time in implementation
This helps ensure that:
- Your effort isn't wasted if the feature doesn't align with project goals
- We can discuss the best approach together
- Multiple people aren't working on the same thing
- The feature fits well with the existing architecture
### What Counts as a "Major Change"?
- New features that add significant functionality
- Changes to core architecture or data models
- New dependencies or significant changes to existing ones
- UI/UX overhauls or major design changes
- Changes to the plugin or theme system architecture
- Breaking changes to the API
### What Can Be Submitted Directly?
- Bug fixes
- Documentation improvements
- Small UI tweaks and improvements
- Performance optimizations
- Code quality improvements (refactoring, cleanup)
- New themes (following existing theme structure)
- New plugins (following existing plugin structure)
- Translation/localization updates
## 🚀 How to Contribute
### 1. Fork and Clone
```bash
git clone https://github.com/YOUR_USERNAME/notediscovery.git
cd notediscovery
```
### 2. Create a Branch
```bash
git checkout -b feature/your-feature-name
# or
git checkout -b fix/your-bug-fix
```
### 3. Make Your Changes
- Follow the existing code style
- Write clear, readable code
- Add comments for complex logic
- Test your changes locally
- Update documentation if needed
### 4. Test Your Changes
```bash
# Install dependencies
pip install -r requirements.txt
# Run the application
python run.py
# Or use Docker
docker-compose up
```
### 5. Commit Your Changes
Write clear, descriptive commit messages:
```bash
git commit -m "Add dark mode toggle to settings"
```
### 6. Push and Create a Pull Request
```bash
git push origin feature/your-feature-name
```
Then create a pull request on GitHub with:
- A clear title and description
- Reference to any related issues
- Screenshots (if UI changes)
- Testing notes
## 📝 Code Style Guidelines
### Python
- Follow PEP 8 style guide
- Use type hints where appropriate
- Keep functions focused and small
- Add docstrings for public functions/classes
### JavaScript
- Use modern ES6+ syntax
- Keep functions focused and small
- Comment complex logic
### General
- Keep code simple and readable
- Avoid over-engineering
- Prefer explicit over implicit
- Write self-documenting code when possible
## 🎨 Contributing Themes
Themes should:
- Follow the existing theme structure (see `themes/` directory)
- Be well-tested across different content types
- Include proper contrast ratios for accessibility
- Be named descriptively (e.g., `ocean-blue.css`, not `theme1.css`)
## 🔌 Contributing Plugins
Plugins should:
- Follow the existing plugin structure (see `plugins/` directory)
- Include documentation in `documentation/PLUGINS.md`
- Be optional and not break core functionality if disabled
- Follow the plugin configuration format
## 📚 Contributing Documentation
Documentation improvements are always welcome! Please:
- Keep language clear and concise
- Use examples where helpful
- Update related documentation when making changes
- Check for typos and grammar
## ❓ When PRs Might Not Be Accepted
Even if your idea is great, a PR might not be accepted if:
1. **It doesn't align with project goals** - We aim to keep NoteDiscovery lightweight and simple. Features that add significant complexity or dependencies may not fit.
2. **It wasn't discussed first** - Major changes should be discussed in an issue before implementation.
3. **It conflicts with existing work** - Sometimes we're already working on similar features or have different plans.
4. **It's too niche** - Features that only benefit a very small subset of users might be better as plugins.
5. **It adds unnecessary complexity** - We prefer simple, maintainable solutions over complex ones.
6. **It breaks backward compatibility** - Without a very good reason, we try to maintain compatibility.
### What to Do If Your PR Isn't Accepted
**Don't take it personally!** Here are some options:
1. **Fork and maintain your own version** - That's the beauty of open source! You can add any features you want in your fork.
2. **Create a plugin** - Many features can be implemented as plugins without changing core code.
3. **Revisit later** - Project priorities change. What doesn't fit now might fit later.
4. **Discuss alternatives** - We're happy to discuss if there's a simpler way to achieve your goal.
## 🐛 Reporting Bugs
When reporting bugs, please include:
- Steps to reproduce
- Expected behavior
- Actual behavior
- Environment (OS, Python version, Docker, etc.)
- Error messages or logs
- Screenshots if applicable
## 💡 Suggesting Features
When suggesting features:
- Explain the problem you're trying to solve
- Describe your proposed solution
- Discuss alternatives you've considered
- Explain who would benefit from this feature
## 📞 Getting Help
- Open an issue for bugs or feature requests
- Check existing issues and documentation first
- Be patient and respectful in discussions
## 🙏 Thank You!
Your contributions, whether code, documentation, bug reports, or feature suggestions, are greatly appreciated. Even if a specific PR isn't merged, your ideas and feedback help make NoteDiscovery better.
---
**Remember**: The goal is to build something useful together while keeping the project maintainable and true to its core values. Thank you for understanding! ❤️