Binary modules

523 views
Skip to first unread message

Collin Kidder

unread,
Sep 11, 2014, 9:12:24 AM9/11/14
to developers
A couple of projects I'm involved with have the potential to require linking to binary modules directly instead of compiling the source code (perhaps for IP purposes - to add support for proprietary things). Is there any easy way to make the Arduino IDE do this? I'm aware that it runs counter to the open source spirit of Arduino but sometimes one really does need to add support for things that they aren't at liberty to release the source code for.

I know I could do it directly via compiling with a custom makefile but that'd make it difficult for novices to compile, link, and upload the sketch. Editting the platform.txt file would probably work but then every sketch would try to include the binary module.

Would there be any interest in adding a feature like this to the IDE or is it too far out in the fringe?

Tom Igoe

unread,
Sep 11, 2014, 9:25:36 AM9/11/14
to devel...@arduino.cc
Speaking personally here, not speaking for the others in the company, I wouldn’t want that as part of the core IDE. If someone else wants to develop it as a plug-in using the plugin architecture that we’ve inherited from Processing, I wouldn’t block it, but I think the core effort should remain on the code being all open.

That said, I’m willing to listen to the opinions of others.

Tom

--
You received this message because you are subscribed to the Google Groups "Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to developers+...@arduino.cc.

Matthijs Kooijman

unread,
Sep 11, 2014, 9:26:27 AM9/11/14
to devel...@arduino.cc
Hey Collin,

On Thu, Sep 11, 2014 at 09:12:14AM -0400, Collin Kidder wrote:
> Is there any easy way to make the Arduino IDE do this?
I'm not aware of any right now, except modifying platform.txt as you
already suggested.

> Would there be any interest in adding a feature like this to the IDE
> or is it too far out in the fringe?
I don't really care personally, perhaps others have some need of this?

As for implementing this, it could probably be done in a very uninvasive
way - just include any .o files in a sketch or library directory in the
build. It would work for anyone who needs it, without being visible to novice users.

For new-style libraries that have a "src/" directory, it would be
counterintuitive to put .o files in there though. I could imagine have
an "obj" directory or something like that, but not sure if I like that
more than putting them in the "src/" dir...

Just my €0,02,

Matthijs
signature.asc

Paul Stoffregen

unread,
Sep 11, 2014, 11:15:35 AM9/11/14
to devel...@arduino.cc

> I know I could do it directly via compiling with a custom makefile but
> that'd make it difficult for novices to compile, link, and upload the
> sketch. Editting the platform.txt file would probably work but then
> every sketch would try to include the binary module.

If you're really going to do this, you should distribute a package that
adds your own hardware/yourname/arch/platform.txt and
hardware/yourname/arch/boards.txt. Then you can customize the build and
toolchain any way you want. Novice users can select your customized
boards/process in the Tools > Boards menu.

>
> Would there be any interest in adding a feature like this to the IDE
> or is it too far out in the fringe?


This question has come up before. Here's what Massimo had to say last time:


> On 4.03.2011, at 15:54, Pierce Nichols wrote:
>
>
>> Does it break anything to include the possibility?
>>
>> -p
> On 3/4/11 9:57 AM, Massimo Banzi wrote:
>> My heart... is that enough
>>
>> m
>>
>>
> Trying to be sarcastic I provided a very short answer
>
> For me one important factor with Arduino is that you can dig deep into anything... if you want to go down to the individual line of code the source is there for you to dig in.
> I think it's immensely valuable for the beginner who wants to become more experienced by looking at how thing work. They might find a lot of things that need to be fixed and
> be encouraged to provide patches. It's also good because you get experts to look at it and they also provide contributions.
>
> On the other hand we share everything about what we build and we are seeing more and more cases of people who are happy to take but very reluctant to give back to the community that gave them what they are using.
>
>
> m

Rick Anderson

unread,
Sep 11, 2014, 11:46:02 AM9/11/14
to Arduino Developer's List
Paul's suggestion provides a nice solution. Instead of it being in the core of Arduino where it doesn't belong you can do the work to put it it's own platform space.

Also, there needs to exist some leverage that can be used with distributors of binaries to actually release their code under an open source license. If it's simply accommodated the leverage is harder to get.

--Rick

--
You received this message because you are subscribed to the Google Groups "Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to developers+unsubscribe@arduino.cc.



--
Co-founder
Fair Use Building and Research (FUBAR) Labs
http://fubarlabs.org

bob cousins

unread,
Sep 12, 2014, 4:20:37 PM9/12/14
to devel...@arduino.cc
Everyone is at liberty to release their source code :)

I also like Massimo's answer :)

Seriously, are people releasing binaries only for 8-bit AVR chips (or even Due)? That seems crazy, even outside of Arduino environment. You could reverse engineer most things in a couple of weeks, hardly seems worth trying to keep it secret.

I'm guessing from the roundabout phraseology that it is you that is interested in publishing proprietary binaries for Arduino? And presumably, charging for them, since otherwise there is no point.

It would be really nice if people could find ways to make money from Open Source platforms that do not involve turning it into Closed Source.


Pierce Nichols

unread,
Sep 12, 2014, 4:27:38 PM9/12/14
to Arduino Developers
Since Massimo's response was to a question I asked, I probably ought
to explain why I was asking...

I build the Zigduino, which is an Arduino variant built around the
Atmega128RFA1. Atmel provides several networking stacks for this chip,
and several of them, including their ZigBee Pro implementation, are
available only in binary form.

So yes, there are folks releasing binary-only libraries for AVR chips -- Atmel.

-p
> --
> You received this message because you are subscribed to the Google Groups
> "Developers" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to developers+...@arduino.cc.



--
Pierce Nichols
Principal Engineer
Logos Electromechanical, LLC

Collin Kidder

unread,
Sep 15, 2014, 9:14:30 AM9/15/14
to developers
Why I asked is not to sell the resulting binary. In fact, it'd still all be free. So, why do it? Well, sometimes there are certain situations where one has to sign an NDA and not release the details of a certain communications protocol. Let's say you want to interface with XYZ company's electric vehicle motor controller. They give you a specification document and force you to sign an NDA saying you won't disclose the information to anyone. It would still be OK to produce a binary that uses the information. But, open sourcing that part would be out of the question. The whole rest of the program that uses that binary could be open source because you didn't sign an NDA about the rest of it. Sure, an enterprising person might still reverse engineer the binary but that shouldn't violate the terms of the initial NDA.

As Pierce said, there are also libraries for certain things that are only available in binary module form. This is usually because of regulations. If you had the full source code for a ZigBee Pro implementation you could conceivably violate FCC regulations. That's also partly why the Android OS has closed source modules for things like the cellular radio and WiFi. 

Personally I am very pro-open source. Look me up if you want. Yes, I support open source but I don't know how to help you if you can't see that sometimes there are reasons why something might not be able to be fully open source. Don't second guess the motivations of people you don't know. Personally I'd love for everything to be open source but there are specific reasons why at least some limited portions of a project cannot be fully open source. You don't have to like it. I don't have to like it. The project I was asking about will hopefully be fully open source. But, there is a possibility that a small portion of it will fall into a place where it must remain closed. 

And so, I asked a question. I knew at the time that some people would get their undergarments into a twist just considering that something related to an Arduino project might not be open source. But, the fact remains that it is a possibility and people should be somewhat tolerant of that. I will not do it unless it is absolutely necessary.


Reply all
Reply to author
Forward
0 new messages