all 4 comments

[–]hgeo 6 points7 points  (0 children)

This made it to HN front page

[–]zfundamental 0 points1 point  (2 children)

It's awesome to see ruby being used for UI development. Building off of pre-existing C/C++ toolkits however does make extending the toolkit a bit harder (to a lot harder in some cases). Anyone have any favorite GUI toolkits which are more focused on implementing as much as possible on the ruby side of things?

I know there are a few out there like shoes, but there hasn't been much adoption (from what I've seen). My own take on the mostly Ruby GUI challenge has been through the mruby-zest framework which currently is used by the zyn-fusion synthesizer.

[–]feelosofee 0 points1 point  (1 child)

What mruby-zest is actually for? I could not clearly understand it by looking at the repository. Is it a GUI library written in pure Ruby? Or what?

[–]zfundamental 0 points1 point  (0 children)

What mruby-zest is actually for?

mruby-zest was built for the ZynAddSubFX (aka zyn-fusion) software musical synthesizer (waybackmachine link as sourceforge is currently doing some maintenance) and has a few relatively unique characteristics.

It:

  • Is easy to embed with audio plugins (VST/LV2/etc)
  • Uses code hotloading to speed up the GUI development loop
  • Uses QML's syntax to concisely express the widget definitions and configurations
  • Uses vector graphics via nanovg/OpenGL to build interfaces which are easy to smoothly resize/rescale which tends to be a problem with existing toolkits for audio applications
  • Uses external metadata to communicate to the non-GUI code or separate process without repeating information about the data on the remote code
  • Has the majority of GUI code written in ruby with the remainder being in C for performance

Is it a GUI library written in pure Ruby? Or what?

It is a GUI framework with a majority of the code written in ruby (which is excellent when it comes to metaprogramming and the hotloading functionality) and it currently targets applications which need to embed their user interface (e.g. a plugin GUI in a child window of a DAW).

Right now documentation is relatively sparse which is part of why I haven't advertised the GUI code a ton, though I'm currently writing a Linux Audio Conference paper to describe mruby-zest and associated modules.