13
$\begingroup$

I'm interested in finding a math-related open source project that I can contribute to. I've studied maths and stats at undergraduate level, but I'm a professional software developer and I'll have some spare time in the next few months at least that I'd like to use to contribute to an open source project. My goals are:

  1. Work on something I'm likely to use: there's nothing like being a user of a product to whet your appetite for developing it. For example I've used Maple and Mathcad when I was studying maths. And I frequently use R. I'm going to be studying some calculus and calculus of variations so a project that has symbolic as well as numerical capabilities would be good.
  2. Work on something is mature enough to have a substantial user base, but still needs help.
  3. Take my programming skills forward. I'm particularly interested in learning Python, because it's starting to be used very widely in e.g. the data science community and in large scale systems development where there is a maths or machine learning element. I would also welcome continuing my existing C++ experience (OTOH I'm not very interested in working on products that are developed only in C.)

A final, lower priority, point is that I'm interested in tools that contribute towards education in some way.

I've done some research, and I've considered a couple of of projects:

  • R. Great product, but ruled out on point 3 (it's developed largely in C), and somewhat on point 2. Doesn't entirely meet point 1 as it's specialized to statistics rather than being a more general tool.
  • Sage math. Seems to meet all the criteria: is a general purpose math tool with symbolic and numeric capabilities, is mature but still looks to need help, and is primarily developed in Python (but still interfaces with libraries in C / C++ so I could make some use of my existing skillset).

One thing I'm aware of is that I don't know what I don't know. I only discovered Sage yesterday, when I found an answer on this site. So are there other projects that I should consider?

Also, is my assessment of Sage accurate? Is it good enough to be used say for symbolic differentiation and for numerical work, but it still needs some help and welcomes developers? (There's a post related to this on ask sage).

$\endgroup$
  • 2
    $\begingroup$ You might find this blog post informative. $\endgroup$ – Jesko Hüttenhain Aug 15 '13 at 11:10
  • 2
    $\begingroup$ There is SciPy or NumPy if you want to work "behind the scenes" with Python $\endgroup$ – Prahlad Vaidyanathan Aug 15 '13 at 11:26
  • 1
    $\begingroup$ Laudable, but not really on-topic here. $\endgroup$ – lhf Aug 15 '13 at 11:29
  • 1
    $\begingroup$ There's an effort to re-implement chebfun in Python (rather than Matlab). That seems eminently worthwhile, to me: github.com/alexalemi/pychebfun $\endgroup$ – bubba Aug 15 '13 at 11:31
  • 3
    $\begingroup$ One thing to know about Sage is that it uses many preexisting earlier components (other open-source math projects) and has interfaces to various other software. Thus if you start to familiarize yourself with Sage in detail you will get to know other projects automatically. My impression from observation not involvement some time ago was that Sage is very welcoming to new contributors. Sage is mature enough to be used both for research and for teaching on a regular basis in various math-subjects. $\endgroup$ – quid Aug 15 '13 at 11:31
4
$\begingroup$

As an example, Sage certainly welcomes contributors - you can see current enhancement and bug requests at trac.sagemath.org and there is lots to do all the way from assembler in some of the subcomponents like Flint to Python to C++ in Pynac to web programming with the sagenb and cloud...

The developer guide is pretty comprehensive in terms of initial conditions. Creation of a Trac account is the most important part, though significant discussions also take place on the sage-devel Google group. We use git as our version control system, for better or for worse. Naturally, reporting bugs, helping sift through reports, helping other users e.g. at ask.sagemath.org are also all very valuable contributions.

$\endgroup$
  • 1
    $\begingroup$ There are many, many components of Sage that would also fill the bill of what you are looking for - ginac.de and sympy.org/en/index.html are both natural places to look. $\endgroup$ – kcrisman Feb 24 '15 at 21:18
  • $\begingroup$ thankyou. As it happens I was looking into sage and another project I am interested in 1-2 weeks ago. As both are very large projects I found it very hard to know where to start. Your post is helpful in trying to bridge that gap; thankyou. $\endgroup$ – TooTone Feb 25 '15 at 17:18
  • $\begingroup$ @TooTone: about bridging the GAP :) as of recently, GAP is now also on GitHub, see github.com/gap-system/gap $\endgroup$ – Alexander Konovalov Mar 6 '15 at 12:39
2
$\begingroup$

As another example, the development of the GAP system for discrete computational algebra is now hosted on GitHub: https://github.com/gap-system/gap.

The GAP Project welcomes contributions from everyone, in the form of code, documentation, blog posts, etc. For contributions to the GitHub repository, please read the guidelines.

GAP is redistributed with more than a hundred packages, some of which use GitHub or Bitbucket and are listed here or may be found under virtual organisations "gap-system" and "gap-packages" on GitHub and "gap-system" on BitBucket.

To keep up to date on GAP news (discussion of problems, release announcements, bug fixes), you can subscribe to the GAP forum and GAP development mailing lists, notifications on GitHub, and follow GAP on Twitter.

If you have any questions about working with GAP, you can ask them on GAP forum (requires subscription) or GAP Support mailing lists.

Finally, on this site we have the gap tag for mathematical questions involving GAP: https://math.stackexchange.com/questions/tagged/gap

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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