¿ªÔÆÌåÓý

Proof-of-concept for community-driven uBITX sketch using Github/PlatformIO/Travis-CI


 

My uBitX arrived in the mail today and I found some time tonight to put together a sample of what is possible for developing our uBitX sketch on Github, similar to what Allard has done for the Bitx40. Farhan has indicated that he is looking for volunteers to help integrate patches () and tools like Git, GitHub, and continuous integration can make that job much more manageable for whoever is doing it.

I forked Farhan's afarhan/ubitx Github repository at . As a proof of concept, I merged the two existing pull requests from Farhan's repository. Then I added some configuration for the PlatformIO tool that has been mentioned on this list before (). PlatformIO allows building Arduino sketches from the command line and it reports many more warnings and errors than the Arduino IDE (unused variables, incorrect return types, incorrect type casts, see ).

Finally, I added configuration for the Travis-CI.org continuous integration tool. This service is free for open-source projects and watches Github for changes and runs a test suite for the new versions. A tool like this is crucial when welcoming contributions from others because it provides some basic assurances that the submitted code will at least compile. As an example, I configured a test that fails if the Arduino code has trailing whitespace (yuck; ).? You can see here that the build "failed" because there was trailing whitespace in Farhan's code, but another change in Git removed the problem and made the Travis build pass .

I just wanted to do this to show what is possible with modern software engineering tools to make it easy and reliable for many people to contribute to the uBitX code. I'd happily welcome Ian Lee's pull request adding further CAT control code for the BitX, or W8TEE's change to actual .cpp files, or improvements to the keyer timing, or who knows what comes next! Then all of us together can be sure that the code meets the (minimal) standards that the community sets out before it gets merged with the "master" branch.

In my dream world, Farhan could keep shipping uBitX kits with the basic code from his afarhan/ubitx repository, while all of us together can iterate new features in a ubitx-ng repository. The hope would be that new builders would get a working radio, but the first thing we would encourage them to do is to get the latest and greatest code from ubitx-ng. Like Allard did with the bitx40, we would maintain hardware compatibility with the radio as delivered and people who wanted to make hardware modifications could make further changes in their own repositories. (Although K3NG has shown with his arduino keyer that many different configurations can be supported in one codebase with some additional effort.)

Thanks for reading this far, and I hope, whatever people decide, that uBitx firmware development will be rapid, reliable, long-lived, community-wide, and use modern software engineering tools, for all of our benefit.

-Neil N0FN


 

¿ªÔÆÌåÓý

Looks like a useful development, Neil. Well done!

Bill VK7MX


On 3/01/2018 5:39 PM, Neil Martinsen-Burrell wrote:

My uBitX arrived in the mail today and I found some time tonight to put together a sample of what is possible for developing our uBitX sketch on Github, similar to what Allard has done for the Bitx40. Farhan has indicated that he is looking for volunteers to help integrate patches () and tools like Git, GitHub, and continuous integration can make that job much more manageable for whoever is doing it.

I forked Farhan's afarhan/ubitx Github repository at . As a proof of concept, I merged the two existing pull requests from Farhan's repository. Then I added some configuration for the PlatformIO tool that has been mentioned on this list before (). PlatformIO allows building Arduino sketches from the command line and it reports many more warnings and errors than the Arduino IDE (unused variables, incorrect return types, incorrect type casts, see ).

Finally, I added configuration for the Travis-CI.org continuous integration tool. This service is free for open-source projects and watches Github for changes and runs a test suite for the new versions. A tool like this is crucial when welcoming contributions from others because it provides some basic assurances that the submitted code will at least compile. As an example, I configured a test that fails if the Arduino code has trailing whitespace (yuck; ).? You can see here that the build "failed" because there was trailing whitespace in Farhan's code, but another change in Git removed the problem and made the Travis build pass .

I just wanted to do this to show what is possible with modern software engineering tools to make it easy and reliable for many people to contribute to the uBitX code. I'd happily welcome Ian Lee's pull request adding further CAT control code for the BitX, or W8TEE's change to actual .cpp files, or improvements to the keyer timing, or who knows what comes next! Then all of us together can be sure that the code meets the (minimal) standards that the community sets out before it gets merged with the "master" branch.

In my dream world, Farhan could keep shipping uBitX kits with the basic code from his afarhan/ubitx repository, while all of us together can iterate new features in a ubitx-ng repository. The hope would be that new builders would get a working radio, but the first thing we would encourage them to do is to get the latest and greatest code from ubitx-ng. Like Allard did with the bitx40, we would maintain hardware compatibility with the radio as delivered and people who wanted to make hardware modifications could make further changes in their own repositories. (Although K3NG has shown with his arduino keyer that many different configurations can be supported in one codebase with some additional effort.)

