Arduino Libraries Census and Repository

Dear Friends

With Arduino 1.0 approaching we thought we could take some time to understand better the different libraries for Arduino out there including the state of compatibility with 1.0

At the moment , finding a library for Arduino is quite complex for a user (especially for beginners) because there is no official registry of libraries and some these libraries are abandoned although they might still be useful with some maintenance.

As part of the current effort to open up as many parts of the Arduino process as possibile we have thought about how to improve the situation and here are some actions undertaken right now:

  1. we are working on a database of every Arduino library available. This will be published on our website as soon as it's done. In the meantime library authors can help us by entering their library in the "database" through this link

Please add your library specifying all the required info so that we can contact you in case we need more info.
The only requirement is that the library must run on at least one of the boards listed in the Arduino IDE.

  1. We have created a new repository for Arduino Libraries on github available here: Arduino Libraries · GitHub
    we encourage every library author to migrate their code there (especially if they are not using a sourcecode repository) . We'll create projects for each library managed by the original library author. This will allow each library to have a documentation page and an issue management page.
    In the future we expect this repository to be part of a system that will make it very easy for the users to select and install libraries directly from the ide being warned of any update available for the ones they currently have installed.

It's a bit of a large project in a way but in the long run it will create a nice repository of very useful code.

I hope you will join this exciting project!!!

As usual comments and suggestions are welcome.

PS: Inclusion in the repository doesn't mean the libraries will be automatically included in the IDE, we hand pick the few libraries we distribute but we can create a useful service for every user.

Massimo

Hi Massimo, the link to github is not working. Could you check it please?
F

fixed

it's empty at the moment.

m

Hi Massimo,
this idea is making me shiver a little bit, I hope for the wrong reasons.

First of all, who would be able to commit to these libraries ? Would a library's author be the one to accept patches ?
This github repository would have different permissions for each subproject ? (so that only the library author and whoever he choses would be able to update it ?)

Existing repositories with working libraries wouldn't be penalized unless they move to this repository because they would be less "official" than the others ?

Would there be requirements to fulfill to have your library be part of this repository ?

What about licenses and copyright ? The projects out there are heterogeneous in this aspect.

Isn't the database you are working on enough ?

Thanks for reading,
Riccardo Galli

Hello Riccardo

No prob, I'm used to it. conspiracy theories are the norm when you're trying to do something good for the community :slight_smile: :slight_smile:

Each repo will be managed by the original author. It's not mandatory to have it there. They will need to be published with an open source license like Arduino (preferably LGPL)

We want to provide a space where libraries can be "kept alive", sometimes people stop working on them and they tend to "rot" so we want them to continue being useful.

