Remarkable is actually very open. Getting root access is as easy as going to the bottom of the About page to get the device's ip and its root password for SSH access.
But still, the hacking scene is far from big. There is no SDK. You can do things with QT but for a lot of use cases, you have to work directly with the screen capacities. e-ink screens are not good old framebuffer screens. If you want to have nice performance (like, instant note taking), you have to actually "draw" things on it.
You can draw things relatively fast on an e-ink device. But you can not draw a lot of things at the same time. That's why you have to wait maybe a full second between two pages of your book, but you can also have a blazing fast writing experience.
So the display paradigm is totally different compared to a classic screen and you can't just port existing apps. Well, you can, but it'll be without the "smart refresh" part. So it will be slow. If you want something usable, you have to think what and when to draw things on the screen.
Hence, few usefull apps exists on remarkable, because you have to build them from zero, with no real documentation, and to target a niche.
It would be great, if there were more documentation to get started with developing for the remarkable and perhaps a few shared libraries with commonly used functions, e.g. just to be able to display a given png. Even if it were just a command line program, it would enable many usages.
It is trivial to compile Go programs for the reMarkable - just compile with ARM as a the target architecture. One can do that on any machine with Go installed. But for the lack of APIs, I have had no idea yet where to reasonably start with programming the reMarkable.