[HN Gopher] Show HN: A backend agnostic Ruby framework for build...
___________________________________________________________________
Show HN: A backend agnostic Ruby framework for building reactive
desktop apps
For a year or two I've been building a UI library with the aim of
making desktop applications fun and easy to write. It is currently
written in C/Ruby and uses a custom tree sitter grammar to describe
templates. Features include: composable UI components, template
directives, event and prop handling, slots, styles and automation
capabilities baked in. One of the goals of the project is
privileging easy to write custom components via a drawing API over
providing a fixed set of components. At the time of this writing
it should install on Windows, Mac, and Linux, but sometimes it is
hard to test the install on all platforms. I'd love to hear any
feedback or suggestions on the project. It is still in an early
stage, but it would be great to hear thoughts. Docs are here:
https://hokusai.skinnyjames.net/ Repo is here:
https://codeberg.org/skinnyjames/hokusai Licensed under the PPL
Author : zero-st4rs
Score : 57 points
Date : 2025-05-09 16:01 UTC (6 hours ago)
(HTM) web link (codeberg.org)
(TXT) w3m dump (codeberg.org)
| whalesalad wrote:
| How would you compare this to RubyMotion?
| zero-st4rs wrote:
| Great question. From what I understand of RubyMotion, it
| compiles directly to native, calling into Objective C APIs, and
| like DragonRuby the Ruby implementation is not MRI.
|
| Since Hokusai uses MRI, one can pull in from that ecosystem of
| gems.
|
| RubyMotion also appears to support (iOS, Android, OSX) whereas
| Hokusai intends to support OSX, Linux, and Windows.
|
| Implementation-wise, the framework itself seems different.
| Looking at the following [RubyMotion app](https://github.com/Hi
| pByte/RubyMotionSamples/tree/master/ios...), the logic is
| spread out over separate files and it doesn't appear to have a
| templating language.
|
| On the other hand, Hokusai UI components are just a class that
| inherits from Hokusai::Block, and are self contained blocks
| that can be stitched together.
|
| Hokusai is more like Vue Single file components in this regard.
| Hokusai also doesn't make a distinction between a "component"
| and an "app", they are all just Blocks.
|
| Does that answer your question?
| iraliaf wrote:
| this is really cool, thanks for contributing to the ruby
| ecosystem!! Do you have any example sites? I couldn't find a
| reference on your overview
| zero-st4rs wrote:
| Yup! https://hokusai.skinnyjames.net has a guide with
| screenshots.
|
| The repo itself has more examples.
| dismalaf wrote:
| Looks really cool. Just a curiosity though, why xmake instead of
| rake?
| zero-st4rs wrote:
| Good question! Most of the development build fetches and
| compiles C dependencies. xmake happens to be really good at
| this, especially considering xmake-repo.
|
| Rake tasks don't have builtins for this iirc.
| az09mugen wrote:
| Very cool project, and well thought with the choice of Raylib or
| SDL2. But since Raylib can compile to Android (https://github.com
| /raysan5/raylib/blob/master/examples/Makef...), do you think it
| could be difficult to add Android as a target platform ?
| zero-st4rs wrote:
| Interesting, for sure. I don't know much about Ruby on android
| (the resulting application will absolutely need a ruby
| interpreter) but I thought Windows would be a no-op and I got
| it working there, so who knows? :)
| az09mugen wrote:
| Ahah nice, I will definitively craft some GUIs for fun with
| your lib and make you some feedback. Thanks for this project
| !
| samiv wrote:
| Cool.. I guess but I just wonder.. is writing the UIs in code an
| actual practice that people do these days?
|
| I program (mostly) in C++ using Qt for my UIs and I just use the
| Qt Designer to visually drag and drop to build my UIs and the
| actual code gets generated by the tool.
|
| Fast and simple.
| zero-st4rs wrote:
| Pretty cool! I've heard a lot of good things about Qt.
| sunrunner wrote:
| As an end user, what's the licensing situation like with Qt? I
| was looking to build a cross-platform desktop application (down
| the rabbit hole...) and was frustrated with the number of
| options that were just a web view of some sort and some
| bindings to a JS/TS framework of your choice (I don't have one
| and don't really want to have to use one or bundle it with the
| application).
|
| Qt looked interesting, particularly with the concise syntax
| afforted by QML and QtQuick, but the licensing was off-putting
| and even just getting access (for a non-commercial project for
| example) seemed to require an awkward sign-up and some kind of
| installer.
|
| I crave the conciseness and simplicity of something like
| SwiftUI but the options for doing that in a cross-platform way
| seem limited.
| samiv wrote:
| It's double licensed. The Qt Company offers both a commercial
| and LGPL license but they do their best to bury and hide the
| LGPL option and use dark patterns to try to trick one to get
| the commercial license. They also want to push you towards
| getting an account with them for the installer.
|
| That being said the packages (without online installer) are
| also available for direct download when you know where to
| look... [see link below]
|
| If you're on Linux though the situation is much simpler since
| your distribution most likely already packages the Qt libs so
| you just use your package manager to install them and off you
| go...
|
| Regardless, for anyone looking for a native portable toolkit,
| I don't really think there's anything that comes close to Qt
| in terms of functionality and tooling (like Qt Creator and Qt
| Designer) and once you get over the idiosyncrasies and quirks
| its really quite good (for the most part).
|
| https://download.qt.io/official_releases/qt/
| sunrunner wrote:
| I'm on macOS a lot of the time so I did get to the
| installer part and immediately stopped as it felt like
| LGPL-licensed software should be accessible without needing
| an account, an installer (is it useful?) or anything except
| allowing the end user to access libraries and headers
| directly.
| samiv wrote:
| For the developer that knows what they're doing the
| installer is not absolutely necessary, you can just
| download the zip (or tar.gz) and extract the whole thing
| somewhere and go from there. The installer does provide
| some more advanced features such as selecting feature by
| feature and version by version which Qt components you
| want to install. At least this is how it works on
| Windows, I expect Mac to behave similarly.
|
| For the end user of your product you'd of course package
| your software with the Qt libs (or integrate the Qt
| installation process in your application installation
| process) so that the end user doesn't need to know nor
| care about Qt installation at all.
| teaearlgraycold wrote:
| Most UIs are made with web technologies without WYSIWYG. And
| now quite a lot of UIs on desktop are made with web tech.
| xfalcox wrote:
| This looks super cool, exactly what I've been wanting to create
| some useful widgets! Thanks for sharing!
| zero-st4rs wrote:
| Thanks! I'm really interested to hear how it "plays" for
| people. Would love updates if you use it.
| jenadine wrote:
| First time I hear about "copyfarleft license".
|
| I wonder what that means in practice for such a library.
| viraptor wrote:
| Could you add some information about licence? Currently I don't
| know what is it compatible with and it's not listed on OSI. So
| unless someone's up for reading lots of legalese, it's not easy
| to use/publish.
___________________________________________________________________
(page generated 2025-05-09 23:00 UTC)