Code donation

2022-12-04 Thread Fotis Panagiotopoulos
Hello everyone!

Christmas arrived a bit earlier for NuttX as I would like to donate some of
my personal code to the community!

A bit of context.
Over the years that I am working on embedded systems, I have developed lots
of software that I use in my projects.
Some of it is quite general-purpose, or useful for other applications, and
I have found my self reusing it
quite often. In fact, there are some things that I use in practically all
firmwares that I have developed over
the last years.

I always wanted to open-source this software so other people can benefit
from it.
But I never managed to do so. Open-sourcing needs some effort, the software
needs maintenance, documentation
and support, and most importantly in most cases a "porting layer" needs to
be developed.
Last but not least, every project needs a bit of "marketing" and
"advertising" so others can learn about
your work and use it.

For the last couple of years I have been using NuttX a lot, and I have
ported most of the aforementioned software
to NuttX. I believe that NuttX and its community are perfect for me to
publish my code, instead of creating
a ton of small repos, of questionable usefulness and increasing my workload
considerably.

It is very important that I can get immediate feedback from the community,
learn what people are actually
interested in (instead of investing on software that no one needs), and
provide actual and *working*
samples of the code (as NuttX already supports a ton of different boards
and arches).

Using POSIX as the porting layer is also awesome.

That being said, my free time is still exceptionally limited and I cannot
do this myself.
I still need the help of the community, and most importantly I need to see
interest in a piece of
software before putting any work on it.

So, what I offer:
* I offer various codes, fully featured, production ready and tested.
* All code will be offered for free (of course) and under Apache licensing.
* I will provide support to those working on these codes, to my best
ability.
* I will contribute to testing everything integrated to NuttX, as hardware
availability allows me.
* I will do some licensing check, to ensure code is 100% original and mine,
or state the licenses of the projects I borrowed code from.

What I ask for:
I need people that are interested in each of these codes to integrate them
into NuttX apps.
You just have to pick what it is interesting to you, contact me to provide
you with the code,
and integrate it to NuttX. You will need to:
* Add the code into the NuttX apps repo, and ensure Kconfig and the build
system use the code properly (should be trivial).
* Adapt the file format and the coding style to the NuttX one (this may
need some work, but it can also be automated).
* Provide an example app, something that someone can run to use or demo the
new code.
* Test and verify the example app on actual hardware (I may be able to
cross-check it on my hardware too).

The code that I offer (for the moment):


*** Lua v5.2.4 ***
I know that there is already a Lua app for NuttX.
But for anyone using it, it may be beneficial to use my work.

First and foremost, I have ported the eLua LTR patch to Lua 5.2. This patch
dramatically reduces the memory usage of Lua.
In fact, I found out that it is crucial to have this patch enabled for any
actual real-life usage of Lua on any "normal" MCU.

I have created a Kconfig for all Lua configurations, so it can integrate
with NuttX better.

I have also made some other minor changes to the code that might be
interesting for you.
For example there is a simplistic sandboxing option.


*** MQTT Broker ***
Yes, a full-blown, spec-compliant MQTT Broker!
To my knowledge there is no other open-source and portable MQTT broker for
embedded systems.

It follows the MQTT v3.1.1 specification as closely as possible. I think
there is only one violation, needed due to its embedded nature,
but in all practical cases you may consider it fully compliant.

It has been tested with dozens of devices, and it performs greatly.
There are a couple of things that may need to be improved, but are trivial,
and will not affect the normal use of the software.

I know that such a broker may not be your best option for a proper and
large installation of IoT devices, but it is exceptionally useful
for at least the following cases:
* You have only a few devices, isolated (no internet), that you need to
connect, and you want to avoid the cost (and maintenance) of a proper
broker (e.g. Raspberry Pi).
* You need to directly communicate with a device that only supports MQTT.
Instead of going through an external server, you run the server locally,
and communicate with the device directly.


*** MQTT Client ***
A production-tested, robust and quite flexible MQTT client.

I know that there are plenty of such clients available out there, but here
is another one.

Back in the day I tried to use the Eclipse Paho library. I found it to be a
horrible piece of software. Crashes, buffer 

Re: Code donation

2022-12-04 Thread Alan C. Assis
Hi Fotis,

