Why I contribute more to Julia

The following observation gradually formed in the past few months, but it’s specifically relevant in light of this post. I’m writing it here so it’ll get its due exposure.

I think one major advantage Julia has over Matlab (and this may hold true for other similar languages - let me know) is github… Due to how Julia interacts with github, travis, unit-tests, and docstrings, I have never before contributed so much time and work (the quality of which is up to debate) to a language. There are a few factors causing this:

  1. The amazing community. People like @jobjob, @tim.holy, @tknopp, @tkelman, and @shashi (to name a few) have pushed me forward and encouraged me to contribute, despite my stinky stinky git-skills.
  2. My specific needs for functionalities that are simply lacking in the current packages.
  3. and mainly, the sickly efficient julia-git-github-travis infrastructure.

I would have never done half as much with matlab’s file-exchange or some such. This, in my opinion, is looked over in most why-julia pitches. Maybe it’s because most of you are more used to these functionalities and take them for granted, but I’m telling you, for the common solo-coding researcher, these are not commonplace.

So to sum it up, thanks to the awesome interaction Julia has with github, we can contribute code, test it on different architectures, document it, and share it, in a much more efficient way than with say, matlab. In my specific case, this resulted in a lot more contributed effort.

I’d be happy to hear your opinions about this topic since it might end up in the resources we’ll hopefully compile for the “why switch to julia” pitch talks (again, see here).

28 Likes

I agree 100% with this. Its a little difficult to use this argument for selling Julia (“Hey, our community is the greatest”) since there are various other strong communities out there (look at R/Python).
Regarding the tooling Julia had the luck to be their at the right time. This allowed us to rely on Github so extensively.

My feeling is that we are observing a new way how Open Source can work. In the Julia community the distinction between a “user” and a “developer” vanishes. Each user can be a developer and vice versa. This is what makes it so special using and contributing to Julia.

8 Likes

This is quite unique to Julia though because you can write a Julia program in Julia. I cannot contribute much to MATLAB/Python/R communities without a ton of work because I find writing C or Fortran tedious and slow so I would never fit that into my daily routine, yet a differential equation solver is essentially just a loop which wouldn’t be useful if written directly in MATLAB/Python/R. So I became a Julia developer simply because I knew how to write Julia code and saw stuff that was missing, which is very different from the conscious effort of switching (or many times learning) languages in order to develop for other scripting languages.

13 Likes

Agreed. I wonder if it’s due to the fact that Julia’s relatively young, or if the ecosystem is intrinsically more open to contributions than other languages.
Having everything on GitHub, with a unified environment (every project has the same structure) and centralized in a package manager is a big help: Julia packages feel more integrated, kind of like Debian packages vs random exe you download on the net.

4 Likes

Definitely the latter. It has been extensively documented (and just makes intuitive sense in hindsight, really) how projects with lower barriers to entry, and smoother progression paths for occasional contributors to become regulars and eventually maintainers, have a tremendous head start in terms of reaching critical mass and becoming self-sustaining.

For example, Wikipedia’s very deliberate open-to-all culture (in particular, the ability to edit anonymously) was, along with the in-browser editing feature that gave it its name, the key to its success. This stands in stark contrast to the myriad of similar Internet encyclopedia projects that experimented with more restrictive models of contribution or platforms with more hoops to jump through, and in the end didn’t succeed the way Wikipedia did.

For this reason, it is very important to both recognize these factors, as @yakir12 is doing here, and to actively promote their continuous improvement.

6 Likes

The more I look at my own text below, the more skeptical I get whether it is a useful post. But I throw it out just to see what others think …

I like this discussion above. Julia is a great achievement with a lot of potential. A big thanks to all who are contributing. This cannot be said too often!

As pointed out in the previous posts, it´s really valuable that people can contribute easily: improving code and documentation, help others…

I have been using Julia for about one year, and I am a bit stuck in my learning and abilty to contribute. There are a two educational things I miss currently:

  • There are a lot of very good resources available for learning apart from the Julia docs and blogs, like the stochastic lifestyle and intro to julia contributions to name a few, explaining general Julia programming techniques. Thanks for the effort!!! I read them, learn a lot and sometimes think that I can improve upon them. Would it be possible and helpful to start a github organisation (something like JuliaInfo, JuliaLearning or JuliaTutorial) where some information is collected? If yes, would it be possible to use documenter.jl for tracking which example code gets outdated? Or better with notebooks? Perhaps this is useful because: (1) people like me who want to contribute have a natural starting point for learning how to do this by using Julia and git to improve tutorials, (2) some useful information would be somewhat more centralized, (3) hopefully the community will keep the code examples up-to-date and improve upon explanations etc relieving the original contributer from some of the effort, and (4) such a place could also hold information such as discussed about Julia intro presentations.

  • I like video blog posts, so I just want to encourage people to do more of them for Julia. For example, it would be nice if people who have written a useful package explain their code: design choices, programming techniques… JuliaCon videos are great.

I hope this post does not divert too far from the original topic “Why I contribute more to Julia”. Final note, my suggestion is probably already sufficiently covered by the julialang homepage, the Julia wikibook etc… so it might be redudant… and yet another source of info…

2 Likes

I for one would love a Julia slideshow maker based off of Documenter.jl that builds websites. I made a repo that did it from Jupyter notebooks using nbconvert

But it’s very rough to use with version control and doesn’t have CI to keep it up to date. But that’s how this site and its slides are made:

2 Likes