Skip to content

Google Summer of Code 2015 Ideas

John Woods edited this page Feb 12, 2015 · 26 revisions

Contact

Feel free to reach us by joining #sciruby on chat.freenode.net or via our mailing list.

Instructions for students

See also: GSoC Student Application

We strongly recommend that you pick one of the ideas listed below. We value contributions in advance of GSoC, even if they're just little ones. Go pick out something in one of our trackers and work on it, talk to folks on the listserv, and get an idea for what features are needed.

You don't need to know a lot about Ruby to work on a project: depending on how much you already know, it'll be pretty easy to learn enough to be able to contribute. However, you may need some familiarity with scientific computation. If you don't have any, take a look at "Numerical Recipes in C", which you'll probably find in your university's library.

In any case, if you feel your skills aren't enough for some project, please ask us on our IRC channel (see contact section above) or our Google Group (see sciruby.com to sign up) and we can help you.

Our number-one priority right now as an organization is NMatrix. Our number-two priority is most likely visualization. If we write good visualization software, SciRuby will become much more accessible to people.

Read this before you commit your first patches

Most of the main SciRuby’s landing page on Github holds the stable version of SciRuby gems but developers and contributors should work on the very latest (bleeding edge) repositories in order to make sure that changes can be committed without conflict arising.

Try reading Finding The SciRuby Development Repositories on Github if you would like a brief introduction on finding the latest development gems to work on from Github.

Project ideas

NMatrix projects

NMatrix is SciRuby's numerical matrix core, implementing dense matrices as well as two types of sparse (linked-list-based and Yale/CSR). NMatrix is a fairly well-established project which has received Summer-of-Code-like grants from both Brighter Planet and the Ruby Association (in other words, from Matz, who created Ruby). Those who contribute to NMatrix will likely eventually become authors of a jointly-published peer-reviewed science article on the library. Additionally, NMatrix is a good place to gain practical C and C++ experience, while also working to improve Ruby.

  • Mentors: John Woods (@mohawkjohn), Colin Fuller (@cjfuller)

NMatrix currently relies on ATLAS/CBLAS/CLAPACK and standard LAPACK for several of its linear algebra operations. In some cases, native versions of the functions are implemented, so that the libraries are not required. There are quite a number of areas for growth in terms of the capabilities of NMatrix here.

Abstraction of ATLAS/CBLAS/CLAPACK into a separate gem.

Right now, NMatrix is able to do some math natively, in C, and some by linking to ATLAS/CBLAS/CLAPACK. This can cause problems because some systems are not ATLAS compatible, or have different flavors of LAPACK. NMatrix core should have as few dependencies as possible, and a separate gem (nmatrix-atlas) should be constructed which enables ATLAS extensions to work.

Ability to interface with external libraries beyond ATLAS.

In addition to the discussion in the previous idea, NMatrix should have the ability to leverage other libraries that might be installed, such as eigen3, or maybe even boost (nmatrix-eigen3, nmatrix-boost, and perhaps nmatrix-gsl). NMatrix should be able to switch seamlessly between them. One important design question to think about when applying: How does NMatrix choose which library to use if all three implement a given function? For example, if eigen3 and atlas both have matrix multiplication, which one should be used?

A related project is the writing of eigen3 and boost interfaces for NMatrix, though these are lower priority than adapting NMatrix to ATLAS. Another option is the Intel Math Kernel Library. Work in these areas would likely depend upon the F2RB project discussed further down the page, or perhaps FFI.

Visualization projects

Ruby native visualization tools

  • Mentors: Pjotr Prins (@pjotrp), John Woods (@mohawkjohn)
  • Over the past few Google Summers of Code, a number of prototype visualization libraries have been developed by or contributed to by students — such as Nyaplot and Plotrb, both created by students, and Rubyvis. None of these are complete, but all of them have some nice features. Much work remains to be done in making these plotting tools useful for a wide array of visualization types.
  • Requirements: You should be comfortable with Ruby metaprogramming concepts, or should be prepared to learn them during the application process. You should also teach yourself about how Protovis and D3 work during the application process, and expect to understand how other pieces of plotting software function.

Gnuplot gem update

  • Mentors: John Woods (@mohawkjohn)
  • There's a timeless Ruby Gnuplot gem which was written several years ago, but it's fallen behind Gnuplot's innovation curve. It'd be great to provide a more robust Ruby Gnuplot, which among other things produces plots which can be updated in real-time by --- for example --- a pair of ZeroMQ publish–subscribe sockets. While @mohawkjohn has been working on just such a project, his version consists mainly of hacks which make the old Gnuplot gem work with live updates. It'd be better to redesign Ruby Gnuplot from the ground up. This gem is an ideal Summer of Code project because it's only a few hundred lines of code, but does an effective job of leveraging an extremely robust plotting tool.

User Interface: IRuby notebook and integration with other scientific tools

  • Mentors: Daniel Mendler (@minad)

Needs information filled in.

Clone this wiki locally