Development Progress— MASQ Project Aug 2020
As we pass halfway through the crazy 2020 year to be remembered, work still goes on in Development in MASQ project. While Tech Lead Dan Wiebe still dedicates many hours of free time to the project codebase, several key areas have been spotlighted for priority development.
Below we will outline current priorities, and give an update from Stew who has been leading the QA process with community testers alongside Dan.
Design Meeting 29 July:
KauriHero and 2 other committee members held a Design meeting with Dan to discuss development priorities with the software. It was confirmed that the software is currently able to operate from a Command-Line interface on all 3 platforms (Windows, Mac and Linux), and many of the errors that caused the old software GUI to crash were made friendlier and easier to work with. The entire operation can be set up with config in both interactive and non-interactive modes, which means users can choose to progressively set or change settings while software is running (you don’t have to return to Command prompt each time you interact with the
masq software instance).
After some detailed conversation it was determined there are two main development priorities at the moment:
- The card GH-317 UI Interface Documentation” — which will provide structure to the code and simply make it much easier for someone to develop a more advanced UI or Graphical User Interface (GUI) to work with the software — This is HUGE because it means that other developers will be able to help make the software easier to use and much simpler to interact with!
- The Port Forwarding component required — this was often a hurdle for users to get set up to make Node actually work on their machine. This is the part of configuration where the user has to ‘poke a hole in their router’ so that the MASQNode can communicate properly with the Internet securely. Once this item is addressed and solutions are developed, it will be many times easier for users to actually run Node successful and connect to other Node neighbors — this is the foundation of the mesh network itself.
One last comment here is we do publicly have a bit of a ‘secret admirer’ who has been watching us, and they have mentioned on Twitter they would consider trying their hand at a GUI for the project once GH-317 is completed.
Happy to see the support out there!
Quality Assurance and Testing Update — Stew
Stew has been a rock in the MASQ community and has tirelessly led the testers and quality assurance group of volunteers through the development cards being completed and committed into the GitHub code base
Below is a summary from Stew:
This is just a brief summary of some of the things Dan and the test team have been working on in no particular order.
Apologies if some of this still doesn't make any sense but some of these things can’t be explained much simpler without you either having some knowledge about MASQ, software development or without writing a full essay to simplify it.
A lot of work has been done on ‘error handling’ and setup commands, making the Command Line Interface a lot friendlier and easy to use.
Bugs have been squashed, failing tests have been fixed and all of this has been done across three platforms — Linux, Windows and Mac.
I am no techie, what I have learnt (which is very little) is thanks to Dan, but it has become abundantly clear to me that what was previously passed off as a ‘working version’ in a past project was nowhere near to being ready….and we still have a lot to do.
The software now operates with a Daemon (which will later be properly ‘daemonized’ during the OS Startup and be running in the background). The Daemon is basically a background process that isn't connected to the internet. It acts as a root-privileged target of the UI and can start up the Node. It tells the UI where the Node is so the UI can communicate with it. Currently the UI is the CLI run from the Command Prompt
Here are most of the cards that have been completed in recent months!:
- Make the CLI capable to both non-interactive and interactive operation — this is a really important since interactive mode allows
masqto keep running and lets broadcast messages from the Daemon or Node to be displayed. It allows successive
masqcommands without CLI returning to the command prompt each time
- Environmental variables containing Node configuration now begin with ‘MASQ_’ rather than old prefix
- Added entries to the
--dump-configso they are reasonably informative, along with the entries for
- Updated dependencies
- Modified the Daemon to keep track of whether processing the setup message actually changes the pending setup state, i.e. the Daemon should broadcast setup changes
- Make Daemon sensitive to defaults, i.e. differentiating between whether the value is a default-value or is specified by the user, or possibly something else
- Modify TNT so that it can work from any number of binaries directories, running different versions of the binaries on different VMs or containers
--dns-serversan official value
- Daemon removes setup attribute when the value is set to null
- Daemon modified to only start in root or administrative mode
- Modified the syntax for configuration parameters
- Cleaned up the Continuous Integration (CI) — making the build time tolerable
- CLI New execution mode — Node listens for connections on a defined port
- Setup state modified to retain the settings used to start the Node and made immutable until the Node goes down
masqis run when the Daemon isn’t running, it now gracefully terminates with an informative message instead of panicking
- Daemon will sense that
masqis running, informing you to shut it down before trying to start it again
Again special thanks to all our volunteers, and especially the testers alongside Stew — aclearsky, bertolt and several others in the fold! WE APPRECIATE YOU!
Also we are grateful for all the wider community support and the active listeners, observers and even the skeptics who keep us accountable.
We know things can be awkward, quiet and unpredictable at times but we aren’t losing sight of the purpose of all this effort — a community based project for the Internet Community of the future! One that has freedoms promised and secured by the users themselves, no matter where they live or operate from.
Take care of yourselves, BE KIND and stay safe