Conclusion GSoC 2016 radare Web UI
I would like to conclude this GSoC with an article where I can resume this journey: how it starts, what I’ve done, what I’ve been challenging and some advices about this experience. If you are more interested into a chronological article about the differents functionnalities, I recommend you to read this one.
What is the radare Web UI?
So, the radare Web UI, is how we pass from this…
to this…
Radare is a reverse-engineering framework which is mostly used in command line. This UI allows user to explore the reverse-engineering more easily.
This UI isn’t the first, radare currently know four UIs. I’ve worked on the most recent: /m
, the material design one.
At the beginning
How did I get into this project?
Maijin, a friend from first years of graduate studies has introduced me to this project, the future GSoC and the needs about the Web UI. I’ve then submitted a proposal and made a patch about how the dependencies are managed into the repository. I’ve centralized all common internal dependencies and added gulp/bower to handle external dependencies.
A few weeks later, I had the joy of being selected for GSoC 2016 with the radare community.
The realisations
From the community bonding period to the end I’ve made several realisations. How can you follow those?
For a complete resume of my work, I’ve published this article on the official radare blog. But you can also follow my work with my posts:
And if you are interested in more concrete stuff, all my work is available on the main repo, or more specifically, with my own commits. I’ve also committed once on radare/radare2-pm about the installation of the UI.
If I had to resume my work, it appears in 7 parts (more detail on this article on the official radare blog):
- autocompletion module: a way to autocomplete the main search field with r2 as provider
- network error handling: how we inform the user from any network trouble through a specific dialog
- DataTables: specific response to large amount of data that need to be presented into a tabular way and being sorted/filtered
- status bar: work in progress, a status bar to present some common tools
- vertical split: new way to represent panels into the UI, the purpose is to allow the user to split his screen without using the previous iframe
- hexdump editor: full reimplementation of the previous hexeditor with a lot of new functionnalities
- disassembly panel: full reimplementation with flag/functions knowledge and other functionnalities, similar to hexdump
This 7 tasks cover all the work I’ve done during the main part, if we want to be more complete, we can add the sanitization of the repository and some issue solving.
Whant to run my work?
If you want to visualize this in your own browser, I recommend you first to install radare2 on your computer from the dedicated repository. Then, you can install with the instructions on the repository or by executing:
Whant to try it quickly? Access the cloud version!
How many challenges?
During this experience, I’ve encountered two kind of challenges: time management, technical challenges and domain knowledge.
About the time management, it wasn’t easy to switch between my courses and programming, especially during exams periods, but, no so much things to improve that part… The major problem, outside this period, was to set up a schedule and keep it straight to it. I would make some recommendations about this problem in a later section.
Second one, technical challenges. Those are the best! A project without technical challenges isn’t very interesting. During this project, I’ve got many challenges, mostly related to performances. One of the most noticeable was about the hexdump editor, when I came to add web workers to the UI to improve the fluidity. You can read a bit on this blog post.
Also, last challenge was my lack of knowledge related to reverse-engineering and how to use radare in command line mode. Hopefully, there were a base on which to work and previous UI to better visualize some aspects. I can’t deny there is a sort of frustration of not knowing all the subject you are building. I can thanks my mentors and the community for helping me in the choice of the commands to make the UI work.
How to continues this project?
This project isn’t complete, and my proposal wouldn’t be completed by the end of this GSoC. There is still some parts to do, I would recommend you to read Original plan deviation part of my article on radare.today for more details about the lacking parts.
Here, I would tell that this project shouldn’t be fully specified with theorical needs and should be governed by the needs of the community or well accepted ideas. Currently, members who are using radare are used to the command line, copying this current interface into a Web UI isn’t necessary the good approach. It’s interesting to ear the needs of the community and visualize how similar tools are used to build a proper UI.
I definitively want to continue working with radare community to help them building the good tool, but I also think that I need to look beyond the initial proposal and take time to identify really useful tools/widgets.
If this Web UI becomes more powerful, more usable, easier to contribute to it, we can expect a better community accession. In short, I think I need to take a step back about what I’ve been done and continue this project by being closer to the needs of the community.
Some advices about futures GSoC
I would like to provide some short advices to the potential futures GSoC students. First of all, I would recommend you to take some time to understand the domain and build a proposal with the most complete specification. It would allows you to have a reference during GSoC and being able to work accordingly. From my point of view, I could have done better for this part. It wasn’t a handicap for the project thanks to the presence of my mentors but a better initial specification could have afford me to be more independent and to establish a better planning.
Also, about time management. I would recommend you to create a proper schedule and constrain you to it. It’s not that easy to work alone and keeping motivation. By keeping it regular (apart from external events: courses, exams, appointments…), it’s easier to stay focus and reduce the urge to do something else. Working late is cool, but it’s not the good option.
Last thing, talk about it. Talk about your problems to your mentors, talk about it outside, to other gsocers in your town. It’s very interesting to be able to share how you work, how you manage your time and you feel with your project!
Thanks
Finally, I would like to thanks:
- The radare community for this project
- The GSoC organization for this experience
- Anton Kochkov for his time and knowledge
- Maijin for his experience with r2, his helpful hand about it and his idea to integrate myself in this project
- Álvaro Felipe and pancake for their advices, patience and time during this summer
And that’s how this experience ends… Without really ended, because I would continue to develop for r2!