Beginner friendly code base

Hi all,

A long time Java developer here, trying to make the leap to the Julia land and I was wondering if anyone can recommend an open source Julia project(s?) clear enough for beginners to read and look at … Maybe even contribute to?

Also is anyone interested in mentoring?

Thanks!
Khaled

3 Likes

Welcome!

I suggest you start with an introductory online tutorial from https://julialang.org/learning/, then go through the documentation https://docs.julialang.org/en/v1/, then find a project that interests you and try implementing it to understand the language better. If you have questions, consult with the documentation above, and if something is not clear, you can ask questions here and many people will be willing to crowdmentor.

This really depends on your background and interest so if you say more about your interests, people may be able to recommend something. But anyhow, Julia Observer is your friend to search through packages and see what interests you.

Good luck, you are making a great move!

2 Likes

If you want to look directly into packages and not into tutorials, then I can suggest the following, all of which have been written with clarity of source code as the main concern:

Notice: ChaosTools makes heavy use of DynamicalSystemsBase. If you are willing to disregard this, then ChaosTools also has super duper clear source code.

I am the lead developer of all the above, and if you want to make any contribution of any kind please do not hesitate.

6 Likes

nothing is faster than starting a project, then for any problem go search the official docs + google.

Thanks!
Julia observer looks like a neat way to browse around some projects.
Although a general purpose language my understanding is that Julia shines more for everything ML? Hopefully I’ll be using it more for that.

1 Like

Thanks! I will look into those

For sure building things is the way to go but reading code help understanding the “feel” of a language and trying to tackle bugs in an existing code base allows to avoid the “blank page” problem while staying productive.

2 Likes

Julia shines in many areas of scientific computing including ML, optimization, differential equations, linear algebra and many more.

2 Likes

many all :wink:

@khaled: I would second @mohamed82008’s advice and suggest that you approach this from the other direction, and pick some problem that you are interested in solving. Then see if there are packages available, contribute to them, etc. Otherwise, if you are not interested in the actual problem, it is easy to lose motivation and focus.

You get mentoring (code reviews) when you submit PRs. Start small, read a lot of code, and ask questions (many packages are fine with questions about internals as issues in git repos, especially if you are serious about contributing).

3 Likes

@khaled If you have a taste for algorithms and geometry, you can check LazySets.

In this codebase you can find some examples of using parametric types, interfaces, documentation and testing, specialization using multiple dispatch, macros, plotting.

Examples of contributions open to beginners are writing your first iterator, extending the convert method in Base, writing a new plot “recipe” (*).

(*) “recipes” are library functions that communicate with the Plots package.

2 Likes

That’s some really cool stuff. It never ceases to amaze me how many nice packages already exist in pure Julia. Very nice examples.

Thank you I am very flattered by your words!