The requirement is that the code needs to work with the boards listed in the Arduino IDE (they need to work out of the box otherwise it's hell for beginners).

This could lead to some degree of automation when people want to add a library to their IDE we could let them pick from this repo and keep them up to date.

Have you written any libraries?

m

riquito:
Existing repositories with working libraries wouldn't be penalized unless they move to this repository because they would be less "official" than the others ?

My thoughts exactly. I've put my own libraries on bitbucket.org only last week, because I've experience with Mercurial, not with Git. Other people might prefer SVN. Or Bazaar. Or none at all. Can you make sure these are deemed equally "official" as the libraries on the Git repository?

Also, and perhaps I'm not well informed, but I'd like to see a more extended and standardized way to integrate a reference of third-party libraries in the IDEs. I think that's more beneficial for the users of the library than a large GIT repository, which might be quite alien for beginners.

Finally, my project is a package of libraries, which can be used stand-alone but work nicely together. Would such package-construct fit in your ideas of the repository?

Hi,
I have no doubt that dealing with a whole community is hard :slight_smile:

I have helped my brother in writing a couple libraries (he just wrote on this topic, he's Federico and publish on github at federico-galli (Federico E. Galli) · GitHub).

My github-fu is certainly low, I didn't notice the addition of Organizations to github, I thought it was just a word you used to describe the repository.
Now I see that is indeed possible to have a fine-grained permissions' control.

I'd prefer however that the arduino IDE would use the database you mentioned instead of just this repository to import libraries.

Thanks for your work on Arduino,

Riccardo

Hi,

it is nice to see that something like this is finally coming.
I have worked on a project just like this with not so much success here:
http://arduino.cc/forum/index.php/topic,63215.0.html

it works and everything. But it is hard to get all the libraries together.

I look forward to the official solution to this.

beo6

That's a nice project! I'm sorry I didn't know about it.
why don't we make your work part of the official library database?

I think it's much better to build upon what you did than re-inventing the wheel.

m

this is a great idea, a one stop shop for libraries, working libraries, i always used this as a refrence when i needed to find something when i was starting out
http://www.freeduino.org/index.html they have a huge list of how to interface just about anything with an arduino, from libraries to wiring different sensors.

I have to second your suggestion. This library downloader is a very good idea and very handy for beginners and pros. I have tested his project and it works very well. Please use it for the benefit of all.

Howdy Massimo,

When I saw you were creating some kind of overarching, official (or semi-official) source hub I was so excited I almost wet my pants. Then I wondered why no one had done it yet!

Anyway, I'm ready to drink the coolade and I've moved the two lib's I'm maintaining over to github from sourceforge. After relearning how to do everything in git that I could do at sourceforge, Im now ready to add my repo's to your page. Now I'm stumped. Just how do I add my repo ( GitHub - Ltalionis/PinChangeInt: A library for Arduino to use Pin Change Interrupts. ) to your org?

Some kind of market/appstore for Arduino?! Great idea... but I don't like the dependence on github. Wouldn't it be cooler to allow any kind of repository or just zip downloads of (stable!) releases? I'm so used to my beloved subversion repository that I don't really want to switch that to git :wink:

And what is this Arduino1.0 API compliance?

Following the census i have registered my libraries, however, meanwhile i started to upgrade my libs to be Arduino 1.0 compliant. So the information i entered on the census is wrong.

Some questions here:

  • How is this information from the census used?
  • Is it used at all?
  • How can i update the information for my libraries?
  • What is the overall status and what will be next steps?

Oliver

I think this is a very good idea and would love to see it implemented. But I think you should take a look at XBMC’s addon system which I feel would make a very good model for the potential arduino library repository.

Here is a quick description of the XBMC system. I think nearly every point would relate to how the arduino system could work.
• Addons in XBMC are largely user generated
• There is an official repository which comes automatically installed
• Only 1-2 official addons are installed by default
• In order to get an addon into the official repository it must comply with some rules. And have your code in any revision control system you choose, you simply have to provide a download link
• Because your addon is in your own revision control system under your own user name you can choose which patches are included/excluded. Also if you choose to stop maintaining the project, a new user can fork your code and update/improve your code and re-submit it as a new addon.
• Every addon has to have a small xml file which explains the basic capabilities and compatibilities of the addon, this is used to ensure that the
• This xml file is used to categories the addon within the XBMC addon list and to ensure only compatible addons are available to install.
• The addon viewer within the XBMC allows the user to quickly install/uninstall addons. It also allows the user to configure the addon (probably not relevant to ardunio)
• The XBMC team and the addon developer can mark addons as “broken” which stops user from being able to install them.
• The user can enable automatic updating of addons, or leave it set to manual.
• Developers can create 3rd party repositories, which the user can easily install alongside the official repo. This allows developers to distribute addons which don’t comply with the rules on the offical repo or just to store all their addons in their own repo (useful for collecting foreign language addons etc)
• Addons can still be installed manually, so distributing the addon via a repo isn’t a requirement.

If there was this sort of system for libraries would be amazing. I would require some significant work from the arduino team to set this up and you have to be careful not to put too many additional steps on the library developers. But this works pretty well for XBMC.

Hello Massimo,

Do you open the census to everybody? I think that would be good to know which libraries are in the census for avoiding to repeat them.
Another thing, I think the repository must have 2 parts, one for arduino 1.0 and another for before versions.

It's only a suggestion :wink:

Having something like the XBMC's adddon system sounds like a good plan, but wouldn't a package manager be a more logical choice? A package manager would, for example, make it much easier to handle dependencies between packages. There are many package managers to choose from, but I personally think that the cross-platform, open source package manager Zero Install would be perfect for this. One of the nice things of 0install is that packages can be managed both centralized and decentralized.

mrTee:
Having something like the XBMC's adddon system sounds like a good plan, but wouldn't a package manager be a more logical choice? A package manager would, for example, make it much easier to handle dependencies between packages. There are many package managers to choose from, but I personally think that the cross-platform, open source package manager Zero Install would be perfect for this. One of the nice things of 0install is that packages can be managed both centralized and decentralized.

I wasn't aware there were such things readily avaliable; I assumed the arduino team would need to start from scratch, which is why I used XBMC as a model. But if someone else has done the leg work for you then that seems like a easiler, quicker and better solution.

Is this still the way to publish libraries in Arduino Libraries · GitHub ??

spicajames:
Is this still the way to publish libraries in Arduino Libraries · GitHub ??

No, I don't think that idea was ever fully implemented. The modern equivalent is to submit your library to Library Manager. For more information see: Library Manager FAQ · arduino/Arduino Wiki · GitHub