14
$\begingroup$

This question has been asked a billion times on Stackoverflow however, the focus has always been on Non-Numerical Coding. I am looking for a project to contribute to within the confines of Numerical Computing and High Performance Computing. I would ideally prefer a small project but that's not necessary.

What would be the best way to get involved in an open source project pertinent to SciComp? Where does one start looking for projects? What would be the best way to enter such a project? Feature Requests/Bugs/Documentation or other?

Looking at something like ATLAS or Nix, how do you go from N00B to active?

$\endgroup$
8
  • 1
    $\begingroup$ Based on this Stack Overflow question and this Stack Overflow question, I think your question is too localized. I don't know if answers would necessarily help many other people in the community; we've closed questions about people asking for thesis ideas for similar reasons. (Otherwise, it is a good question.) $\endgroup$ Commented Feb 6, 2012 at 17:34
  • 1
    $\begingroup$ I don't have much to suggest, except: A big project is really just a whole bunch of little projects flying in formation. Within any big software project, there are lots of small, overlapping teams working on specific subprojects. So it's possible to do small-team work on a big project. Having said that, I'm looking forward to finding out what small projects people end up listing here. $\endgroup$
    – user389
    Commented Feb 6, 2012 at 17:52
  • 1
    $\begingroup$ @GeoffOxberry: I'll defer to you, but I'm disappointed that this is closed. "Name some good open source projects to contribute to" is a huge, unanswerable question in the context of stack overflow, but in the context of the much smaller community of scientific computing, where software projects tend to last much longer, I think this would be a valuable community-wiki type question. $\endgroup$
    – user389
    Commented Feb 6, 2012 at 17:55
  • 1
    $\begingroup$ @JonathanDursi: "Name some good open source scientific computing projects" would then be a list question, which is also frowned upon. (See this question.) I think a scientific computing version of this question would be on topic (in other words, "What's the best way to get into an open source project in scientific computing?"). $\endgroup$ Commented Feb 6, 2012 at 18:01
  • $\begingroup$ @GeoffOxberry, I could edit my question to resemble stackoverflow.com/questions/88740/… but in a SciComp perspective. $\endgroup$
    – Inquest
    Commented Feb 6, 2012 at 18:19

5 Answers 5

12
$\begingroup$

I think you'll get most out of it if you contribute to projects you actively use for other work, since that motivates you to develop functionality you need yourself. Ultimately, this is how most open source software is written: by people who needed the functionality for one reason or another.

In the context of our own project, deal.II, I had written a description of how to contribute a while back on our FAQs.

$\endgroup$
1
  • $\begingroup$ Upvoted! Exactly my point. $\endgroup$
    – Ali
    Commented Feb 12, 2012 at 9:06
5
$\begingroup$

Warning: shameless self-promotion ahead! :)

I am a lead developer of a small open-source scientific computing project:

PyClaw (source here)

It's part of the larger family of Clawpack codes for solving hyperbolic PDEs. PyClaw is designed to solve arbitrary hyperbolic systems of PDEs on logically quadrilateral or hexahedral grids. It includes two different kinds of finite volume solvers and is scalable to large supercomputers (see our submitted journal paper including runs on up to 65K cores).

Take a look at the documentation and the issue tracker. There's plenty that needs doing! Where you can best contribute depends on your background and training. Perhaps the best way to get started is to tackle a small issue and submit a pull request on Github. Alternatively, it might make sense to send a message to the developers mailing list introducing yourself and explaining your areas of expertise.

$\endgroup$
1
$\begingroup$

I have the same problem. I ended up solving my own problems with existing libraries (for example COIN-OR), creating standalone executables for specific tasks. I plan to contribute these codes back once they are fairly polished and stable.


These answers reflect well my opinion:

Good luck anyhow!

$\endgroup$
2
  • $\begingroup$ I don't have a problem as such. I simply wish to learn while contributing. $\endgroup$
    – Inquest
    Commented Feb 6, 2012 at 14:37
  • $\begingroup$ @Nunoxic Yes, I got that part. I just wanted to share my experience. As I said: "I have the same problem." :( $\endgroup$
    – Ali
    Commented Feb 6, 2012 at 14:39
1
$\begingroup$

Three easy steps:

  1. Set out to solve a problem you find interesting. (I have some if you need more!)
  2. Figure out what other OS people have done, try using their software.
  3. Find the shortcomings and improve them!
$\endgroup$
0
$\begingroup$

list of XSEDE software

The XSEDE network of NSF-funded supercomputers has a list of available software, and you can search by scientific domain or application. However, you will have to google the software names to learn more.

Software Carpentry Foundation member projects

The Software Carpentry Foundation maintains a list of projects led by its members. Many of these are hosted on GitHub or similar and are open to contributors. A few are tools for HPC simulation:

Disclosure: I am a volunteer Software Carpentry Foundation instructor, and my project is listed on the projects page.

Plug / Public Service Announcement: if you are interested in contributing to open source scientific software, I'd suggest that you read "Best Practices in Scientific Computing" by Wilson et al 2014 and consider attending a workshop run by the Software Carpentry Foundation - and if/ when you are ready, instructor training.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.