Skip to content

Rebuild in Go #3392

@timmo001

Description

@timmo001

Background

The app became way too large and disconnected, having multiple different codebases, multiple languages etc.

The aim of this is to consolidate as much as possible and make the app as performant using a purely compiled language, which is very familiar.

I recently built go-automate which is very simple and allows a simple way to interface with home assistant or notifications in linux using a CLI tool. I also internally made another tool called go-reminders which I call go-automate to send myself reminders on a CRON like schedule to my desktop. This is where the inspiration came from for rebuilding the app.

Moving away from rust

The rust system was purely an interface between a frontend and a python backend previously. The main goal now is to not do that and keep the app simple and easy to maintain.

Goals

The final goal will be to iterate and make changes fast using go and interfacing with system commands or other tools

The first step is to get Home Assistant to connect and control the system using the current features

I am also introducing MacOS support here which previously I didn't. I don't have any apple devices so these will be untested, so any community contributions will be the driving forces here.

Linux and Windows will be the supported systems, where mac will become a "You can compile and try it" platform. If the community supports the mac side, we can release and unofficially support it.

This is not a like-for-like replacement. There will be some missing features. These parts should be left as stubs or set to the default, what home assistant expects, so there are no added errors day 0.

Personally I have not been using the app, mainly due to CPU/Memory usage, so this is a personal goal to make the app run as a small service which keeps low on system usage.

TODO

Continued in #3475

Confirmed supported working packages

  • Appimage
  • Flatpak
  • DEB
  • RPM
  • PKGBUILD (Arch Linux)
  • Windows (Setup)

Notes

There are a lot of TODOs left after this refactor. The plan is not to build a like for like replacement. The main goal is to create something that works with the Home Assistant integration without any changes and from there we iterate for 5.x.x changes

These repositories are now archived:

Sub-issues

Metadata

Metadata

Assignees

Labels

refactorImprovement of existing code, not introducing new features.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions