Mentee: Rahul Balaji
Mentors: Håkon Vågsether, Sebastian Koslowski, Josh Morman
GSoC Project Link: https://summerofcode.withgoogle.com/programs/2023/projects/Zhe7wB2q
GSoC Proposal Link: https://github.com/haru-02/gsoc-proposal
Project Github Link: https://github.com/haru-02/gnuradio-companion
This project took place over the summer of 2023 as part of the Google Summer of Code, working with GNURadio.
The project's objective was to extract GRC from the GNU Radio software framework and create a more flexible workflow by making it modular. GRC stands for GNU Radio Companion, which specifically serves as a visual development environment for creating and organizing signal processing flowgraphs. These flowgraphs represent the signal processing pipelines that manipulate and transform radio frequency signals in various ways, such as modulation, demodulation, filtering, encoding, and decoding.
The original goal of this project arose out of the recognition for the usability of GNU Radio companion outside it's current use cases and for the need to maintain it as a separate module that can be customized as per user requirements.
Due to the nature of the project, it is currently not part of any repository in GNU Radio, but a standalone repository for the community.
The initial main goals for the proposal were defined by me on a surface level with a very basic knowledge on GNU Radio and GNU Radio Companion. They are,
- Move GRC to a separate repository and to remove dependency on GNU Radio.
- Modularize options block.
- Modularize templates block.
- Allowing templating with Jinja.
However, as the project progressed, I discovered a lot of sub-goals that were to be achieved for this project.
- Separation of GRC from GNU Radio with intact commit history nd to remove dependency with GNU Radio, making it run standalone.
- Restructuring of GRC for packaging using FLIT.
- Removing options block as a .yml file and translating it to python.
- defining a .workflow.yml file that can allow the user to customize parameters.
- adding workflow manager that can parse the .workflow.yml file and manage the parameters.
Each of these steps have been tested and reviewed every week, with bugs noted and fixed at regular intervals.
As seen, there have been a multitude of major steps that required proper planning and focus during the coding period, pushing a little of the goals originally planned a bit behind schedule.
As the project stands, it has achieved the objective to kick- start the separation of GRC from GNU Radio as a standalone project, and I have no doubt that it soon will be available for public use for use-cases beyond GNU Radio.
I am excited to see the evolution of GNU Radio as a project and as a community with the inclusion of this project.
There are a few more milestones to be met for the project to be completed that I intend to work on moving forward.
- Override the functions rewrite and import_data from block.py.
- Modularize templates.
- Allow for templating using Jinja.
Some of the main commits related to the project indicating major code changes are as given below. Some others related to minor bug fixes and other code changes are not included here. For further information, please refer to the project history.
- Restructuring files to make it py-package friendly.
- Restructuring files and updated .toml file.
- Translating options block and refactoring workflows.
- Translating options block (2).
- Adding hide_bokeh_gui_optons_if_not_installed.py.
- Add workflow manager.
- Getting workflow parameters from workflow_manager to options.
- Modularize options block.
- Generate all parameters from .yml file (wip: modularize options block).
This was the first time I had worked on a Large-scale project using python. I also learnt a lot about python project packaging tools like flit, and I also picked up a few concepts along the way that refreshed my knowledge on object-oriented approach to coding. Version control tools like GIT and Git-Hub were also extensively used in this project. The weekly blogs really helped me improve my skills in communication and other soft skills that are integral to a software engineer.
Participating in the Google Summer of Code 2023 and working on the "Standalone GRC and Pluggable Workflows" project has been quite the unique and a rewarding journey. I am thankful for the opportunity to contribute to GNU Radio.
I want to express my gratitude to my mentors and the GNU Radio community for their constant support and guidance throughout this journey without whom any of this would not have been possible. This experience has not only helped me improve as a software developer, but has also instilled in me the interest to further contribute to GNU Radio and other opensource projects.
As my coding journey continues beyond this project, I look forward to using my new-found knowledge and experience gained here to the future goals of this project and to endeavours beyond. I am excited to see how GNU Radio and especially GNU Radio Companion is used now that GRC has to evolve into .
With that, I would like to conclude my gist on my project for GSoC 2023.
Happy coding !