I think all the software you listed are interesting and are useful to
the NuttX community.

As suggestion I think you could put it available on github and help
people to help clean it up and then submit a PR to NuttX.

BR,

Alan

On 12/4/22, Fotis Panagiotopoulos  wrote:
> Hello everyone!
>
> Christmas arrived a bit earlier for NuttX as I would like to donate some of
> my personal code to the community!
>
> A bit of context.
> Over the years that I am working on embedded systems, I have developed lots
> of software that I use in my projects.
> Some of it is quite general-purpose, or useful for other applications, and
> I have found my self reusing it
> quite often. In fact, there are some things that I use in practically all
> firmwares that I have developed over
> the last years.
>
> I always wanted to open-source this software so other people can benefit
> from it.
> But I never managed to do so. Open-sourcing needs some effort, the software
> needs maintenance, documentation
> and support, and most importantly in most cases a "porting layer" needs to
> be developed.
> Last but not least, every project needs a bit of "marketing" and
> "advertising" so others can learn about
> your work and use it.
>
> For the last couple of years I have been using NuttX a lot, and I have
> ported most of the aforementioned software
> to NuttX. I believe that NuttX and its community are perfect for me to
> publish my code, instead of creating
> a ton of small repos, of questionable usefulness and increasing my workload
> considerably.
>
> It is very important that I can get immediate feedback from the community,
> learn what people are actually
> interested in (instead of investing on software that no one needs), and
> provide actual and *working*
> samples of the code (as NuttX already supports a ton of different boards
> and arches).
>
> Using POSIX as the porting layer is also awesome.
>
> That being said, my free time is still exceptionally limited and I cannot
> do this myself.
> I still need the help of the community, and most importantly I need to see
> interest in a piece of
> software before putting any work on it.
>
> So, what I offer:
> * I offer various codes, fully featured, production ready and tested.
> * All code will be offered for free (of course) and under Apache licensing.
> * I will provide support to those working on these codes, to my best
> ability.
> * I will contribute to testing everything integrated to NuttX, as hardware
> availability allows me.
> * I will do some licensing check, to ensure code is 100% original and mine,
> or state the licenses of the projects I borrowed code from.
>
> What I ask for:
> I need people that are interested in each of these codes to integrate them
> into NuttX apps.
> You just have to pick what it is interesting to you, contact me to provide
> you with the code,
> and integrate it to NuttX. You will need to:
> * Add the code into the NuttX apps repo, and ensure Kconfig and the build
> system use the code properly (should be trivial).
> * Adapt the file format and the coding style to the NuttX one (this may
> need some work, but it can also be automated).
> * Provide an example app, something that someone can run to use or demo the
> new code.
> * Test and verify the example app on actual hardware (I may be able to
> cross-check it on my hardware too).
>
> The code that I offer (for the moment):
>
>
> *** Lua v5.2.4 ***
> I know that there is already a Lua app for NuttX.
> But for anyone using it, it may be beneficial to use my work.
>
> First and foremost, I have ported the eLua LTR patch to Lua 5.2. This patch
> dramatically reduces the memory usage of Lua.
> In fact, I found out that it is crucial to have this patch enabled for any
> actual real-life usage of Lua on any "normal" MCU.
>
> I have created a Kconfig for all Lua configurations, so it can integrate
> with NuttX better.
>
> I have also made some other minor changes to the code that might be
> interesting for you.
> For example there is a simplistic sandboxing option.
>
>
> *** MQTT Broker ***
> Yes, a full-blown, spec-compliant MQTT Broker!
> To my knowledge there is no other open-source and portable MQTT broker for
> embedded systems.
>
> It follows the MQTT v3.1.1 specification as closely as possible. I think
> there is only one violation, needed due to its embedded nature,
> but in all practical cases you may consider it fully compliant.
>
> It has been tested with dozens of devices, and it performs greatly.
> There are a couple of things that may need to be improved, but are trivial,
> and will not affect the normal use of the software.
>
> I know that such a broker may not be your best option for a proper and
> large installation of IoT devices, but it is exceptionally useful
> for at least the following cases:
> * You have only a few devices, isolated (no internet), that you need to
> connect, and you want to avoid the cost (and maintenance) of a proper
> broker (e.g. Raspberry Pi).
>

