Week 3 - BMX7 Documentation

Documentation PR

A documentation PR got submitted last week, by me. This might seem counter-intuitive concerning that I’m working on the cryptographic tunneling plugin of bmx7 and certainly is out of scope of the goals set. But follow my train of thought to explain why it’s of the utmost importance.

During the Community Bonding period, my goal was to study the current documentation and codebase. Doing this seemed hard; because the root README of the bmx7 github repo is very detailed, but somewhat unfriendly to newcomers since it spans into multiple lines and jumps to an amplitude of concepts and case-scenarios. For this reason I had created a separate branch of mine where I split the documentation into mouth-sized pieces.

The idea for the rework of the documentation was sparked when I noticed this GH issue. I figured I wasn’t the only one that was somewhat intimidated to start and I began works. The end result/decisions that were made are:

  • Break README in different sections according to context.
  • Refactor README by adding the bmx7 logo (yes it exists; no it’s hard to find), fixing the ToC and including an FAQ section for newcomers.
  • Move documentation to an isolated /doc/ folder
  • Move source to an isolated /src/ folder
  • Add initial Debugging instructions
  • Create an editorconfig base

While things that we would like to be added, but the side-tracking of them from the project goals makes them infeasible right now are:

  • Dedicated and rich Contributor resources
  • Bigger FAQ section, synopsizing an amplitude of newcomer questions
  • Mermaid diagrams to portray topologies on examples across /doc/

Why this was necessary to happen? Well my goal of the first phase is to read through bmx7 and wireguard docs and by being able to explain bmx7 to other people is essentially what it means to know/understand it.
Another reason is that GSoC is supposed to bring FOSS communities close with newcomer developers. A person gets assigned a project of his/her choice and the community accepts the project, so the two can establish a relationship that’s gonna be (ideally) long-term. GSoC’s ultimate goal is neither academic excellence nor breath-taking results.
It is certainly important to achieve the project’s goals and be of help to the community, but the most important is to integrate into it.

For these reasons, these changes happening are important to me and more importantly to the project.
I hope I’ve taken care of them responsibly and successfully; feedback is welcome and more additions are soon to come.


In other news, some development groundworks were put forward:

  • Refactored completely my vimrc to work through the source more effectively.
  • Reached a functional milestone of this blog
  • Commented throughout the code areas that are gonna be useful and I have to document with comments.
  • Contacted the WG team to inform them of the project and ask for allowance to use the BMX7 + Wireguard banner.

This week’s goal

For this week the goal is to: Implement the initial wrapper calls to WG.
What this pretty much means is that for starters we want to announce public wg keys through bmx7 description updates. We pretty much want to call userland WG for this to happen. Another idea is to use the minimal and quirky embeddable-wg-library. We’ll see..

Some other goals I would like to see me achieve are:

  • A Wireguard article explaining in more depth and with source code examples how secure tunneling is achieved.
  • Port mlc functionality to mlc-ng and write an introductory article on it.
  • Prepare an overview of what happened during the first coding phase for the Freifunk Blog.