7. Contribution Guide
The ISURLOG firmware is an open-source project, and we welcome contributions from the community! Whether you are providing a simple bug fix, suggesting a new feature, or optimizing power consumption routines, your help is highly valued.
Where does ISURKI's own code actually live?
This repository is a full fork of MicroPython — the vast majority of the source tree (py/, extmod/, most of ports/, etc.) is upstream MicroPython, kept in sync via the upstream remote. ISURKI's own code — the part you'll actually be contributing to in most cases — lives in just two places: app/ (the application, main.py + config) and ports/esp32/modules/{modules,lib} (the wrappers and drivers). See 2. Architecture Overview and 2.1 Module & Library Reference before diving in — they explain the lib/modules split and document every existing file, so you know where a new sensor driver or feature belongs.
7.1 Ways to Contribute
We accept contributions in the following areas:
- Code Contributions (Pull Requests): Bug fixes, new sensor drivers, performance optimizations, or new functionalities.
- Documentation: Improving the quality, clarity, and completeness of this Wiki or inline comments.
- Bug Reports: Submitting clear, detailed reports via the GitHub Issues tracker.
- Feature Requests: Suggestions for future functionality or hardware integration.
- Hardware (Printables): Providing new or improved accessories, mounts, or enclosures for the datalogger.
7.2 Prerequisites for Code Submission
Before submitting a Pull Request (PR), please ensure you meet the following requirements:
- Environment: You must use the recommended Ubuntu/WSL development environment, as detailed in 1. Build Environment Setup.
- Code Base: Your development branch must be forked from and up-to-date with the
mainbranch of the official ISURLOG repository. - Code Quality: Adhere to Python/MicroPython coding standards (e.g., PEP 8 where applicable). Commit messages should follow the project's
CODECONVENTIONS.md(inherited from upstream MicroPython) — prefix each commit with the directory or file path it affects, e.g.modules/nb_iot: Fix eDRX timeout handling. - Test Locally: Changes touching hardware-facing code (sensors, power management, communications) must be tested on a physical ISURLOG device. Contributions that don't touch hardware at all (e.g. a payload codec fix in
IsurlogLPP.py, or a pure logic fix) may be reviewed with unit-level testing instead — mention in your PR how you tested it either way. -
License: By contributing, you agree your code is licensed under the project's GPL-3.0 license (see
LICENSE). New files should carry the same copyright header used throughout the codebase:```python
Copyright (C) 2026 ISURKI
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
SPDX-License-Identifier: GPL-3.0-or-later
```
7.3 The Contribution Process
Follow these steps for a clean and efficient contribution:
1. Fork the Repository
Start by forking the main isurlog-firmware repository to your personal GitHub account.
2. Create a Topic Branch
Create a dedicated branch for your specific fix or feature. This keeps the changes isolated.
git checkout -b feature/your-awesome-feature
3. Implement Changes
Commit your changes frequently with descriptive commit messages following CODECONVENTIONS.md (e.g., modules/max31865_sensor: Fix float conversion in PT100 driver.).
4. Create a Pull Request (PR)
- Push your topic branch to your personal fork on GitHub.
- Go to the official ISURLOG repository page and initiate a new Pull Request.
- PR Description: Clearly describe the problem solved or the feature added. Include details on how you tested the change.
7.4 Using the Issues Tracker
Please use the GitHub Issues tab for the following purposes:
-
Bug Reports: Include clear steps to reproduce the bug, the expected behavior, and the actual behavior observed.
-
Feature Requests: Describe the new functionality and why it would be valuable to the ISURLOG community.
7.5 Where to Look, Depending on What You Want to Touch
| You want to... | Start here |
|---|---|
| Understand the codebase layout | 2. Architecture Overview / 2.1 Module & Library Reference |
| Add or fix a sensor driver | 2.1 Module & Library Reference |
| Change a GPIO/hardware assignment | 4. GPIO Mapping (Hardware-Software) |
| Work on the NB-IoT (nRF9160/nRF9151) modem | 5. Advanced NB-IoT Modem Guide |
| Work on the LoRaWAN (RAK3172) modem | 6. Advanced LoRaWAN Modem Guide |
| Flash your build for local testing | 3. Flashing and Application Upload |