Hi, 

As previously announced by Simon Danisch, I want to present our online 
library concept for Julia.

It's an online library based on a graph-database, that is supposed to 
enable a very rich feature set including uploading and versioning of code, 
search for code and documentation, automated tests etc…

For starters, it will be more of an advanced interface for searching 
packages and documentation.
This might be a little hard to justify, as the package system combined with 
Github already does a great job.

But I think the idea behind it becomes understandable, when you think about 
scaling up the feature set in the future.
You could probably implement every feature you would like to be independent 
from each another, say as different libraries or tools.
For example make an extra interface for an image library, a library for 
statistical data sets, a library for binary dependencies, a library for 
tutorials and examples, a forum for discussions/bug-reports, etc....

But I think it's extremely useful to have all these different kind of 
"libraries" in one big library because the resources I listed all need to 
be treated very similar. 
They all might have tags, ratings, attached opinions/discussions, 
dependencies, are part of a hierarchy and finally, the search interface for 
them should be very similar.
In a graph library, nodes get a higher level semantic meaning very easily, 
by just building connections.
In the end this would also prevent fragmentation of information regarding 
the code over different systems or libraries. 

Just one example how things could be represented in an inhomogeneous 
graph-like structure.
This is just a mock-up, as things are not consistent so far and might be 
represented differently in the final library:

<https://lh3.googleusercontent.com/-lJ2meY5A_-A/U0VuCwhaNOI/AAAAAAAABj4/yJ1bPnwzktU/s1600/ImageExampleGraph.png>
You can search for the English word "Image" and already get a first 
impression of what one can do with Julia and images.

This would be especially cool, if it was deeply integrated into an IDE.
You could just click on a particular datatype and get a display of what 
functions you could use on the type, or actually query example material.
Similarly, you can look-up documentations, or code samples for functions 
and so forth... I hope you get the big picture!

Another interesting use case is to combine the library with a good testing 
library, so that you can define tests for every function.
Like this you can extend the library in an easy and controlled way. 
Someone can just upload a new version of a function, and if it passes the 
test for the function, it gets accepted. 
Together with benchmarks, one could even find out, if the new 
implementation is better, promoting it to the new standard implementation.
This is far out for sure, as this needs a feature set similar to Github and 
beyond. 
But at some point, this might turn into version control system, which can 
make it very easy and conflict free to extend the functionality of Julia.

As mentioned above the first steps will be to create an interface that lets 
you insert code and search for it intelligently, based on partially given 
information. Right from the start the system should allow for multiple 
competing implementations of one symbol and also take care of versions of 
the same functions.

We are currently developing the first prototype of the database together 
with a simple IDE to connect to it. This happens in the scope of our 
Bachelor’s Thesis. The database is conceptually independent from the IDE 
but of course one does not make much sense without the other.

So if you have any kind of feedback, ideas, wishes for features, inherent 
flaws you want to point out or just your two cents worth, let us know! We 
want to know what people working with/on Julia need.

Thanks and cheers,
Jannis & Simon

Reply via email to