# How to start contributing?

**URL:** <https://discourse.julialang.org/t/how-to-start-contributing/15181>\
**Category:** Internals & Design\
**Created:** [September 19, 2018, 3:59pm UTC](https://discourse.julialang.org/t/how-to-start-contributing/15181 "2018-09-19T15:59:03Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![mpal](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mpal/32/6903_2.png) [@mpal](https://discourse.julialang.org/u/mpal)\
**Post date:** [September 19, 2018, 3:59pm UTC](https://discourse.julialang.org/t/how-to-start-contributing/15181/1 "2018-09-19T15:59:03Z")

</div>

Hi there!

I am new to open source community and looking forward to contribute in open source projects.I am using Julia for around two months and am extremely impressed with the language.

I am interested in scientific computing and data science specially in

Machine Learning  
Numeric Optimization  
Deep Learning.

Are there any areas that are suitable for a new comer to contribute to? It will be of great help if you can suggest me how to contribute?

Being a newbie,my question may sound weired.Sorry for any inconveniences caused.

Thanks in advance!

---

<div class="post-metadata">

**Author:** ![jpsamaroo](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jpsamaroo/32/46804_2.png) [@jpsamaroo](https://discourse.julialang.org/u/jpsamaroo)\
**Post date:** [September 19, 2018, 6:45pm UTC](https://discourse.julialang.org/t/how-to-start-contributing/15181/2 "2018-09-19T18:45:20Z")

</div>

Welcome!

My recommendation to people who are new to the community and want to contribute, is to come up with some project that you want to do in Julia , and then as you work on that project, you’ll naturally find bugs, lacking documentation, etc. that you can help fix. This is the “bottom-up” approach, in my own made-up terminology. This is mostly what I do, as I work on a mixture of modelling and optimizing spiking neural networks, developing a new IDE for Julia, and just toying around with various side projects written in Julia.

The alternative is to simply look at the list of issues for a package’s (or Julia’s) repository online, and see if you can fix said issue. This is the “top-down” approach.

I would always recommend that, as a newcomer to the language, you start with “bottom-up” until you are more comfortable with the language and its ecosystem, at which point you’ll be better able to just go “top-down” when you feel like it. Even once you’ve gained sufficient experience, I think you’ll find you spent most of your contribution time fixing bugs or issues that **you personally** ran into while trying to do what you do.

---

<div class="post-metadata">

**Author:** ![mpal](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mpal/32/6903_2.png) [@mpal](https://discourse.julialang.org/u/mpal)\
**Post date:** [September 20, 2018, 5:24pm UTC](https://discourse.julialang.org/t/how-to-start-contributing/15181/3 "2018-09-20T17:24:58Z")

</div>

Thanks a lot!

Your idea about “bottom-up” approach is really great! I am also looking forward to something like that. So should I start a new project of my own in Julia? or can you suggest any ongoing project in Julia where I can contribute with? It will be my pleasure to be a part of any project in Julia!

Thanks in advance!

---

<div class="post-metadata">

**Author:** ![jonathanBieler](https://avatars.discourse-cdn.com/v4/letter/j/82dd89/32.png) [@jonathanBieler](https://discourse.julialang.org/u/jonathanBieler)\
**Post date:** [September 20, 2018, 7:13pm UTC](https://discourse.julialang.org/t/how-to-start-contributing/15181/4 "2018-09-20T19:13:40Z")

</div>

Something you can do is implement models from the literature, there’s a bunch here but you can probably find something missing (you need to be a bit acquainted with the domain though):

> <https://github.com/denizyuret/Knet.jl/tree/master/examples>
>
> //github.com/denizyuret/Knet.jl/tree/master/examples

> **[GitHub - FluxML/model-zoo: Please do not feed the models](https://github.com/FluxML/model-zoo)**
>
> Please do not feed the models. Contribute to FluxML/model-zoo development by creating an account on GitHub.

You also have stuff like this:

> [@Creating Parametric ReLU in Flux](https://discourse.julialang.org/t/creating-parametric-relu-in-flux/10987):
>
> I would like to create Parametric ReLU (PReLU), an activation function, that is described in [[1502.01852] Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification](https://arxiv.org/abs/1502.01852) I know I should use using Flux.Tracker but I am a bit lost. My major challenge here is that for each layer of the network I need the trainable parameter ‘a’ of PReLU to be shared across the activations in that layer. So if the network has say 10 layers, then only 10 scalar trainable parameters shou…

If that’s really useful (need to be tested) then it could be added to the libraries.

For optimization I think [BlackBoxOptim](https://github.com/robertfeldt/BlackBoxOptim.jl) doesn’t have a generic interface, there’s no good CMA-ES implementation (I’ve got one that works but it’s not as good as Python’s), and there’s probably plenty of little things one can do, but you need to be well informed about the packages (which comes by using them mainly, and reading the issues/PR).

---

<div class="post-metadata">

**Author:** ![mpal](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mpal/32/6903_2.png) [@mpal](https://discourse.julialang.org/u/mpal)\
**Post date:** [September 20, 2018, 9:01pm UTC](https://discourse.julialang.org/t/how-to-start-contributing/15181/5 "2018-09-20T21:01:49Z")

</div>

Thanks a lot Sir!

I have gone through all the projects you have shortlisted as suggestion @jonathanBieler and got a clear idea about how to contribute. I will try to contribute in any of of the above projects as soon as possible.

Thanks again!
