Julia's Google Season of Docs Projects

Below are the projects which have been proposed for Google Season of Docs under the umbrella of the Julia Language. If you have questions about potential projects, the first point of contact would be the mentor(s) listed on the project. If you are unable to get ahold of the potential mentor(s), you should email jsoc@julialang.org and CC logan@julialang.org.

We at the Julia Language are committed to making the application process and participation in GSoD with Julia accessible to everyone. If you have questions or requests, please do reach out and we will do our best to accommodate you.

The GSoD experience with The Julia Language

Learn from one of our technical writers about their experience with GSoD:

Project Ideas for 2022

Below you can find a running list of potential GSoD projects. If any of these are of interest to you, please reachout to the respective mentor(s).

  1. Julia's Google Season of Docs Projects
      1. The GSoD experience with The Julia Language
  2. Project Ideas for 2022
    1. Scientific Machine Learning (SciML) and Differential Equations
    2. Flux (Machine Learning)
    3. Turing (probabilistic machine learning)
        1. Potential impact
    4. MLJ (multi-paradigm machine learning)
        1. Model documentation

        1. Integration of model documentation into the reference manual

        1. Requisite knowledge
        2. Potential impact
    5. Plots
      1. Projects
        1. Add demos to the user gallery with a focus on aesthetics
      2. Requisite knowledge
      3. Mentors
    6. Javis.jl
      1. Potential Projects
        1. Overhaul Tutorial 3 on Objects
        2. Overhaul Tutorial 5 on Actions
        3. BeautifulJavis - A Gallery of Beautiful Javis Animations
      2. Requisite knowledge
      3. Mentors

Scientific Machine Learning (SciML) and Differential Equations

Given the large scope and breadth of the SciML Ecosystem, the project will be participating independently from the Julia umbrealla. SciML is also a NumFOCUS sponsored project since 2020 and runs other dev programs seperate from the Julia umbrealla. You can find the SciML GSoD projects on their website.

Flux (Machine Learning)

The Flux.jl project will be applying seperatly from the Julia umbrealla since Flux is now a NumFOCUS affiliated project. You can find the GSoD projects proposed for Flux on their wesbite.

Turing (probabilistic machine learning)

Turing.jl is a probabilistic programming language written in Julia. The team is looking for help with documentation and tutorials for several projects. Mentors for this project would be Cameron Pfiffer, Martin Trapp, Kai Xu, or Hong Ge.

Some ideas include:

Potential impact

Turing is a rapidly developing probabilistic programming language, used by machine learning researchers, data scientists, statisticians, and economists. Improving any measure of the informational tools in Turing will allow those communities to integrate better with the Julia community, which will, in turn, improve the rest of Julia's ecosystem. Better documentation and guides will attract new learners and help to transition more experienced people from tools that do not meet their needs.

MLJ (multi-paradigm machine learning)

MLJ (Machine Learning in Julia) is the most popular multi-paradigm machine learning toolbox written in the Julia language. It provides a common interface and meta-algorithms for selecting, tuning, evaluating, composing and almost 200 machine learning models written in Julia and other languages. Such models include neural networks (based on the popular Flux.jl package) tree-based models (such as random forests) support vector machines, nearest neighbor models, outlier detection models, general linear models, clustering algorithms (such as K-means), and more. In particular MLJ wraps a large number of models from the python toolbox scikit-learn.

While the the MLJ ecosystem is spread over some two dozen repositories the reference documentation is mostly collected in a single manual. Additional learning resources, which include a dedicated tutorial site, are listed here.

The reference manual is comprehensive from the point-of-view of what you can do with models (train, tune, evaluated, combined, etc) but has no model-specific documentation at all. Only some models have document strings, but these usually lack detail or examples, and do not conform to any standard.

The present project can be divided into two parts:

  1. Model documentation

Create a detailed document string for each model in MLJ's model registry, as outlined in this github issue, or at least the most popular models. A key part of each document string is a short example illustrating basic usage. Most models are provided by third party packages, which generally have their own documentation, so this is often a simple matter of adapting existing documentation to MLJ syntax.

The models wrapped from sckit-learn (about 70) constitute a separate case, as the available documentation is in python and not Julia. Initially, docstrings for these models will simply quote the python documentation. However, generating these may require some coding (e.g., Julia macros, artifacts) and so is optional for this project.

  1. Integration of model documentation into the reference manual

Models can be loosely grouped into families (regressors, classifiers, clustering algorithms, etc) and integrating the new document strings into the reference manual could fit into such an organization - something resembling the model documentation in scikit-learn.

Requisite knowledge

Writers will need some familiarity with basic machine learning workflows, and very basic Julia, but will also have the opportunity to develop both.

Potential impact

Julia is perceived as a potential game-changer for machine learning. Current practice is dominated by platforms in python and R, but there innovation is increasingly stifled by the two language problem solved by Julia. Good documentation is essential both to ensure MLJ.jl is an attractive option to practicing data scientists, and to those training new data scientists.

Plots

Plots.jl is a unified API for several plotting libraries popular for its composable recipe system.

Projects

Plots.jl had for long time a list of examples demonstrating basic functionality. Recently, a user gallery was added that should show particular good looking demos (chloropleths, gradients, animations, ... ) using DemoCards.jl. Interested writers would add new examples potentially taking inspiration from other existing galleries.

Requisite knowledge

Writers will need some experience in producing visualisations and have a good sense for aesthetics.

Mentors

Javis.jl

Javis.jl is a tool focused on providing an easy to use interface for creating winsome and efficient animations and visualizations quickly - with an emphasis on having fun! 😃

Potential Projects

Overhaul Tutorial 3 on Objects

Javis.jl uses an Action-Object relationship when creating animations. Tutorial 3 was written early when we were pioneering this paradigm for Javis. A lot more has been added to Javis that has made working with Objects and Actions even more powerful! Those interested in this project should be excited to dive into this new exciting paradigm and work with mentors on how to develop this tutorial.

Overhaul Tutorial 5 on Actions

Javis.jl uses an Action-Object relationship when creating animations. Tutorial 5 was written early when we were pioneering this paradigm for Javis. A lot more has been added to Javis that has made working with Objects and Actions even more powerful! Those interested in this project should be excited to dive into this new exciting paradigm and work with mentors on how to revamp our mascot for Javis!

A wonderful project in the JuliaPlots ecosystem called BeautifulMakie was created by Lazaro Alonso. Lazaro graciously allowed us to potentially fork this project to make a new place for Javis - BeautifulJavis! BeautifulJavis is waiting to be created to be populated with beautiful Javis animations with tutorials or instructions on how to make them. Interested individuals should be inspired by the opportunity to unleash their creativity in exploring Javis to its full potential to create beautiful and incredible Javis animations.

Requisite knowledge

Potential contributors will need creativity, some experience or appreciation of the arts, and enthusiasm for teaching.

Mentors