Identifying barriers to new contributions to Julia and its ecosystem

Hey folks,

I’ve been investigating pathways to contribution to the Julia ecosystem. Specifically, I’m looking for barriers to new contributors joining open source Julia projects and how to alleviate them. If you have ideas, questions, or personal experience to share, I’d be glad to hear it!

I also want to share a teaser of some of the data I’m looking at. Here’s a plot focusing specifically on how responsive folks are on the JuliaLang/julia repo. Looking at pull requests to JuliaLang/julia opened in 2022 and 2023, 78% were merged within a year, 18% were responded to within a year but not merged within a year, and 4% were neither responded to nor merged within a year. Of the first two categories, here’s a distribution of how long it took to respond:

There will certainly be more to come; I am sharing this to open the conversation and invite others to chime in.

17 Likes

I recently contributed some things to JuMP.jl and ModelingToolkit.jl. My experiences were very good.

For SciML in general the only feedback I have is that because the ecosystem is so large it can be difficult to figure out where the (little) thing you want to change is located at. GitHub’s new search functionality has really helped in this respect.

9 Likes

People don’t realize how easy it can be to help.

One little thing that I do occasionally is send in a pull request for documentation fixes. It’s actually a really easy thing to do, because Documenter.jl provides a link at the top of every page to get the process started.

image

Clicking on that pencil icon will take you to the github page for that document. On github, you’ll see another pencil icon.

image

Clicking on that pencil icon will fork the repo and create a branch. From there, you can edit the markdown document directly from github, and when you’re done, you’re prompted to create a pull request. The process is streamlined.

Fixing a typo here and there is so easy.

More people should do it when they notice the opportunity. Also, from the original developer’s perspective, a pull request for documentation fixes is about as low stress as you can get if it’s a small one. You can usually tell at a glance that it should obviously be merged in, and it’s a good feeling for everyone involved.

11 Likes

Multiple things needed to happen before I’ve even decided to consider contributing to Julia:

  • I’ve needed to overcome my imposter syndrome. I’d be curious how many people share this experience. To me, the bigger and “more impressive looking” a codebase/community is, the bigger the feeling of “what could I possibly contribute?”.
  • I agree with @g-gundam that contributing to documentation is a great way to get started. I for one didn’t know about how streamlined this process is (thank you!) and when I’ve started, I also didn’t realize how much of a help it would be just helping keeping the documentation up to date or providing the perspective from a newcomer.
  • This might be particular subjective - again, I’d love to hear y’all perspectives: the more open issues and PRs there are in a repo, the bigger my fear of “am I duplicating other people’s effort”, sometimes combined with “(and their effort is probably better)”. I’m often afraid/expecting that I might have missed an issue/a PR that is already doing what I intend to do and in that case, I don’t want to pile onto the workload of the maintainers.
  • For PRs in particular: I’m often uncertain how much effort a given feature/bug fix/anything might require and I don’t know whether I might find the time/energy to keep working on it. On the other hand: I don’t want to leave tasks unfinished, so I end up not even starting a task.
    In summary: many of the burdens that I experience(d) are mental barriers that might not even be related to technical difficulty of the problem. On the other hand: the positive and supportive vibe of the Julia community in particular has been very helpful to lower these mental barriers for me <3

Also, I highly applaud your efforts, @Lilith , in this direction <3

11 Likes

I would like to share my own experiences with contributing to Julia itself (which I hope is within the scope of the OP). While I think the Julia community very welcoming, the difficult part comes once a PR is submitted. I have several PRs where for quite some time already I have been waiting for responses, see below. I’m sure everyone is busy, so I don’t want to blame anyone. Still, not getting feedback does not really encourage me to contribute more. In one case my PR (#54060) was a response to a call for help by one of the maintainers, so that I found the silence particularly puzzling. I think it would be great if one cold get faster responses, maybe including a contact person to ping and directions how to proceed with a PR (drop feature X, add Y).

EDIT: I often did get a (positive) initial response. The discussion died off later, when I had questions or when I thought the PR would be ready to merge.

(For #55671 I now realize that the deadlock might be caused by a misunderstanding. I did get an answer, but not of the yes/no form I was expecting.)

8 Likes

this might sound counterintuitive, but I think one possible area of improvement for the contribution experience would be a greater willingness / predisposition for maintainers to close some PRs / issues with a more prompt “no / not planned” rather than leaving them open, unresponded — or worse, with active discussion sucking up screen space / mindshare when it’s clear to many that no actionable conclusion will be reached

13 Likes

Another data source: History Pull Request Time Cost data + real-time data

https://ossinsight.io/analyze/JuliaLang/julia#pull-requests

2 Likes

how much effort a given feature/bug fix/anything might require

My experience is that the process of fixing or just determining the root cause of a problem can easily jump into a rabbit hole.
Maybe you spent an afternoon determining that the issue could not be reproduced on the platform you were using, which is common as a Windows user.
So it’s actually hard to estimate the effort required to fix one issue.

I don’t know whether I might find the time/energy to keep working on it

My way of thinking about it: choose an issue you really care about, not the ones that seem easy to fix.
That way, even if you don’t make much progress on this attempt, when you have free time again, you can continue your attempts without being bothered by wasted time.

I don’t want to leave tasks unfinished

I think it’s normal to open a draft PR (or mark it as a WIP) even if you don’t end up finishing it.
My old draft pr: (2 year ago) [win] Fix source build without pre-built deps by inkydragon · Pull Request #45712 · JuliaLang/julia

I am still concerned about the issues involved in pr#45712.
If I had more free time, I would move forward with it.
And of course I would be happy to see others move forward based on this PR and eventually replace it.


Another newer example: (2 weeks ago) build: remove openlibm by inkydragon · Pull Request #56875 · JuliaLang/julia
This PR is a POC that already passes the CI check for the windows platform, but still needs more cleanup before it can be merged.

It may still take months to merge it.
But that’s not a big problem, since its predecessor JuliaLang/julia#42299 opened in 2021.
(By the way #42299 was opened by Viral B. Shah)

1 Like

In the examples I mentioned above, I often got what I considered an encouraging, positive first response. The discussion stalled later, for example when I asked in which way some modification should be done, or even when I thought the PR would be ready to go. It’s unclear to me why it stalled. Sometimes I asked whether/how to move forward with the PR, and I didn’t get any reply.

4 Likes

Definitely true. @ChrisRackauckas is genuinely a nice guy so if you’re contributing to SciML packages that already helps a lot!

Asahi Linux developer streams their work on this Youtube channel. We can have a similar channel about Julia development where Julia developers can upload their videos. Such type of open development can help new developers to learn faster. :thinking:

Not that bad actually!

Would be interesting to have similar statistics for the most popular packages.

We don’t have any VTubers, but we did have a doggo.

No, I am asking for a Youtube channel where development videos of Julia and its packages can be streamed. That Doggo channel is for learning Julia and not its development. Please see this Asahi Youtube channel to understand difference.