Re: Code donation

2022-12-04 Thread Alin Jerpelea
Hi,

thanks for the offeer

I can help with the task of review and  integrating the code in NuttX if
you push it to github

Best regards
Alin

On Mon, 5 Dec 2022, 05:44 Alan C. Assis,  wrote:

> Hi Fotis,
>
> I think all the software you listed are interesting and are useful to
> the NuttX community.
>
> As suggestion I think you could put it available on github and help
> people to help clean it up and then submit a PR to NuttX.
>
> BR,
>
> Alan
>
> On 12/4/22, Fotis Panagiotopoulos  wrote:
> > Hello everyone!
> >
> > Christmas arrived a bit earlier for NuttX as I would like to donate some
> of
> > my personal code to the community!
> >
> > A bit of context.
> > Over the years that I am working on embedded systems, I have developed
> lots
> > of software that I use in my projects.
> > Some of it is quite general-purpose, or useful for other applications,
> and
> > I have found my self reusing it
> > quite often. In fact, there are some things that I use in practically all
> > firmwares that I have developed over
> > the last years.
> >
> > I always wanted to open-source this software so other people can benefit
> > from it.
> > But I never managed to do so. Open-sourcing needs some effort, the
> software
> > needs maintenance, documentation
> > and support, and most importantly in most cases a "porting layer" needs
> to
> > be developed.
> > Last but not least, every project needs a bit of "marketing" and
> > "advertising" so others can learn about
> > your work and use it.
> >
> > For the last couple of years I have been using NuttX a lot, and I have
> > ported most of the aforementioned software
> > to NuttX. I believe that NuttX and its community are perfect for me to
> > publish my code, instead of creating
> > a ton of small repos, of questionable usefulness and increasing my
> workload
> > considerably.
> >
> > It is very important that I can get immediate feedback from the
> community,
> > learn what people are actually
> > interested in (instead of investing on software that no one needs), and
> > provide actual and *working*
> > samples of the code (as NuttX already supports a ton of different boards
> > and arches).
> >
> > Using POSIX as the porting layer is also awesome.
> >
> > That being said, my free time is still exceptionally limited and I cannot
> > do this myself.
> > I still need the help of the community, and most importantly I need to
> see
> > interest in a piece of
> > software before putting any work on it.
> >
> > So, what I offer:
> > * I offer various codes, fully featured, production ready and tested.
> > * All code will be offered for free (of course) and under Apache
> licensing.
> > * I will provide support to those working on these codes, to my best
> > ability.
> > * I will contribute to testing everything integrated to NuttX, as
> hardware
> > availability allows me.
> > * I will do some licensing check, to ensure code is 100% original and
> mine,
> > or state the licenses of the projects I borrowed code from.
> >
> > What I ask for:
> > I need people that are interested in each of these codes to integrate
> them
> > into NuttX apps.
> > You just have to pick what it is interesting to you, contact me to
> provide
> > you with the code,
> > and integrate it to NuttX. You will need to:
> > * Add the code into the NuttX apps repo, and ensure Kconfig and the build
> > system use the code properly (should be trivial).
> > * Adapt the file format and the coding style to the NuttX one (this may
> > need some work, but it can also be automated).
> > * Provide an example app, something that someone can run to use or demo
> the
> > new code.
> > * Test and verify the example app on actual hardware (I may be able to
> > cross-check it on my hardware too).
> >
> > The code that I offer (for the moment):
> >
> >
> > *** Lua v5.2.4 ***
> > I know that there is already a Lua app for NuttX.
> > But for anyone using it, it may be beneficial to use my work.
> >
> > First and foremost, I have ported the eLua LTR patch to Lua 5.2. This
> patch
> > dramatically reduces the memory usage of Lua.
> > In fact, I found out that it is crucial to have this patch enabled for
> any
> > actual real-life usage of Lua on any "normal" MCU.
> >
> > I have created a Kconfig for all Lua configurations, so it can integrate
> > with NuttX better.
> >
> > I have also made some other minor changes to the code that might be
> > interesting for you.
> > For example there is a simplistic sandboxing option.
> >
> >
> > *** MQTT Broker ***
> > Yes, a full-blown, spec-compliant MQTT Broker!
> > To my knowledge there is no other open-source and portable MQTT broker
> for
> > embedded systems.
> >
> > It follows the MQTT v3.1.1 specification as closely as possible. I think
> > there is only one violation, needed due to its embedded nature,
> > but in all practical cases you may consider it fully compliant.
> >
> > It has been tested with dozens of devices, and it performs greatly.
> > There are a couple of things that 

