Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Building a plugin system is hard. Building one that allows creating complex UI elements, modifying other UI elements (from either the core app or other plugins) or changing the way literally anything is rendered is particularly hard.

You not only have to build the code that supports all this, you also have to create and document an API and/or markup format to build all this out, plus document all your internal integration points.

If you want other developers to really take it up and build plugins, you have to make it easy to get into, so that means not just documentation, but great documentation, plus tutorials, examples and tooling to help.

You get a big chunk of that for free when you use HTML/CSS/JS.

Fire up VS Code, go to Help > Toggle Developer Tools, and poke around for a few minutes. Imagine the amount of time it would take to build a similar experience to just this one aspect if you were doing this from scratch.



Or you could use Lisp, and have the UI be S-Expressions. Everything can edit a list


Can you give me an example of a Lisp UI library like that?


Two come close but aren't quite there...

Seesaw [0] - A nice-ish way of using Swong in Clojure.

Iup [1] - One of the friendliest GUIs I've used, hands down. Just feels like Scheme.

However, I'd expect that QML and X-Expressions could go hand in hand to make something much closer, with a bit more flexibility.

[0] https://github.com/daveray/seesaw

[1] https://wiki.call-cc.org/iup-tutor#hello0scm


> Fire up VS Code, go to Help > Toggle Developer Tools, and poke around for a few minutes. Imagine the amount of time it would take to build a similar experience to just this one aspect if you were doing this from scratch.

Don't do it from scratch then. You can use GtkInspector to poke around with any GTK+ application, by pressing Ctrl+Shift+I.[1]

[1]: https://wiki.gnome.org/Projects/GTK%2B/Inspector




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: