Hello, Clojurians!

GSoC application deadline is dangerously close and it's time to fill an 
application, at last. But here is a problem: I don't know what will be the 
best for community. I have a few ideas and I will present them here to get 
some feedback. Sorry for a bit late posting!

First: this is the idea listed on Ideas Page [1], "Data Visualization 
Components with Om / React.js". I would like to participate; in particular, 
I'm very interested in building a decent graph rendering library. It seems 
like there are a lot of JS libraries to draw graphs out there, but all of 
them lack features that I needed one time or another:
-composable layouts/transformations, like in Gephi (you can run one 
"transformation" after another there);
-"static" rendering without fancy animation of force-based layout;
-efficient handling of data changes (here is where React can be useful);
-ability to add user-defined forces. It's very useful when you have special 
nodes that should be pulled to particular points.
Of course, this should be based on top of React's model, which adds an 
interesting exploratory aspect to the project.
Mentor: I've tried to contact Kovas about this project, but wasn't 
successful. I hope that was a mail quirk.

Second: when I write Erlang, I enjoy PropEr (an Erlang property testing 
library) a lot. Some time ago a similar system was created for Clojure 
(test.check [2]). It's a decent property-based checker, but a couple of 
things are still lacking:
-support for stateful system checking. This is called "statem" in PropEr 
and described in [3]. It's based on modelling stateful system as FSM and 
comparing behaviour of model and system under test. One of interesting 
usages of "statem" in PropEr is to test external servers: for example, 
properly-designed REST API can be modelled pretty easily by a FSM.
-support for automatic generator inference from type specifications (in 
Clojure Prismatic's Schema can be used) [4]. Obviously, it makes using 
property-testing a lot easier.
-support for generator statistics — what instances was generated, what was 
the distribution of test sizes and so on.
In this project, if it will be selected, I will implement this three 
features for test.check. I had very positive experience with PropEr and I 
hope that this project can help more people start using property-based 
testing.
Mentor: Reid Draper. I contacted him and he agreed to mentor the project.

Third: arguably, one of the best plotting libraries around is R's ggplot 
[5]. It was recently ported to Python, as well [6]. It's different from all 
other libraries of the kind in that it implements a "grammar of graphics": 
small pieces of reusable functionality that together constitute plots. Here 
is an example:

ggplot(mry, aes(x=year, y=number, group=rating)) + geom_line(aes(colour = 
rating)) + scale_colour_gradient(low="red") # produces [7]

This fits Clojure's ideology nicely. It can also be even better in Clojure 
after a small modification of original ggplot design, which is replacing 
"overloaded plus" style with plain vectors. This is a big project, but I 
believe I can port this library to Clojure and ClojureScript in GSoC 
timeframe. The majority of code will be the same, and because this will not 
be a core.X project, I will be able to use cljx to share code. One of 
spin-offs from this project will be a simple "dataframe-like" (think R or 
Python's pandas [8]) data structure usable in both languages.
Mentor: there is no at this point. I will appreciate a lot if someone will 
volunteer.

This concludes the list of ideas. Please share your thoughts and let me 
know, if you are able to mentor me on third project! I will fill an 
application in 36 hours from now.

[1]: http://dev.clojure.org/display/community/Project+Ideas
[2]: https://github.com/clojure/test.check
[3]: http://proper.softlab.ntua.gr/papers/eirini-thesis.pdf
[4]: http://proper.softlab.ntua.gr/papers/proper_types.pdf
[5]: http://ggplot2.org/
[6]: https://pypi.python.org/pypi/ggplot
[7]: http://docs.ggplot2.org/current/geom_line-8.png
[8]: http://pandas.pydata.org/

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to