Arduino Library downloader

Hi everyone,

i don't know if someone remembers me trying to make a library downloader for arduino in the old forum.
http://arduino.cc/forum/index.php/topic,1460.0.html

download and Source-Code here:
http://ardulibrary.code-i.de/

sadly i had not much time lately to continue with it (moved to a new home and a bigger project at work) and AlphaBeta leaved to work at another project.
So if someone is still interested and want to work with me i would like to continue with this project.

As always i still like to hear new suggestions for libraries (or new versions of them) to add to the application.

Thanks and happy coding.

This is a good idea that could help newbies who are always having trouble understanding how to install libraries!

The newer versions of the IDE look for downloaded libraries in two places. One is the libraries folder under the arduino-xxxx folder. The other is the libraries folder of the sketch folder.

Upgrading from arduino-0021 to arduino-0022 means that any libraries installed in arduino-0021\libraries are no longer available for use.

This suggests that downloading new stuff to arduino-xxxx\libraries ought to be discouraged.

It appears that this is where your application is downloading libraries to. I'd suggest changing the (default) destination, at least for newer versions of the IDE.

Thanks for the hint.

the application is asking for the correct folder when you start it for the first time.
When there is no sub-folder named libraries it will give a "Directory not found" message.

i believe the new library folder is then under the sketch folder that is in the user-home-directory?
Maybe i can find it automatically then.

Hello Everyone.

i have developed a bit again in my free time.

i made some changes to the Library Downloader (version 0.1.2).
It now uses most of the new XML structure and now uses a 3 column list for the libs.

http://ardulibrary.code-i.de/
And i hope the new library directory will now be found automatically at the first start. i couldn't test it though.

And i also did a small web-application (Sorry for the missing layout and usability mistakes)
where everyone can register itself and can add libraries to the application and web page:
http://www.code-i.de/ardulibrary/

And no, the libraries in the list are not from me.
If a library creator registers, he/she can of course contact me and i will remove/hand over the lib to him/her.

And as always feedback from everyone is welcome.

It seems to have a problem picking up the already installed libraries or is it not meant to be.

Hi and thanks for trying it out.

I am Sorry but recognition of already installed libraries is not possible.
This is because i know of no way to clearly identify the installed libraries.

Maybe i will try to download all available libs from the list and analyze the zipped files with the folders that are already inside the Arduino folder.
But then the application will need to download first every available library to check them.
might be too much when there will be more libraries in the list.

If someone have a better idea just let me know.

Can you just install the lib from the list that you already have? then it will be marked in the application.
Next on my list for the next feature is to implement the filter/search inside the Application.

No problem testing. I think it is a great tool to have. Also good practice to keep libraries in a seperate location.
One question, is there someone that will keep this list of libraries in sync with the libraries on the Arduino website? If not is there a plan in place to do this somehow?

A central repository might be a very good idea.

The plan of the application was to have a central repository for all libraries.

to maintain the libraries there is the web page code-i.de
where every developer can register and upload new versions of their libraries.
they even can be downloaded directly from the web page if someone don't want to use the tool.

once they are uploaded they will be directly available in the application and it should show you that there is a new version.

it is possible that someone else than the developer uploads new libs and versions.

Maybe you should talk to the administrator of the Arduino website to setup a formal arrangement on getting the libraries from the Arduino repository transferred. Or if possible allow one of the forum members to do the job.
After that there should be an update done with every new library that is committed to the Arduino website. If you achieve this the tool will be very valuable.

Alternatively, you could get your tool to work on the Arduino repository. Maybe by special arrangement with the Arduino team.

Anyway, I think the tool is valuable and should be implemented to serve the broader community in the best possible way.

Hi. And thanks for the kind words.

I am not sure if we both talk about the same "Arduino repository".

Because as far as i know there is no central repository for libs from Arduino.
The only place that i know of where "some" of the libs that exists out there in the world of Arduino are in the playground here:
http://arduino.cc/playground/Main/LibraryList

And that is a public wiki where everyone can post and write links.
So some of the libs there in the playground only have a link to an external webpage where somewhere you can find the lib from the author.
And some have a own wiki page where somewhere there you can find a link to the lib. Then some of the libs have a different directory structure etc.
So nothing is standardized there. And i don't believe the Arduino crew have any possibility to get that data in some form that can easily imported from somewhere else.

So please don't understand me wrong.
At most of this i was already thinking how to do it in a way that would be the best before i started with this application and while i was developing it.
And i think the only way is to make a new repository where every library creator uploads their libs in a standardized form.
(i believe i should release a how-to how the structure of the zip-file should look like and maybe implement a check when the lib got uploaded.
But to be honest. Most of the libs should already be in that structure because this is how the Arduino crew recommend it.)

And then i am not a pro c++ coder. I started this project to learn a bit about developing in c++ and to try to develop it in a way that should make it easy to compile it for other operating systems out there.

So i hope there will be support from some library developers. :wink:
I still have many ideas how this project could get better.
It is just mostly hard work to gather all the needed information.

I am referring to the playground list of libraries. I do realize that they are all over the place but I think with encouragement of the Arduino team one could get the contributors to deposit their libraries on your site as well for download.
Having said that I also realize that some contributions are made in order to draw people to a specific site and maybe to sell something to them. I think it is worth the effort to try and convince contributors to support your repository for the sake of the tool and the many coders out there that can benefit from it.

