-
-
Notifications
You must be signed in to change notification settings - Fork 48
[gsoc25] Added blog post for firmware upgrader project #134
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
6 commits
Select commit
Hold shift + click to select a range
0be34d1
[docs] Added blog post for firmware upgrader project gsoc-2025
312cfb3
[chores] Refactored blog
d9cd0e9
[fix] Small changes
e345022
[fix] Fixed punctuations
8c24728
[gsoc25] FW upgrader header image
nemesifier f593465
[gsoc25] Fw upgrader: clarified next steps
nemesifier File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,203 @@ | ||
| GSoC 2025: Improve UX and Flexibility of the Firmware Upgrader Module | ||
| ===================================================================== | ||
|
|
||
| :date: 2025-09-23 | ||
| :author: Roshan Kumar | ||
| :tags: gsoc, firmware-upgrader, new-features | ||
| :category: gsoc | ||
| :lang: en | ||
| :image_url: https://openwisp.org/images/blog/gsoc25/firmware-upgrader/gsoc25-firmware-upgrader.png | ||
| :image_width: 753 | ||
| :image_height: 759 | ||
|
|
||
| .. image:: {static}/images/blog/gsoc25/firmware-upgrader/gsoc25-firmware-upgrader.png | ||
| :alt: Google Summer of Code, OpenWISP Firmware Upgrader Module | ||
| :align: center | ||
|
|
||
| Over the past three months, I had the opportunity to work on my Google | ||
| Summer of Code project under the guidance of `Federico Capoano | ||
| (nemesifier) <https://github.com/nemesifier>`_, `Aryaman (Aryamanz29) | ||
| <https://github.com/Aryamanz29>`_, `Gagan Deep (pandafy) | ||
| <https://github.com/pandafy>`_ and `Oliver Kraitschy (okraits) | ||
| <https://github.com/okraits>`_. The journey was filled with challenges, | ||
| creative problem-solving, and exciting milestones that not only deepened | ||
| my technical knowledge but also strengthened my ability to collaborate and | ||
| adapt. | ||
|
|
||
| About the Project | ||
| ----------------- | ||
|
|
||
| The firmware upgrader enhancements address key pain points network | ||
| administrators face: | ||
|
|
||
| - **Uncertainty about upgrade progress**: No real-time feedback. | ||
| - **Inability to stop problematic upgrades**: No cancellation controls. | ||
| - **Lack of granular control**: Upgrading entire networks vs. targeted | ||
| subsets. | ||
|
|
||
| The enhanced system provides real-time feedback, safety controls, and | ||
| filtering capabilities that make managing firmware across large | ||
| deployments safer and more efficient. | ||
|
|
||
| Features Implemented | ||
| -------------------- | ||
|
|
||
| Real-Time Firmware Upgrade Progress Tracking | ||
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
|
|
||
| **Single Device Upgrade Progress** | ||
|
|
||
| .. image:: {static}/images/blog/gsoc25/firmware-upgrader/single-device-progress-tracking.gif | ||
| :alt: Real-Time upgrade progress tracking | ||
|
|
||
| **Mass Upgrade Progress** | ||
|
|
||
| .. image:: {static}/images/blog/gsoc25/firmware-upgrader/mass-upgrade-progress-tracking.gif | ||
| :alt: Real-Time upgrade progress tracking | ||
|
|
||
| The firmware upgrade progress tracking feature provides real-time updates | ||
| on the progress of firmware upgrades. This feature is implemented using | ||
| WebSocket connections to deliver real-time progress updates directly to | ||
| the admin interface, eliminating the need for manual page refreshes. | ||
|
|
||
| Progress tracking is implemented at multiple levels, from individual | ||
| device operations to batch upgrade summaries, providing comprehensive | ||
| visibility into upgrade status. | ||
|
|
||
| **Use Cases**: | ||
|
|
||
| - Monitor real-time progress of long-running firmware upgrades without | ||
| uncertainty | ||
| - Access upgrade logs without manual page refreshes | ||
|
|
||
| **Pull Requests:** | ||
|
|
||
| - `Show upgrade progress for single upgrade operations in real time | ||
| <https://github.com/openwisp/openwisp-firmware-upgrader/pull/320>`_ | ||
| - `Show upgrade progress for mass upgrade operations in real time | ||
| <https://github.com/openwisp/openwisp-firmware-upgrader/pull/325>`_ | ||
|
|
||
| Upgrade Operation Cancellation | ||
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
|
|
||
| .. image:: {static}/images/blog/gsoc25/firmware-upgrader/upgrade-operation-cancellation.gif | ||
| :alt: Upgrade Operation Cancellation | ||
|
|
||
| Users can safely cancel firmware upgrade operations through a prominent | ||
| "Cancel" button that appears during in-progress upgrades, with built-in | ||
| safety mechanisms to prevent cancellation during critical phases. | ||
|
|
||
| The system automatically disables cancellation once an upgrade reaches 60% | ||
| completion, typically when firmware flashing begins. This prevents | ||
| dangerous interruptions that could brick devices. | ||
|
|
||
| When an upgrade is cancelled, the system automatically restarts any | ||
| services that were stopped during the upgrade process, ensuring devices | ||
| remain in a stable state. | ||
|
|
||
| **Use Cases**: | ||
|
|
||
| - Stop problematic upgrades that are taking too long or showing errors | ||
| - Cancel upgrades when emergency maintenance requires immediate device | ||
| access | ||
|
|
||
| **Pull Requests:** | ||
|
|
||
| - `Allow cancelling firmware upgrade operations | ||
| <https://github.com/openwisp/openwisp-firmware-upgrader/pull/329>`_ | ||
|
|
||
| Mass Upgrade by Group and Location | ||
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
|
|
||
| .. image:: {static}/images/blog/gsoc25/firmware-upgrader/mass-upgrade-by-group-and-location.gif | ||
| :alt: Mass Upgrade by Group and Location | ||
|
|
||
| Mass upgrade operations now support precise device targeting through | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Please let's link the PRs in their respective sections. It's ok to also have a summary at the end. Not sure if other blog posts did the same, I will check, but it makes it easier for readers to quickly find the github PR while reading about the feature. |
||
| device group and location filters, enabling administrators to upgrade | ||
| specific subsets of devices rather than entire networks. | ||
|
|
||
| Geographic or logical location filters enable site-specific upgrades, | ||
| allowing for gradual rollouts across different office locations, | ||
| buildings, or network segments. | ||
|
|
||
| Group and location filters can be used together to achieve very precise | ||
| targeting, such as "Access Points in Building A" or "Edge devices in the | ||
| European region". | ||
|
|
||
| **Use Cases**: | ||
|
|
||
| - Upgrade devices gradually by location (office by office, region by | ||
| region) | ||
| - Update only specific device types (routers vs access points) | ||
| - Upgrade test environments or pilot groups before production rollout | ||
| - Quickly target security updates to specific vulnerable device groups | ||
|
|
||
| **Pull Requests:** | ||
|
|
||
| - `Allow mass upgrade by their group or location | ||
| <https://github.com/openwisp/openwisp-firmware-upgrader/pull/343>`_ | ||
|
|
||
| Current state | ||
| ------------- | ||
|
|
||
| We are maintaining this work in the ``gsoc25`` branch of the `Firmware | ||
| Upgrader Module | ||
| <https://github.com/openwisp/openwisp-firmware-upgrader>`_. | ||
|
|
||
| Once all the remaining open PRs are merged, we will proceed with a final | ||
| general verification and then merge this branch into the main branch. | ||
|
|
||
| **We aim to release these improvements in OpenWISP 26**. | ||
|
|
||
| Documentation Updates are tracked under the Pull Request `Updated | ||
| quick-start docs for gsoc25 features | ||
| <https://github.com/openwisp/openwisp-firmware-upgrader/pull/347>`_. | ||
|
|
||
| My Experience | ||
| ------------- | ||
|
|
||
| Working on `OpenWISP Firmware Upgrader | ||
| <https://github.com/openwisp/openwisp-firmware-upgrader>`_ during GSoC has | ||
| been an enriching experience that deepened my understanding of real-time | ||
| web applications, network device management, and large-scale system | ||
| design. The project challenged me to think about user experience from an | ||
| administrator's perspective - where clarity, safety, and control are | ||
| paramount. | ||
|
|
||
| I gained valuable experience with WebSocket programming, real-time data | ||
| synchronization, and building responsive user interfaces that handle | ||
| asynchronous operations gracefully. Working with Django Channels for | ||
| WebSocket support taught me about the complexities of managing persistent | ||
| connections and ensuring message delivery reliability. | ||
|
|
||
| The safety aspects of firmware upgrade cancellation required careful | ||
| consideration of device states and recovery mechanisms. This taught me | ||
| about the importance of building fail-safes into critical operations that | ||
| could potentially damage hardware if interrupted incorrectly. | ||
|
|
||
| Implementing the group and location filtering system provided insights | ||
| into building flexible query systems that remain performant even with | ||
| large device inventories. The dry-run capability development emphasized | ||
| the importance of user confirmation and preview features in administrative | ||
| interfaces. | ||
|
|
||
| Beyond the technical skills, I learned valuable lessons about testing | ||
| complex, stateful operations and ensuring that real-time features work | ||
| reliably across different network conditions and browser environments. | ||
|
|
||
| What's Next? | ||
| ------------ | ||
|
|
||
| The firmware upgrade enhancements provide a solid foundation for future | ||
| improvements to OpenWISP's device management capabilities. | ||
|
|
||
| I plan to continue contributing to OpenWISP, focusing on user experience | ||
| improvements and helping other contributors understand the firmware | ||
| upgrade system. The foundation built during GSoC provides many | ||
| opportunities for incremental improvements and new features that can | ||
| benefit network administrators managing diverse OpenWISP deployments. | ||
|
|
||
| The enhanced firmware upgrade experience represents a significant step | ||
| forward in making OpenWISP more user-friendly and suitable for large-scale | ||
| network management scenarios where clarity, control, and safety are | ||
| essential. | ||
Binary file added
BIN
+26.4 KB
content/images/blog/gsoc25/firmware-upgrader/gsoc25-firmware-upgrader.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+5.7 MB
...ent/images/blog/gsoc25/firmware-upgrader/mass-upgrade-by-group-and-location.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+5.5 MB
content/images/blog/gsoc25/firmware-upgrader/mass-upgrade-progress-tracking.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+1.67 MB
content/images/blog/gsoc25/firmware-upgrader/single-device-progress-tracking.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+2.34 MB
content/images/blog/gsoc25/firmware-upgrader/upgrade-operation-cancellation.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.