Library Repository

Hello, I was thinking about this and thougt I'd let the idea out. It would be nice if the Arduino had a "playground" for libraries. A CPAN/Pear but for the Arduino. Everyone could add new libraries; this would mean the number of accessible devices to the more newbie users would see a great boost. The repository could be accessible by SVN or something so that it would be easy to add/update libraries.

What do you guys think?

I'm for the idea. Libraries at the moment need a little bit of work to get going. It would be nice if they were one click install and autoupdating.

I agree too. What about a setup than runs off a well organized svn repository? Also, I am curious how many libraries will end up as part of the official distribution. I actually just asked on the dev mailing list today about the goals for that. Certainly, those would require some vetting. Something like this sounds better so that the included libraries could remain a small core set, but users could install new libraries from the repository perhaps. It would be nice if it could have some sorts of constraints on it to just keep it organized. Also, what about different versions? For example, I just saw the posted DS1307 real time clock library, and I just wrote one too. It would be cool if they could be merged and honed over time instead of having multiple versions pile up.

While I'd like to have anything that helps people get and use libraries, I'm curious what the advantages of a repository is over just using the playground. How would users get the libraries? Right now, you just download a .zip file and put it in the right directory. With a repository, would they need to install subversion and check out the code? Or would the subversion repository be just for development? Who would have access to it?

I'm a bit wary of including lots of third-party libraries in the distribution. I believe Processing tried this for a while but had to stop because they couldn't rely on the library authors to update their libraries as the core was revised. I don't know if we'd have any better luck, although we could give it a try. I'd also like to see the APIs vetted on the developers list for consistency.

OTOH, I know I haven't done a very good job of updating the libraries page (http://www.arduino.cc/en/Reference/Libraries). If you know of libraries that aren't listed there, please let me know and I'll add them.

Hey Folks, Those are some good points as to potential problems with svn, as well as issues with inclusion in the main distribution. I am going to be updating and reorganizing the Playground in the next few weeks. I will post that event in its own thread, but in relation to this discussion, does anyone have any thoughts as to how to improve the playground so it hosts libraries better? Right now, the plan is to sort the playground by functionality, so I think it would be ideal to mix library files in with other code so people only need to look one place for a certain chip or type of functionality. On the other hand, a way to browse through just available libraries could be good too? I think wiki allows catagories, or some kind of labels, so perhaps we could at least have one for libraries? How about a recommended format for how they are posted? Anyone insterested in offering up a guide as to good practices for posting a library?

thoughts?

With a repository, would they need to install subversion and check out the code? Or would the subversion repository be just for development? Who would have access to it?

I was thinking of just having a Java svn client (there are a couple) built in. Weekly it downloads a list of libraries and their versions, allows you to update the installed libraries and also allows one click library installation.

Pretty straight forward.

It’s certainly an interesting idea, and I think you’re identifying some important problems that people have finding libraries now, but I’m not sure if this solution fits in with the style of the rest of the software. Right now, there are very few dialog boxes or windows in the software, as the idea is to provide a very simple interface. That’s why we try to avoid having “library managers” built in and instead simply use the presence of files in a directory.

Are there simpler solutions that might solve some of the same problems? Like providing an RSS feed from the playground that just shows updates to libraries? Having a single page with links to the .zip files for each library? Maybe a “Show Library Folder” menu item in the software?

If you really think the repository with built-in client is the way to go, you should create a more detailed design about it would look and work in the Arduino software. What would people see? How would they use it? How would people add libraries to the repository, etc? An elegant setup could certainly persuade me that it’s a good idea.

Well Subversion kind of handles everything nice and neatly and also helps development of the libraries.

The interface I had in mind was like Azureus's plugin manager. A box at the top with all the libraries with a checkbox and a bottom panel for the description. Select the libraries you want to install and hit next. Simple. :)