# Entry point for contributing to climate modeling projects?

**URL:** <https://discourse.julialang.org/t/entry-point-for-contributing-to-climate-modeling-projects/48856>\
**Category:** Geo\
**Created:** [October 23, 2020, 3:28am UTC](https://discourse.julialang.org/t/entry-point-for-contributing-to-climate-modeling-projects/48856 "2020-10-23T03:28:53Z")\
**Posts on this page:** 11\
**Page:** 1

<div class="post-metadata">

**Author:** ![crbinz](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/crbinz/32/1919_2.png) [@crbinz](https://discourse.julialang.org/u/crbinz)\
**Post date:** [October 23, 2020, 3:28am UTC](https://discourse.julialang.org/t/entry-point-for-contributing-to-climate-modeling-projects/48856/1 "2020-10-23T03:28:53Z")

</div>

I’d like to spend some of my free time contributing to projects that help address the issue of climate change. My background is that I have (basically) no domain knowledge at all, but I have julia and modeling/simulation experience (mostly astrodynamics and estimation).

I found [this list of “Open source projects sustaining stable climate, energy supply and vital natural resources”](https://github.com/protontypes/awesome-sustainable-technology), which has a number of julia projects on it. I’ve spent some time looking into each one, but I have yet to find a good entry point for contributing. I’m hoping that someone here that is more familiar with the ecosystem can help point me in the right direction, and potentially point out areas that could use attention from some motivated programmer. Any advice?

---

<div class="post-metadata">

**Author:** ![CameronBieganek](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/cameronbieganek/32/6915_2.png) [@CameronBieganek](https://discourse.julialang.org/u/CameronBieganek)\
**Post date:** [October 23, 2020, 3:55am UTC](https://discourse.julialang.org/t/entry-point-for-contributing-to-climate-modeling-projects/48856/2 "2020-10-23T03:55:25Z")

</div>

Maybe check out CliMA:

> **[Climate Modeling Alliance](https://github.com/CliMA)**
>
> An alliance of scientists, engineers and applied mathematicians, dedicated to pioneering a new, data-informed approach to climate modeling - Climate Modeling Alliance

They also had a post a while back about a software position:

> [@Software engineer positions on CliMA project at Caltech](https://discourse.julialang.org/t/software-engineer-positions-on-clima-project-at-caltech/34322):
>
> Do you love translating mathematical concepts into code? Do you find shaving microseconds off your function calls satisfying? Are you tenacious in tracking down obscure bugs? Can you build high-level abstractions without sacrificing performance? Have you helped maintain large shared codebases, shepherding changes while keeping continuous integration tests passing? Do you enjoy learning about new technologies and pushing their limits? Are you interested in joining world-leading experts to help so…

---

<div class="post-metadata">

**Author:** ![Datseris](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/datseris/32/13406_2.png) [@Datseris](https://discourse.julialang.org/u/Datseris)\
**Post date:** [October 23, 2020, 8:57am UTC](https://discourse.julialang.org/t/entry-point-for-contributing-to-climate-modeling-projects/48856/3 "2020-10-23T08:57:54Z")

</div>

Allthough not about climate _modelling_, but climate data analysis, [ClimateBase.jl](https://github.com/JuliaClimate/ClimateBase.jl) is a repository that is great for newcomer contributions. It recently has been overhauled and there are a bunch of low hanging fruits. The source code is small, self-contained, and (to my judgement) easy to understand.

---

<div class="post-metadata">

**Author:** ![crbinz](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/crbinz/32/1919_2.png) [@crbinz](https://discourse.julialang.org/u/crbinz)\
**Post date:** [October 23, 2020, 1:21pm UTC](https://discourse.julialang.org/t/entry-point-for-contributing-to-climate-modeling-projects/48856/4 "2020-10-23T13:21:44Z")

</div>

I didn’t mean for my title to be exclusionary, climate analysis projects are just as interesting to me 🙂. Thanks for the tip, I will definitely check this out.

---

<div class="post-metadata">

**Author:** ![visr](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/visr/32/17204_2.png) [@visr](https://discourse.julialang.org/u/visr)\
**Post date:** [October 23, 2020, 3:12pm UTC](https://discourse.julialang.org/t/entry-point-for-contributing-to-climate-modeling-projects/48856/5 "2020-10-23T15:12:52Z")

</div>

Cool that you want to contribute for this reason! This article from 2015 has been linked before, but it also represents some of my motivation to contribute to JuliaGeo:  
[http://worrydream.com/ClimateChange/#tools-technical](http://worrydream.com/ClimateChange/#tools-technical)

Even besides climate modeling, I feel like any kind of tool that will make it easier to understand the Earth is going to be very much in need in the coming years.

---

<div class="post-metadata">

**Author:** ![crbinz](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/crbinz/32/1919_2.png) [@crbinz](https://discourse.julialang.org/u/crbinz)\
**Post date:** [October 23, 2020, 3:19pm UTC](https://discourse.julialang.org/t/entry-point-for-contributing-to-climate-modeling-projects/48856/6 "2020-10-23T15:19:28Z")

</div>

That’s a great article, and I found it very inspiring when I first read it a couple years ago. In fact, I started my (current) search by re-reading it.

---

<div class="post-metadata">

**Author:** ![simonbyrne](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/simonbyrne/32/19_2.png) [@simonbyrne](https://discourse.julialang.org/u/simonbyrne)\
**Post date:** [October 27, 2020, 4:34am UTC](https://discourse.julialang.org/t/entry-point-for-contributing-to-climate-modeling-projects/48856/7 "2020-10-27T04:34:00Z")

</div>

We at CliMA would certainly welcome contributions, though I do concede that it is probably not that easy to dive right in and start contributing to the main [ClimateMachine.jl](https://github.com/climate-machine/ClimateMachine.jl) repository (though if you do have ideas, please let me know).

That said, there are lots of areas where contributions would be very welcome, and could benefit the wider Julia ecosystem:

- file readers for common data formats ([issue #114](https://github.com/CliMA/ClimateMachine.jl/issues/114)). There are a wide variety of file formats used for climate data (e.g. NetCDF, Zarr, HDF5): although most have a Julia package, the quality and maintenance of them varies considerably. Some of these rely on cumbersome third-party binary dependencies, and could benefit from being translated into Julia to benefit from features such as memory mapping, and parallel I/O.
- visualization: we heavily use [Paraview](https://www.paraview.org/) and [VisIt](https://wci.llnl.gov/simulation/computer-codes/visit/) for visualizing the model output. Being able to directly interface Julia with these libraries (e.g. for in situ visualization) would be incredibly cool. Alternatively, building something similar in [Makie.jl](https://github.com/JuliaPlots/Makie.jl) would be very neat (though perhaps a lot more work).
- Specific numerical topics: we’re currently working on moving out our distributed-memory [time steppers](https://github.com/CliMA/TimeMachine.jl) and [Krylov & Newton-Krylov solvers](https://github.com/CliMA/Solvent.jl) into self-contained repositories.
- GPU and distributed memory tooling. We heavily make use of [CUDA.jl](https://github.com/JuliaGPU/CUDA.jl), [KernelAbstractions.jl](https://github.com/JuliaGPU/KernelAbstractions.jl) and [MPI.jl](https://github.com/JuliaParallel/MPI.jl), so improvements to those directly help our project. Similarly, we are excited about [AMDGPU.jl](https://github.com/JuliaGPU/AMDGPU.jl) so that we can run on alternative GPU architectures.
- There are many rough edges in running Julia on HPC clusters (deployment, binary dependencies, etc.). If you are interested in this topic, please [join our discussion](https://discourse.julialang.org/t/juliahpc-meeting/49093).

---

<div class="post-metadata">

**Author:** ![crbinz](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/crbinz/32/1919_2.png) [@crbinz](https://discourse.julialang.org/u/crbinz)\
**Post date:** [October 27, 2020, 2:45pm UTC](https://discourse.julialang.org/t/entry-point-for-contributing-to-climate-modeling-projects/48856/8 "2020-10-27T14:45:56Z")

</div>

This is fantastic information, thank you. Indeed, I spent some time clicking around the CliMA organization, but I couldn’t quite figure out a good way to get started.

---

<div class="post-metadata">

**Author:** ![simonbyrne](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/simonbyrne/32/19_2.png) [@simonbyrne](https://discourse.julialang.org/u/simonbyrne)\
**Post date:** [November 2, 2020, 4:33pm UTC](https://discourse.julialang.org/t/entry-point-for-contributing-to-climate-modeling-projects/48856/9 "2020-11-02T16:33:21Z")

</div>

If anyone is interested but would like some pointers on where to start, please feel free to DM me.

---

<div class="post-metadata">

**Author:** ![Balinus](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/balinus/32/243_2.png) [@Balinus](https://discourse.julialang.org/u/Balinus)\
**Post date:** [December 2, 2020, 4:08pm UTC](https://discourse.julialang.org/t/entry-point-for-contributing-to-climate-modeling-projects/48856/10 "2020-12-02T16:08:35Z")

</div>

Welcome @crbinz!

I think that there’s a lot of good information here in this thread already.

Overall, I think that the whole climate science domain is a natural candidate for Julia, with respect to two main axes:

- Modelling is costly. In that respect, ClimateMachine.jl is an awesome “showcase card” for the language.
- Climate analysis deals with Big Data… way before the term was coined.

The big advantage right now of Python is the easy data access and scalability with xarray and dask. Each time I advocate Julia to my colleagues, they always ask : can I easily process 100 TB of data with a simple script and scale that to my cluster? I’d say that we are close, but not there yet, at least for the persons that are not developer-inclined (e.g. people writing 2000 lines of script code in Matlab/Python for their current paper).

There are solutions though, but the documentation is sparse. For example, for xarray-like approach, I succesfully tested [ESDL.jl](https://github.com/esa-esdl/ESDL.jl) and [YAXArrays.jl](https://github.com/meggart/YAXArrays.jl) (not a big fan of the name though!). I was able, using ESDL.jl, to scale computations on a slurm cluster.

Anyway, that was some random thoughts.

---

<div class="post-metadata">

**Author:** ![pukpr](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/pukpr/32/49114_2.png) [@pukpr](https://discourse.julialang.org/u/pukpr)\
**Post date:** [April 17, 2023, 5:40pm UTC](https://discourse.julialang.org/t/entry-point-for-contributing-to-climate-modeling-projects/48856/11 "2023-04-17T17:40:07Z")

</div>

Am using Julia and the Flux NN library to help cross-validate ENSO and AMO climate models.  
If interested, read the recent SubStack articles:

- [https://pukite.substack.com/p/machine-learning-validates-the-enso](https://pukite.substack.com/p/machine-learning-validates-the-enso)
- [https://pukite.substack.com/p/machine-learning-validates-the-amo](https://pukite.substack.com/p/machine-learning-validates-the-amo)

source control is on GitHub
