I would love to see more opensource controller options where we can combine our effort. I started with my own controller for pretty much the same reasons (and money) mentioned above.
I started building the controller same time I started reefing. I knew upfront that patience will be key with reef keeping and I am better off accepting veteran reefer's advice than doing anything in haste. Being a very impulsive person, the controller work gave me means to stay tuned with reef keeping while not to over-engineer my tanks. I am an avid software programmer and can code in pretty much most popular languages, I am also a core maintainer of Chef and bunch of other popular opensource software, so FOSS is pretty much my defacto mode of work.
Couple of things I learned while developing reef-pi is to standardizing the hardware. In the beginning, reef-pi was called reefer and I had intended to support more than one popular IoT /SBC platform (Pi, Beaglebone black, Galileo etc) later I realized its better to have a stable system supported on only one platform instead of half-baked support on multiple platforms.
The second key lesson I learned was to focus on only the relevant things. Early on I spend considerable amount of time on touch screen and bunch of other things that are less important from reef keeping perspective. Later I decided to prioritize features according to their relevance in reef keeping. This is why the development went from power strip -> ATO -> Temperature -> Timers -> LED control. To me, this is a very good combination of basic features and I can see a simple and effective controller only with these set of features, hence our first public release aka reef-pi 1.0 was cut soon after those features were tested and documented. I had plans for image processing and motion detection when I started

.
One software engineering suggestion I would make is that dont go with scripting languages (ruby, python, javacript) if you really want to controller to last for years. Though they are easy to code, they are pain to maintain in the long run, they are less stable and they have poor performance. Remember every piece of serious software you use is written in statically typed languages, examples will be web browsers, operating systems etc. This also means its easy to distribute (since you can generate a single binary) . For a standard controller, you'll; need at least 10-12 concurrent threads , concurrent programming is bit more painful in scripting languages. ..
Happy to help any way I can, reef-pi bill of materials is available here:
https://reef-pi.github.io/general-guides/bom/
At the same time I could use every bit of help with reef-pi as well. I am pretty shaky at both electronics as well as UI (bootstrap /javascript) . reef-pi uses Go for backend, and bootstrap+react on the frontend.