Re: Code donation

2022-12-04 Thread Tim Hardisty
I have interest in your settings storage, with the probability of adding yaml 
output since I was going to do something similar for my current project (once I 
get over the pain of getting NuttX fixed for the arch I'm using).

As have been suggested, maybe push it to github and I/we can clone what's of 
interest, see if it makes sense, then get it working right for NuttX and do a 
PR...in the fullness of time (i.e. I'm a slow worker!)

On 04/12/2022, 16:55, "Fotis Panagiotopoulos"  wrote:

Hello everyone!

Christmas arrived a bit earlier for NuttX as I would like to donate some of
my personal code to the community!

A bit of context.
Over the years that I am working on embedded systems, I have developed lots
of software that I use in my projects.
Some of it is quite general-purpose, or useful for other applications, and
I have found my self reusing it
quite often. In fact, there are some things that I use in practically all
firmwares that I have developed over
the last years.

I always wanted to open-source this software so other people can benefit
from it.
But I never managed to do so. Open-sourcing needs some effort, the software
needs maintenance, documentation
and support, and most importantly in most cases a "porting layer" needs to
be developed.
Last but not least, every project needs a bit of "marketing" and
"advertising" so others can learn about
your work and use it.

For the last couple of years I have been using NuttX a lot, and I have
ported most of the aforementioned software
to NuttX. I believe that NuttX and its community are perfect for me to
publish my code, instead of creating
a ton of small repos, of questionable usefulness and increasing my workload
considerably.

It is very important that I can get immediate feedback from the community,
learn what people are actually
interested in (instead of investing on software that no one needs), and
provide actual and *working*
samples of the code (as NuttX already supports a ton of different boards
and arches).

Using POSIX as the porting layer is also awesome.

That being said, my free time is still exceptionally limited and I cannot
do this myself.
I still need the help of the community, and most importantly I need to see
interest in a piece of
software before putting any work on it.

So, what I offer:
* I offer various codes, fully featured, production ready and tested.
* All code will be offered for free (of course) and under Apache licensing.
* I will provide support to those working on these codes, to my best
ability.
* I will contribute to testing everything integrated to NuttX, as hardware
availability allows me.
* I will do some licensing check, to ensure code is 100% original and mine,
or state the licenses of the projects I borrowed code from.

What I ask for:
I need people that are interested in each of these codes to integrate them
into NuttX apps.
You just have to pick what it is interesting to you, contact me to provide
you with the code,
and integrate it to NuttX. You will need to:
* Add the code into the NuttX apps repo, and ensure Kconfig and the build
system use the code properly (should be trivial).
* Adapt the file format and the coding style to the NuttX one (this may
need some work, but it can also be automated).
* Provide an example app, something that someone can run to use or demo the
new code.
* Test and verify the example app on actual hardware (I may be able to
cross-check it on my hardware too).

The code that I offer (for the moment):


*** Lua v5.2.4 ***
I know that there is already a Lua app for NuttX.
But for anyone using it, it may be beneficial to use my work.

First and foremost, I have ported the eLua LTR patch to Lua 5.2. This patch
dramatically reduces the memory usage of Lua.
In fact, I found out that it is crucial to have this patch enabled for any
actual real-life usage of Lua on any "normal" MCU.

I have created a Kconfig for all Lua configurations, so it can integrate
with NuttX better.

I have also made some other minor changes to the code that might be
interesting for you.
For example there is a simplistic sandboxing option.


*** MQTT Broker ***
Yes, a full-blown, spec-compliant MQTT Broker!
To my knowledge there is no other open-source and portable MQTT broker for
embedded systems.

It follows the MQTT v3.1.1 specification as closely as possible. I think
there is only one violation, needed due to its embedded nature,
but in all practical cases you may consider it fully compliant.

It has been tested with dozens of devices, and it performs greatly.
There are a couple of things that may need to be improved, but are trivial,
and will not affect the normal use of the soft