PineTime is a great option. I wear mine every day. The firmware is licensed under the GPLv3 and the companion app Gadgetbridge is under the AGPLv3.
The firmware codebase (Infinitime) is pretty simple C++, I was able to make a lot of cool customizations to my watch by hacking at it. Good fun if you like doing that sort of thing. Kind of reminds me of Pebble Time a little bit back when it had its moment.