Thanks for your interest in contributing! 🎉
This project is open source and grows stronger with community collaboration.
Whether it’s fixing bugs, improving documentation, or adding new features — your help is welcome.
- 🐛 Report Bugs → Found something not working? Open an issue.
- 💡 Suggest Features → Got an idea to improve the script? Share it!
- 📖 Improve Documentation → Help make the README, guides, or examples clearer.
- 👨💻 Submit Code → Add features, fix bugs, or optimize performance.
-
Fork this repo
Click the "Fork" button at the top right of this repository. -
Clone your fork
git clone https://github.com/<your-username>/linux-system-update-script.git cd linux-system-update-script
3. **Create a branch**
```bash
git checkout -b feature-new-idea
```
4. **Make your changes**
* Keep the code **clean, modular, and well-commented**.
* Follow existing patterns (functions, logging, colors).
* Use the `log` function for consistent output.
5. **Commit your changes**
```bash
git commit -m "Add: short description of feature or fix"
```
6. **Push your branch**
```bash
git push origin feature-new-idea
```
7. **Open a Pull Request (PR)**
Go to the original repo and click **“New Pull Request.”**
---
## 🧑💻 Code Style Guidelines
* Use **Bash best practices** (`set -euo pipefail` is already included).
* Write new logic as **functions** to keep the script modular.
* Always use the `log` function for output (ensures color + logging).
* Avoid hardcoding — use variables and configs.
* Test in both `--verbose` and `--quiet` modes.
---
## 📝 Release & Changelog Process
We use a **scalable release notes structure**:
* **`releases/` folder** → human-friendly release notes (for users).
* Example: `releases/1.0.0.md`
* Focus on highlights: new features, improvements, roadmap.
* **`changelog/` folder** → technical changelogs (for developers).
* Example: `changelog/1.0.0.md`
* Focus on technical details: Added / Changed / Fixed / Security.
* **`RELEASES.md`** → index linking to all release notes.
* **`CHANGELOG.md`** → index linking to all changelog files.
### 🔹 When contributing:
1. If your change is **user-facing** → update the next release file in `releases/`.
2. If your change is **developer-facing** → update the next changelog file in `changelog/`.
3. If starting a new version → create new files in both folders, and update the indexes.
Maintainers will sync these with GitHub Releases when tagging a new version.
---
## 🧪 Testing Checklist
Before submitting a PR, please test:
* ✅ Script runs without errors on Ubuntu/Debian.
* ✅ Logs are created in `/var/log/update-system/`.
* ✅ Log rotation works (only last 10 logs kept).
* ✅ Summary report (packages upgraded, warnings, errors) is correct.
* ✅ Works with both `--full` and individual flags.
---
## ✅ Commit Message Guidelines
* Use **clear, concise messages**.
* Start with a verb (Add, Fix, Update, Remove).
* Examples:
* `Fix: handle log rotation correctly when logs missing`
* `Add: --reboot-if-needed flag`
* `Update: improved system info summary output`
---
## 📜 License Agreement
By contributing, you agree that your contributions will be licensed under the [MIT License](LICENSE) of this project.
---
## 🙌 Need Help?
If you get stuck or have questions, open an [issue](../../issues) —
we’re here to help each other! 💬