Why Nostr? What is Njump?
2023-10-03 18:59:35

M. Dilger on Nostr: FORKING GOSSIP to change the UI: Gossip is MIT licensed and so you can do anything ...

FORKING GOSSIP to change the UI:

Gossip is MIT licensed and so you can do anything you want with it, including forking it.

I don't mind. I don't consider it a slight against me, and I won't push back. In fact, I recommend forking gossip if you want to change the UI, and I will even help you by supporting new backend functions that you need to get your UI to work (presuming you will be merging in upstream changes outside of the UI).

I've had lots of requests to change gossip substantially. Every single one of them has been with regards to it's UI. Nobody suggests changing the storage engine, or creating async functions that wait on relay responses. Everybody seems to care only about the UI. Well guess what? I consider the UI a necessary evil, a thing that must be coded, but not something I have any real interest in, and generally a distraction from the much more interesting work. That is why I partnered with several other developers who are more keen on UI development.

The problem I have with all the requests to change gossip's UI is that they all go in different directions. They can't all happen. Everybody has a different vision for how they want the gossip UI to work. Which is why I think forks are a good idea. Everybody can get what they want, if they put in the effort.

So here is the thing: gossip's UI is cleanly divided from the rest of the code. The UI reads from global structures and sends messages to the overlord (but you could call overlord functions directly if your UI isn't immediate-mode and is async). It is currently designed for worst case: single thread, not async, immediate mode rendering. But that means it could easily handle all the other cases. You could rip it out and put in an entirely different UI... tauri, gtk4 ... you could probably even get it running under WASM and make the browser the UI.

Most people with grand UI designs don't also write rust code, so I'm not sure if anybody is going to take me up on this. But if anybody was thinking about it and hesitating because they didn't want to make waves, maybe this post will smooth that over.
Author Public Key
npub1acg6thl5psv62405rljzkj8spesceyfz2c32udakc2ak0dmvfeyse9p35c