frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

Open in hackernews

Show HN: A backend agnostic Ruby framework for building reactive desktop apps

https://codeberg.org/skinnyjames/hokusai
73•zero-st4rs•10h ago
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

Comments

whalesalad•9h ago
How would you compare this to RubyMotion?
zero-st4rs•9h ago
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/HipByte/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•9h ago
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•9h ago
Yup! https://hokusai.skinnyjames.net has a guide with screenshots.

The repo itself has more examples.

dismalaf•9h ago
Looks really cool. Just a curiosity though, why xmake instead of rake?
zero-st4rs•9h ago
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•9h ago
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•9h ago
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•5h ago
Ahah nice, I will definitively craft some GUIs for fun with your lib and make you some feedback. Thanks for this project !
samiv•8h ago
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•8h ago
Pretty cool! I've heard a lot of good things about Qt.
sunrunner•8h ago
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•7h ago
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•7h ago
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•7h ago
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•7h ago
Most UIs are made with web technologies without WYSIWYG. And now quite a lot of UIs on desktop are made with web tech.
xfalcox•8h ago
This looks super cool, exactly what I've been wanting to create some useful widgets! Thanks for sharing!
zero-st4rs•8h ago
Thanks! I'm really interested to hear how it "plays" for people. Would love updates if you use it.
jenadine•6h ago
First time I hear about "copyfarleft license".

I wonder what that means in practice for such a library.

viraptor•3h ago
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.

Charles Bukowski, William Burroughs, and the Computer (2009)

https://realitystudio.org/bibliographic-bunker/charles-bukowski-william-burroughs-and-the-computer/
22•zdw•1h ago•1 comments

Brandon's Semiconductor Simulator

https://brandonli.net/semisim/
32•dominikh•1h ago•1 comments

WebGL Water (2010)

https://madebyevan.com/webgl-water/
65•gaws•2h ago•15 comments

Fleurs du Mal

https://fleursdumal.org
62•Frummy•3h ago•21 comments

Business books are entertainment, not strategic tools

https://theorthagonist.substack.com/p/why-reading-business-books-is-a-waste
95•ZeroTalent•5h ago•38 comments

ALICE detects the conversion of lead into gold at the LHC

https://www.home.cern/news/news/physics/alice-detects-conversion-lead-gold-lhc
488•miiiiiike•11h ago•258 comments

What’s new in Swift 6.2

https://www.hackingwithswift.com/articles/277/whats-new-in-swift-6-2
113•ingve•5h ago•91 comments

Sofie: open-source web based system for automating live TV news production

https://nrkno.github.io/sofie-core/
274•rjmunro•13h ago•35 comments

Launch HN: Nao Labs (YC X25) – Cursor for Data

118•ClaireGz•9h ago•51 comments

Fighting Unwanted Notifications with Machine Learning in Chrome

https://blog.chromium.org/2025/05/fighting-unwanted-notifications-with.html
9•feross•1d ago•5 comments

21 GB/s CSV Parsing Using SIMD on AMD 9950X

https://nietras.com/2025/05/09/sep-0-10-0/
248•zigzag312•12h ago•129 comments

Some novelists are becoming video game writers – and vice-versa

https://www.theguardian.com/games/2025/apr/30/novelists-video-game-writers
26•ilamont•2d ago•17 comments

Stratolaunch Successfully Completes Reusable Hypersonic Flight and Recovery

https://www.stratolaunch.com/news/stratolaunch-successfully-completes-reusable-hypersonic-flight-and-recovery-with-talon-a2-vehicle/
5•speckx•2d ago•0 comments

PlainBudget – Minimalist Plain Text Budgeting

https://plainbudget.com/
19•jgalvez•2h ago•4 comments

Rust’s dependencies are starting to worry me

https://vincents.dev/blog/rust-dependencies-scare-me/?
195•chaosprint•17h ago•240 comments

Math Machine – A notebook will show your kid how far they have travelled

https://kidswholovemath.substack.com/p/math-machine
48•sebg•3d ago•7 comments

Past, present, and future of Sorbet type syntax

https://blog.jez.io/history-of-sorbet-syntax/
110•PaulHoule•10h ago•71 comments

New Tool: lsds – List All Linux Block Devices and Settings in One Place

https://tanelpoder.com/posts/lsds-list-linux-block-devices-and-their-config/
75•mfiguiere•8h ago•14 comments

Show HN: Hydra (YC W22) – Serverless Analytics on Postgres

https://www.hydra.so/
41•coatue•10h ago•19 comments

Itter.sh – Micro-Blogging via Terminal

https://www.itter.sh/
202•rrr_oh_man•12h ago•63 comments

Show HN: Aberdeen – An elegant approach to reactive UIs

https://aberdeenjs.org/
187•vanviegen•13h ago•102 comments

Reverse Engineering "DNA Sequences" in the Lost World: Jurassic Park Video Game

https://32bits.substack.com/p/under-the-microscope-the-lost-world
59•bbayles•2d ago•4 comments

Show HN: Hyvector – A fast and modern SVG editor

https://www.hyvector.com
247•jansan•15h ago•65 comments

Odin, a Pragmatic C Alternative with a Go Flavour

http://bitshifters.cc/2025/05/04/odin.html
72•hmac1282•8h ago•36 comments

Rollstack (YC W23) Is Hiring TypeScript Engineers (Remote US/CA)

https://www.ycombinator.com/companies/rollstack-2/jobs/QPqpb1n-software-engineer-typescript-us-canada
1•yjallouli•9h ago

NSF faces shake-up as officials abolish its 37 divisions

https://www.science.org/content/article/exclusive-nsf-faces-radical-shake-officials-abolish-its-37-divisions
477•magicalist•14h ago•615 comments

Six Days in the Dark

https://tonyyo11.github.io/posts/Six-Days-in-the-Dark/
9•firexcy•3h ago•1 comments

CryptPad: An Alternative to the Google Suite

https://cryptpad.org/
159•ColinWright•14h ago•62 comments

Bento gets a makeover

https://warpstreamlabs.github.io/bento/
13•ordinarily•1d ago•9 comments

Show HN: A backend agnostic Ruby framework for building reactive desktop apps

https://codeberg.org/skinnyjames/hokusai
73•zero-st4rs•10h ago•20 comments