-
Notifications
You must be signed in to change notification settings - Fork 79
Google Summer of Code 2017 Ideas
Ideas for Google Summer of Code 2017.
Feel free to reach us by joining #sciruby
on chat.freenode.net
or via our mailing list.
IMPORTANT NOTICE: SciRuby encourages diversity. Scientific progress in general benefits from diversity and software development for science is no exception. We are really happy that the number of people from Asia, Africa and South America applying for GSoC projects is increasing. Our org admin this year is from India, our previous org admin was from Brazil. We have had students from Japan, India, Sri Lanka, Russia, etc. We have women software developers in our programme. We are happy to hear from you all!
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.
See also:
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. Also go through the coding guidelines before sending your first patch.
Here's a great tutorial: http://www.thinkful.com/learn/github-pull-request-tutorial/
Have a look and feel free to ask if you have any questions.
Guidelines for mentors to submit projects:
- Specify the name of your project as a heading.
- Write a paragraph or two with further details.
- Write a small 'Skills' section detailing the skills that the student must possess to complete the project.
- Write down your own GitHub handle and contact details in a 'Mentor Details' section over which the student can contact you.
- If anyone else wants to co-mentor a project, please specify your details along with the mentor's details.
Paratext is a super fast library for reading CSV files. Currently it has wrappers for Python, and having a Ruby wrapper would be a great idea for use in NMatrix and daru. The wrapper must directly interface with the NMatrix C API and should not waste much time in converting data from C to Ruby and back. You will need to understand both the CRuby C API and the NMatrix C API and figure out a way to make them work together. The python wrappers can be used as a reference. This thread provides further information.
This is not a full summer's worth of work and should ideally be coupled with some other project.
Skills: Understanding of Ruby and C APIs | Understanding of the CRuby C API.
Difficulty: Intermediate
Mentor: @v0dro
Daru is a DataFrame library for Ruby. While it has many methods for data wrangling, it is slow for a lot of use cases (check out these benchmarks). This task will involve figuring out the slow areas of daru and porting them to Rubex, which is a language for writing C extensions for Ruby.
Rubex is still far from complete, and you may need to dabble in compilers and the Ruby Garbage Collector for adding features to Rubex that are necessary for completing this task. You will also need to benchmark various daru methods and prove that porting them to Rubex will significantly impact performance.
Skills: Experience in data analysis | Experience in Ruby and C | General understanding of how compilers work | Understanding of good benchmarking practices
Difficulty: Advanced
Mentor: @v0dro
Mrkn will describe later.
Mrkn will describe later.
Mrkn will describe later.
Mrkn will describe later.
TBD.