Thanks for reading this far, and I hope, whatever people decide, that uBitx firmware development will be rapid, reliable, long-lived, community-wide, and use modern software engineering tools, for all of our benefit.

-Neil N0FN


Rod Self
 

¿ªÔÆÌåÓý

Neil,

WOW! You did a lot of work, and your approach has convinced me to overcome my inherent reluctance to 'establishing an account'; I will get started on PlatformIO.

I agree with your approach and support the effort 100%.

Thank you for your energy and insight.

Regards,

Rod KM6SN



On 01/02/2018 10:39 PM, Neil Martinsen-Burrell wrote:

My uBitX arrived in the mail today and I found some time tonight to put together a sample of what is possible for developing our uBitX sketch on Github, similar to what Allard has done for the Bitx40. Farhan has indicated that he is looking for volunteers to help integrate patches () and tools like Git, GitHub, and continuous integration can make that job much more manageable for whoever is doing it.

I forked Farhan's afarhan/ubitx Github repository at . As a proof of concept, I merged the two existing pull requests from Farhan's repository. Then I added some configuration for the PlatformIO tool that has been mentioned on this list before (). PlatformIO allows building Arduino sketches from the command line and it reports many more warnings and errors than the Arduino IDE (unused variables, incorrect return types, incorrect type casts, see ).

Finally, I added configuration for the Travis-CI.org continuous integration tool. This service is free for open-source projects and watches Github for changes and runs a test suite for the new versions. A tool like this is crucial when welcoming contributions from others because it provides some basic assurances that the submitted code will at least compile. As an example, I configured a test that fails if the Arduino code has trailing whitespace (yuck; ).? You can see here that the build "failed" because there was trailing whitespace in Farhan's code, but another change in Git removed the problem and made the Travis build pass .

I just wanted to do this to show what is possible with modern software engineering tools to make it easy and reliable for many people to contribute to the uBitX code. I'd happily welcome Ian Lee's pull request adding further CAT control code for the BitX, or W8TEE's change to actual .cpp files, or improvements to the keyer timing, or who knows what comes next! Then all of us together can be sure that the code meets the (minimal) standards that the community sets out before it gets merged with the "master" branch.

In my dream world, Farhan could keep shipping uBitX kits with the basic code from his afarhan/ubitx repository, while all of us together can iterate new features in a ubitx-ng repository. The hope would be that new builders would get a working radio, but the first thing we would encourage them to do is to get the latest and greatest code from ubitx-ng. Like Allard did with the bitx40, we would maintain hardware compatibility with the radio as delivered and people who wanted to make hardware modifications could make further changes in their own repositories. (Although K3NG has shown with his arduino keyer that many different configurations can be supported in one codebase with some additional effort.)

Thanks for reading this far, and I hope, whatever people decide, that uBitx firmware development will be rapid, reliable, long-lived, community-wide, and use modern software engineering tools, for all of our benefit.

-Neil N0FN


 

Neil, You've got a ticket for a free beer from me.

MAc

I never used Travis before, have to learn...


K4OSS
 

Neil,

Thank you for doing this. I think having a centrally-managed repo for our code is an absolute necessity to maintain the sanity of everyone involved - users and developers!

73
--
K4OSS
Charlie Ross

On Wed, Jan 3, 2018, at 01:39, Neil Martinsen-Burrell wrote:
My uBitX arrived in the mail today and I found some time tonight to put
together a sample of what is possible for developing our uBitX sketch on
Github, similar to what Allard has done for the Bitx40. Farhan has
indicated that he is looking for volunteers to help integrate patches (
) and tools
like Git, GitHub, and continuous integration can make that job much more
manageable for whoever is doing it.

I forked Farhan's afarhan/ubitx Github repository at
. As a proof of concept, I merged the
two
existing pull requests from Farhan's repository. Then I added some
configuration for the PlatformIO tool that has been mentioned on this
list
before (
).
PlatformIO allows building Arduino sketches from the command line and it
reports many more warnings and errors than the Arduino IDE (unused
variables, incorrect return types, incorrect type casts, see

).

Finally, I added configuration for the Travis-CI.org continuous
integration
tool. This service is free for open-source projects and watches Github
for
changes and runs a test suite for the new versions. A tool like this is
crucial when welcoming contributions from others because it provides
some
basic assurances that the submitted code will at least compile. As an
example, I configured a test that fails if the Arduino code has trailing
whitespace (yuck;
).
You can see here
that the build "failed" because there was trailing whitespace in
Farhan's
code, but another change in Git

removed the problem and made the Travis build pass
.