Nice work on this library installer!

You might like to know about a similar effort I've been undertaking for the last year or so... to test and port all "major" Arduino libraries to Teensy (which is 3rd party board my company makes).

Here is the list of all the libraries.

http://www.pjrc.com/teensy/td_libs.html

As you can see, I still have quite a number of them to test. Usually when I add one to this list, I buy the necessary hardware - but often it sits for weeks or months due to lack of available time.

A few months ago, I added a feature to the Teensyduino installer (which automatically adds the Teensy-specific files to Arduino) to optionally install any of the tested libraries. Virtually all the libraries are only a few relatively small files. Just copying them all into installer didn't enlarge it very much, less than 1 megabyte.

Several times I considered making a java-based tool right inside the IDE - which does pretty much the same thing your nice-looking application does. The really hard part, though, is the last of a central database of all the libraries. Maybe my efforts can help, at least a bit, or I might be able to contribute in some way?

Hello and thank you.

If i understand you right you modify the libs so they work with Teensy
that they would no longer work on an Arduino Board?

I am not sure how these libraries could help in this project at the moment then.
But nice to see someone else had the same idea and made a central list for a 3rd party board.
If you know of any way to support this application i would be happy. :slight_smile:

Just to note:
I updated the Ardulibrary after i tested the method of finding the Directory where the libraries should be installed from the application.
I found out the IDE does not create the libraries directory and so now i changed the ardulibrary downloader to read the config-file of the Arduino IDE for the sketch directory and creates the libraries directory inside it.
Now the user should no longer need to search for the correct directory for himself.
ardulibrary0.1.3

beo6:
If i understand you right you modify the libs so they work with Teensy
that they would no longer work on an Arduino Board?

Oh no, not anything like that!! I always aim to preserve compatibility.

In fact, in the process of porting to Teensy, I often find libraries that were hard-coded to work only with the 168/328 chips. I usually add support for Arduino Mega and Sanguino too. For example, the Firmata library, which is now pre-installed on every Arduino Uno and Arduino Mega, became compatible with the Mega boards only because of my work to add a hardware abstraction layer.
To get an idea of the type work I've done, take a look at libraries/Firmata/Boards.h inside your arduino-0022 directory. Several other libraries work on Arduino Mega only because of the Teensy porting effort!

I always attempt to contact the original author(s) and contribute my changes. Usually, when I can find the author's contact info, they publish the changes in a new version. In some cases, I've discovered and fixed bugs too (eg, OneWire was horribly buggy). In a few cases, it's turned out the library was pretty much abandoned code and I've become the de-facto maintainer.

Recently some of the hardware abstractions I've developed for libraries are (finally) being included into the Arduino core. Some libraries (eg, SDfat) have also made use of hardware abstractions I've proposed but haven't (yet) been accepted by the Arduino Team.

I definitely do not patch libraries to work exclusively with Teensy, and in most cases I've gone to quite a lot of extra effort to build robust hardware abstraction layers that support many boards and allow for new boards to be added easily.

Then again, some libraries are already very portable, so all I do it test and document.

But nice to see someone else had the same idea and made a central list for a 3rd party board.
If you know of any way to support this application i would be happy. :slight_smile:

I'll take a look at Ardulibrary soon. Maybe I could publish a page in the format it expects, so it could query the list I have?

Or if there's more work to create a central list, at least the work I've done so far might help. I only tend to test/port/document the "major" libraries. But a quick look at my list shows several that aren't on the 2 lists I saw mentioned in this thread.

Hi and sorry that i have misunderstood your post in that point.
And i appreciate your hard work on that.

you can of course use the XML-Structure that Ardulibrary uses. (don't know if this is even a good name for that application.)
So it can easily be used with it. If you think there are some Values missing in the XML you can add them and i might use them in the application. I used most of the structure that AlphaBeta created and i might have removed some values or just didn't used some of them at the moment.

I am not sure though if i like it that there will be only 1 maintainer to add, change or remove libraries.
On the other side, i think it might be nice if i add your repository of libs as the tested and maintained libraries-list.
And the other one as an inofficial list where every developer can add libraries and new versions.
And the users use this list on their own risk.

If you want to look at the current XML-Structure you can look at this url that is generated out of my current database:
http://www.code-i.de/ardulibrary/xml.php

Multiple libraries can be selected (which is nice) but only the first library selected is downloaded and installed (which is not so nice).

Hello and thanks for testing.

Installing multiple libraries at once is now on the todo list.

Thanks.
I wasn't aware that the new Listview allows multiple selections by default.

Hello.

Also, please get the default button / Enter key to work correctly (or remove the default button property from the download button).

Hello and sorry for my long break.
I have not forgot your reports and this tool.

Also i want to thank jcnossen for uploading a library. :slight_smile:
It should still be compatible with the Arduino IDE 1.0.
Not sure about the libraries though.

So i updated it and it is now possible to install or remove multiple libraries at once.
Download Ardulibrary 0.1.5

http://ardulibrary.code-i.de/

//Edit: fixed now some bugs in version 0.1.5 and i fixed the updating. now as soon as some new version of a lib is published and "install" is pressed, the old version is deinstalled with the old file-structure and the new version is installed.