You are here

Trying understand the project architecture

10 posts / 0 new
Last post
Trying understand the project architecture

Hi there,
I'm a software dev with a Linux and networking background. My experience is with Golang, JS/Node.js, Python, Shell.

Although I am not really volunteering for anything just yet, I am trying to understand the project better at this point.

Would anyone be able to help me with these questions:

  • What is the architecture of the major system components? e.g. I see uhttpd I'm assuming for the UI? 
  • What is some of the background of these components?
  • What languages are primarily used? I see a mixture Perl, Python, Lua, JS (Angular)
  • What repos handle which pieces?
  • I see Dockerfiles all over the place, are y'all going to run docker on the radios ?
  • What is some of the important feature work going on right now?


w6bi's picture
Development info

Welcome, Eric!   I'm not one of the devs, but rather just an end-user and frequent tester.  Maybe I can get you started.
The AREDN code is based off the OpenWRT source code.   I'm not sure what all they throw away and what they add on, but that's the starting point.

Joe, AE6XE does the bulk of the new device migration activities.     If OpenWRT supports a device, it would help move ham networking forward, and users request a migration, he'll take a look at it.

Over and above the ongoing github activity (requested enhancements, reported bugs), I know there's an ongoing effort to migrate the UI from Perl to Lua.   Ray, KK6RAY and Darryl, KD5LQ are a couple of the devs working on that.

I'm sure there are other long-term goals, but I'm not especially privy to them.  I'm sure the devs and senior users will chime in.

Good luck!

Orv W6BI


K5DLQ's picture
Hi Eric and welcome to the

Hi Eric and welcome to the AREDN community!

  • AREDN is built on top of OpenWRT
  • The current user interface is a combination of Perl, Lua, and some shell scripts delivered via uhttpd
  • We are undertaking a new user interface project right now that will be based on Angular for the front-end with Lua server-side API's.
  • aredn_ar71xx repo is the primary (server and Perl ui) repo
  • aredn_ui is future new UI (Angular)
  • documentation is the docs repo that drives the online help on the website (Docs menu)
  • builder is the repo that contains the Docker build container that is used for all our builds
  • There are a few other repos that are used for backend/project (non-node) related functions.

The primary focus right now is on the Angular front-end conversion (and associated backend API build-out to support it).  We will be removing Perl (and all the Perl libraries) once completed in order to save flash space.

We are also working on Access Point client mode.  (ie.   associate a node to a wifi access point to get internet access for the node)
If you have Linux device driver skills, let me know.   We also need to take a look at porting part97 features to the ath10k ("AC") driver.

Happy to answer any more questions.  I hope this helps.

AA7AU's picture

"aredn_ui is future new UI (Angular)" - is that the original Angular.js or the new Angular-2 [or -8]?

If it's the new version, do you think that this US$9.99 current special would be appropriate/applicable?

- Don - AA7AU

K6AH's picture
Not a user document...

Are you wanting to become an AREDN developer, Don?

Andre, K6AH

AA7AU's picture
Dunno, but I like to help out

Dunno, but I like to help out. The new UI definitely will be a challenge, but certainly a big positive [and needed] step forward for AREDN. Not sure I'm a potential. My first professional [interactive/timesharing] programming job was in 1969, so I'm a bit old school. Last part of my business after 1995 was focused on networking and internet for small to medium biz. My focus has always been on the end user side of the propeller hat and/or education. Done quite a bit so far as an AREDN user, but I kinda end up being a generalist rather than a specialist. Just wonder if my mind could handle the newer programming approaches. I'm still locked into IF ... THEN ... transactionals.  Thanks.

- Don - AA7AU

Thanks W6BI and ​K5DLQ!

Thanks W6BI and ​K5DLQ!

I initially got wind of Aredn because I am trying to see about setting it up in my area, but when I started hearing about the project itself I began to realize I have experience in a few areas of the project.

I have never used Lua, but it seems close enough to Python that I could plug into there very quickly. It ia nice to hear that yall are replacing the Perl (which is detest quite strongly). I assume that the choice of Lua is because of uhttpd (never used uhttpd, so I'm unfamiliar with it)? Its cool to hear yall are going the SPA/REST route on the GUI. Heck, just having the REST API could allow for centralized management in the future.

I have used React and Bootstrap before, but I hear Angular has a very steep learning curve so i dont know if I would have time to help there. I also dont have skills with device drivers, so I cant help you there. 

Not committing to anything yet, thought. I need to figure out how much time I can reasonably give.

K5DLQ's picture
no worries.   Take a browse

no worries.   Take a browse at the issues list and see if you can help with any of those...

AE6XE's picture
KI5TEX,  there are many

KI5TEX,  there are many technical aspects of the mesh nodes, that none of us are experts in all the areas.   There are a couple of Angular job-by-day Developers helping the rest of us improve our skillset.    Other technical areas the roles are flipped.   As a developer, there will be areas to contribute.   We're always happy to  include more contributors.


Thanks for pointing me in the

Thanks for pointing me in the right direction.

Having spent some time looking around a little over the last week, it look like there is a lot more than just more than learning Lua. Checking at all the intricacies of OpenWRT, LuCI, uci, I think it will take me quite a bit of time being that most of this has no overlap with my day job. I'm going to be in around for the foreseeable future as I am looking at try to get this setup in my area, but it will take me some time probably before I can start writing any code.

On the other hand, I am very familiar with Sphinx and RST so I can help with any docs work yall might need in the near term. Do yall have any outstanding docs tasks right now?

EDIT: I think I spoke too soon. Having got a radio and loaded the firmware, I'm actually finding it super easy learning stuff as a go. I have already created a test REST API endpoint. 

Theme by Danetsoft and Danang Probo Sayekti inspired by Maksimer