Comments on Arduino 1.5 Specifications

Cristian,

Overall, I believe 1.5.4 is a huge improvement over 1.0.5.

For years I've been patching/fixing lots of libraries (often fixing bugs and improving performance, not just porting to Teensy), and since releasing Teensy3 one year ago, I now patch nearly all of the ones that ship with 1.0.5. My aggressive patching of files has worked reasonably well for only 2 reasons: #1 most other 3 party board makers don't put much work into porting/patching libraries, and #2 they tend to fork the entire IDE.

In designing this system, I understand you're facing a lot of trade-offs. From what I know so far, not having actually worked closely with the code yet, it looks pretty good.

If I could ask you to consider just one thing as you continue to develop the software, please keep in mind many library authors abandon their project after a period of several months to a year or two. Long-term, depending on the original author to accept and merge patches is just not realistic.

I would ask you to provide two file for arch/sam and arch/avr folders, instead of one full of #ifdefs. In this case Paul becomes responsible for arch/kinetis and you for arch/avr and arch/sam. When I receive updates from you, I need to just copy your file straight in their specific folder.

That's actually very nice, for the source code, at least from my point of view. :slight_smile:

I'm sure it doesn't sit well with tool authors using Makefiles. In fact, on my long-term todo list is developing a better Makefile. It's also certainly going to need a small collection of binary helper tools to be compatible with 1.5.X. Extra work, but I'm really ok with extra work! I'll only want it to be stable do I don't have to redo all that extra work....

In any case what's the alternative you're proposing?

Well, one sore spot would be modifying the library.properties file. For the code, in theory, all my platform specific stuff goes in its own location. But do I get to create my own .properties file that augments the original? Or do I have to modify the one and only library.properties file for that particular library?

Hopefully the library author doesn't feel merging stuff to that .properties file is too burdensome. But what if the library is no longer maintained? Then I need to patch its library.properties file. If my installer has to change that file, then we're back into a similar situation as 1.0.X, where I'm likely to "install" files that destroy changes made by other 3rd parties.

Then again, this is all still pretty hypothetical. So far, I believe I'm the only 3rd party that's patching any substantial number of libraries without forking the entire IDE. But nonetheless, it's a non-ideal situation that could become a problem if someone else starts patching libraries.