I just wanted to do this to show what is possible with modern software
engineering tools to make it easy and reliable for many people to
contribute to the uBitX code. I'd happily welcome Ian Lee's pull request
adding further CAT control code for the BitX, or W8TEE's change to actual
.cpp files, or improvements to the keyer timing, or who knows what comes
next! Then all of us together can be sure that the code meets the (minimal)
standards that the community sets out before it gets merged with the
"master" branch.

In my dream world, Farhan could keep shipping uBitX kits with the basic
code from his afarhan/ubitx repository, while all of us together can
iterate new features in a ubitx-ng repository. The hope would be that new
builders would get a working radio, but the first thing we would encourage
them to do is to get the latest and greatest code from ubitx-ng. Like
Allard did with the bitx40, we would maintain hardware compatibility with
the radio as delivered and people who wanted to make hardware modifications
could make further changes in their own repositories. (Although K3NG has
shown with his arduino keyer that many different configurations can be
supported in one codebase with some additional effort.)

Thanks for reading this far, and I hope, whatever people decide, that uBitx
firmware development will be rapid, reliable, long-lived, community-wide,
and use modern software engineering tools, for all of our benefit.

-Neil N0FN


 

Neil, this looks great! Looking forward to digging into this once I order my ubitx.


On Thu, Jan 4, 2018 at 12:31 PM K4OSS <k4oss@...> wrote:
Neil,

Thank you for doing this. I think having a centrally-managed repo for our code is an absolute necessity to maintain the sanity of everyone involved - users and developers!

73
--
K4OSS
Charlie Ross

On Wed, Jan 3, 2018, at 01:39, Neil Martinsen-Burrell wrote:
> My uBitX arrived in the mail today and I found some time tonight to put
> together a sample of what is possible for developing our uBitX sketch on
> Github, similar to what Allard has done for the Bitx40. Farhan has
> indicated that he is looking for volunteers to help integrate patches (
> ) and tools
> like Git, GitHub, and continuous integration can make that job much more
> manageable for whoever is doing it.
>
> I forked Farhan's afarhan/ubitx Github repository at
> . As a proof of concept, I merged the
> two
> existing pull requests from Farhan's repository. Then I added some
> configuration for the PlatformIO tool that has been mentioned on this
> list
> before (
> ).
> PlatformIO allows building Arduino sketches from the command line and it
> reports many more warnings and errors than the Arduino IDE (unused
> variables, incorrect return types, incorrect type casts, see
>
> ).
>
> Finally, I added configuration for the Travis-CI.org continuous
> integration
> tool. This service is free for open-source projects and watches Github
> for
> changes and runs a test suite for the new versions. A tool like this is
> crucial when welcoming contributions from others because it provides
> some
> basic assurances that the submitted code will at least compile. As an
> example, I configured a test that fails if the Arduino code has trailing
> whitespace (yuck;
> ).
> You can see here
> that the build "failed" because there was trailing whitespace in
> Farhan's
> code, but another change in Git
>
> removed the problem and made the Travis build pass
> .
>
> I just wanted to do this to show what is possible with modern software
> engineering tools to make it easy and reliable for many people to
> contribute to the uBitX code. I'd happily welcome Ian Lee's pull request
> adding further CAT control code for the BitX, or W8TEE's change to actual
> .cpp files, or improvements to the keyer timing, or who knows what comes
> next! Then all of us together can be sure that the code meets the (minimal)
> standards that the community sets out before it gets merged with the
> "master" branch.
>
> In my dream world, Farhan could keep shipping uBitX kits with the basic
> code from his afarhan/ubitx repository, while all of us together can
> iterate new features in a ubitx-ng repository. The hope would be that new
> builders would get a working radio, but the first thing we would encourage
> them to do is to get the latest and greatest code from ubitx-ng. Like
> Allard did with the bitx40, we would maintain hardware compatibility with
> the radio as delivered and people who wanted to make hardware modifications
> could make further changes in their own repositories. (Although K3NG has
> shown with his arduino keyer that many different configurations can be
> supported in one codebase with some additional effort.)
>
> Thanks for reading this far, and I hope, whatever people decide, that uBitx
> firmware development will be rapid, reliable, long-lived, community-wide,
> and use modern software engineering tools, for all of our benefit.
>
> -Neil N0FN




--
David K4DBZ
Unofficial bitx chatroom:?https://discord.gg/CrHvWFc


 

I've been playing with Visual Studio Code in my day job (Software Engineer) and I see that there is an Arduino plugin for VS Code.? Might be worth looking at.??

I'm not volunteering, my plate is too full already :(? I will be looking at it's basic functionality though

K5KDT
Kevin


 

I see that there is an Arduino plugin for VS Code. Might be worth looking at.
If this is Visual Micro, I have been using it as my IDE for several years.
I really like it as it just seems to me to be a more "real" IDE than the
official Arduino IDE. (Probably having been doing software engineering and
hardware for 45+ years.)

73

- Mark N1VQW