Contributing to the iNaturalist codebase

I’ve recently been spending a bit of my spare time contributing bug fixes to the iNaturalist codebase. This has been a rewarding way to contribute to iNaturalist, and setting it up has given me something else to do during the New Zealand winter months.

The path to setup a development environment before beginning coding took a bit of time, and isn’t super straightforward. I ended up scripting my setup almost completely - in order to share with others and so I could rebuild it quickly if I needed to.

I reckon there’s a few others out there who might also be able to contribute, so I thought I’d share how I’ve set things up to make the path smoother for others to join me.

Before you begin you should take a look at:

My setup scripts

My setup scripts and instructions are here. These will probably only work on Ubuntu - but could probably be used as a additional guide to assist with setup on macOS. They are mostly scripted versions of what’s already in the setup guide linked above.

How I’ve setup everything else

I’m running Windows 10, so ended up installing Ubuntu (lubuntu distro) on a VM (VirtualBox). I guess I could have attempted using WSL, but I don’t trust it to work flawlessly.
The VM is also handy to create snapshots, so when I’ve hosed my environment, I can revert to a known good version.
I’m currently using up about 35GB of disk space with this setup.

For an IDE, I run Visual Studio Code in Windows with the Remote extension. This allows me to remotely develop on code running in the VM - after setting up a ssh key for the connection.
I have got debugging working remotely, but that took a bit of fiddling around - I can elaborate further if anyone is interested.

As well as being able to use a browser in the VM, I’ve also opened up the 3000 (web) and 4000 (api) ports on my VM so I can browse to my development site from Windows.

If you’ve got some coding skills, and some spare time, I recommend trying it out!

17 Likes

Seems great (though I don’t have the coding expertise to do this myself!). There is a forum category for tutorials (like this example) and this post seems appropriate for that, so maybe this post could go there?

3 Likes

:+1: :+1:

1 Like

I went ahead and re-categorized this topic.

2 Likes

I guess it does read like a tutorial, even though I didn’t really set out to create one!

I am interested in hearing if anyone tries this out, and happy to try to help anyone who gets stuck setting up a development environment.
Feel free to direct message me, especially if this topic is closed after a couple of months.

1 Like