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:
- The iNaturalist Development Setup Guide
- The Official Contributing Guidelines
- The general development guide
- All the open issues in github
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!