Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Shoes makes building little graphical programs for Mac, Windows, Linux simple (shoesrb.com)
181 points by johnchristopher on Feb 24, 2024 | hide | past | favorite | 81 comments


I used Shoes two (edit: three according to git) years ago to build a small software[1]. At the time there was a version 4 ongoing heavy development based on top of JRuby but I think it’s in the same state. The version 3.3 listed here has been officially abandoned by the sole developer. At the time they wrote a blog article about stopping the project but the blog is not available anymore (it’s the link in the description of the project [2]).

Already two years ago shoes 3.3 was crashing a lot unexpectedly so I wouldn’t recommend using it for anything serious. But if you want to access the documentation online I made a small website for that [3]. The official documentation is only available in the executable which isn’t great to browse.

- [1] https://gitlab.com/png-glitch/legacy-glitched-factory

- [2] https://github.com/shoes/shoes3

- [3] https://radoteur.frama.io/shoes-unofficial-documentation/


> At the time they wrote a blog article about stopping the project but the blog is not available anymore (it’s the link in the description of the project

http://web.archive.org/web/20211205200902/https://walkabout....

>> As you have guessed by now, I’m not maintaining Shoes 3 anymore. I do still answer some questions on github but nothing new is likely. I owe you an explanation of why. It’s pretty simple. My health is bad and is not going to get better.


That snipit's a little misleading without the follow-on next sentence:

> The Shoes community (Shoes 3 or Shoes 4) is not growing and there is little enjoyment in working on code that no one else cares about enough to help code the internals. The underlying technology employed is evolving in ways that run counter to what Shoes is and does. It’s just time to quit. We had fun, we learned some things and we’ll leave it at that.

And then a lot of text about wandering off into home automation, Arduino, and 3D printers.


What might you suggest as an alternative? PySimpleGUI? Tk?


Just a heads up: PySimpleGUI 5 isn't open source any more [0], and the official GitHub repo was replaced with a stub [1]. From the blog post, it sounds like the people behind it will probably remove the FOSS version from PyPI soon.

It's possible the community will fork it with a version of PySimpleGUI 4 that's still kicking around, but I haven't seen one yet.

[0] https://news.ycombinator.com/item?id=39369353

[1] https://github.com/PySimpleGUI/PySimpleGUI


Oh, this isn't good. It was one of the better options available, and the only one of those which was FOSS.


Sad days


I'm the perfect target user for something like this -- long time "scientific" programmer, who is sometimes asked to create a useful little app for a limited audience. Nothing I write will ever see the light of day as a software product.

I use Tkinter. It was not hard to learn at all, and while it's not comprehensive, it gets enough stuff done. And it comes with the "vanilla" Python istall.

What I did with Tkinter, starting more than a decade ago, was to create my own little "wrapper" that simplified things even further. Each of my little functions or objects incorporates what I've learned about a widget and imposes a default -- ugly but functional -- layout. That way, I never have to look it up again.


So is it using swing under the hood? Is that the reason it is JRuby?


It kicks an immediate feeling of joy in me whenever anything related to _why is mentioned.

For those who never encountered his work, I'd recommend very much checking out "Why's Poignant Guide to Ruby". It doesn't matter if ruby is nothing you want to learn, it's just a fun, artistic, odd read. So is Nobody Knows Shoes, of course.


An account of _why's merry adventures from 2010: https://www.smashingmagazine.com/2010/05/why-a-tale-of-a-pos...


I have little web culture, but I always love internet stories like that. It really is a contrast to social medias. Maybe it's because on such blogs and fragment of life, it's the human that "do the internet", instead of the internet doing the human( if that makes sense?).


O _why where art thou?


> "Nobody Knows Shoes" by _why. Read this if you want to get a solid understanding of the basic concepts of Shoes.

Now that's a name I've not heard in a long time.


_why is/was everything the tech world needs. Just a pure joy.


I recently used platypus [1] to turn a ruby script into a macos menubar app. Something for which I wish there was a windows variant...

Embedding a script into a small tray icon/menubar app can be extremely powerfull even with its low complexity.

[1]: https://github.com/sveinbjornt/Platypus


glimmer-dsl-libui is a more actively maintained alternative

https://github.com/AndyObtiva/glimmer-dsl-libui

How do Glimmer GUI DSLs compare to Shoes?

https://github.com/AndyObtiva/glimmer#faq


I do like ruby a lot but I never grokked what was so great about _why, even though I coded ruby when he was active. Felt like a cargo cult. Maybe it was the depressive vibe of his stuff.


He was a poet who could code. Not a software engineer.

(disclaimer: I really like most of his ruby stuff)


Same here. I never understood why the poignant guide is so loved. I could never get past the first couple pages cuz it felt so random.

Always thought I was missing something.


Does this still work on current versions of Ruby? The GitHub repo looks like it has a commit as recently as 3 months ago but the project hasn't made a release to Rubygems since 2017.


That commit was updating the readme to remove a site which (presumably) was once valid but is now malicious. Looks like it's been 5 / 6 years since it's seen activity.


It seems that it works with JRuby, not with MRI.

> We recommend using JRuby 9.X+, with the majority of our testing currently against 9.1. JRuby 1.7.x may work, but has been untested since 4.0.0.pre6.

Your question is still appropriate because they tested with 9,1 and JRuby is at 9.4

About MRI compatibility see https://github.com/shoes/shoes4/issues/1235


JRuby is very cool. For CRuby I can recommend glimmer libui which works on Windows, Linux and OSX For windows packaging, check out ocran.


It looks like an already dead technology.

Shoes 4 runs on Java and JRuby and the website states that JRuby 9 doesn't work with Java 9+ plus yet, which is in turn amazing, since we are close to Java 22 now more than Java 8.

Is this really a sustainable way to build GUIs?


I'm not sure shoes is sustainable, but I think jruby runs on any modern JVM, where did you get the information that it does not work on java 9+?

Edit: I see, the readme for shoes4 is itself many years old.


It look very interesting. But TK libs, available for a lot of programming languages,are still a powerful and easy way to implement gui. In my own pov, the perfect solution would be, not to import TK in various programming language, but to embed directly in a TCL environment any programming language I need.In this case, it would also be nice to access to TK components behind a oop layer.


I'm curious, this is a cross-platform UI library. Does anybody know of any alternatives out here that are (if necessary) MacOS-specific but also easy to use and more "native looking"? Maybe a bit drag-and-droppy?

Sometimes I want to build quick and dirty things and a whole proper Mac app on Swift is too much out of my confort zone.

Maybe GTK/glade?


I used to use PythonCard but it’s been dead for about a decade now. It was inspired by HyperCard and VB, had a GUI designer, and was super simple. It used used wxWidgets for the GUI so it was native looking if you didn’t push it very hard (ie use only basic GUI elements like buttons, menus, and edit boxes).

https://pythoncard.sourceforge.net/walkthrough2.html

This is one of those projects where, if I were retired, I’d love to revive.


Decker is well and alive. It does have its own programming language but the effort put into it and the project is astounding.

https://internet-janitor.itch.io/decker


Decker is amazing, and I use it a lot, but the lack of network connectivity is unfortunate and understandable.


QT is probably the closest you'll get, and at that point you might as well just learn cocoa (or whatever the swift version is called these days, i forget)



Qt and wxWindows


Have you looked at SwiftUI?


Related. Others?

Shoes The easiest little GUI toolkit, for Ruby - https://news.ycombinator.com/item?id=34456337 - Jan 2023 (1 comment)

Shoes - https://news.ycombinator.com/item?id=23675819 - June 2020 (34 comments)

Shoes – An easy little GUI toolkit for Ruby - https://news.ycombinator.com/item?id=17103569 - May 2018 (36 comments)

Shoes, a Ruby GUI toolkit, now has some sweet apps. - https://news.ycombinator.com/item?id=120713 - Feb 2008 (1 comment)


I specifically want to build a fullscreen application that has a translucent window for a quick note taking tool. An "overlay" drawing over the actual window manager if you will. Am lost as to where to start or what to use.


That’s basically what one of the first apps I ever wrote did!

But that was back in 1999, and it wasn’t hard to choose a framework, Visual Basic 6 was so fun and easy.

If I wrote it today I’d use .net, and im not sure if it’d work on Mac/Linux too, but maybe it would.


Oh my God, Shoes!

https://www.youtube.com/watch?v=wCF3ywukQYA

This is up there with Tk and PySimpleGUI, UI programming as it should be.


As someone who has looked at Shoes several times but never dove in, it's confusing how Shoes 4 has been the "preview version" of Shoes for, like, a decade or more. It made me actively avoid getting invested in Shoes 3 (the release promoted on the linked website) because Shoes 4 requires JRuby and I am happy with CRuby (the Ruby interpreter most people think of when they hear "Ruby").

https://github.com/shoes/shoes4/

http://www.rubydoc.info/github/shoes/shoes4

No disrespect to the developers but to me it feels like taking over a GUI toolkit created "to teach programming to everyone" (to quote the Shoes 4 readme) and making it depend upon a super-complicated enterprise-focused Ruby was sort of Missing The Point™ in a huge way.

Heck I couldn't even switch to JRuby if I wanted to because I <3 Ractors and JRuby still lacks CRuby 3.0 feature parity: https://github.com/jruby/jruby/issues/7459


In my experience, JRuby is a lot easier to work with than The C version, if only because you don't have to deal with linking to a TLS/crypto implementation.


Sad that it's not a WYSIWYG. The old Visual Basic will forever be the benchmark for how easy it is to make a GUI. If it's not that easy I don't wanna hear about it.


If this project is abandoned, what are the simple options for building graphical programs on Mac, Windows, and Linux?


If you're specifically looking for something like Shoes, here are two similar projects in Ruby.

Scarpe, a WIP revival of Shoes: https://github.com/scarpe-team/scarpe

Glimmer: https://github.com/AndyObtiva/glimmer


Since you didn't explicitly mention Ruby, I would dare to suggest Lazarus, which is Free and open source, multi platform and produces compiled native code everywhere.

https://www.lazarus-ide.org/

That is the quickest and most straightforward way of making GUI applications I'm aware of, with the only drawback that it uses Object Pascal as supported language, but being it Open Source I can hope one day we'll see some support for other languages too.



I've used fyne a couple times, and it couldn't handle something very basic: it couldn't render glyphs outside the built-in font and optionally, exactly one custom font (FYNE_FONT). Which means you're screwed or at least severely crippled if you want to support any kind of user-created content for an international user base. This problem has been brought up a million times on the issue tracker, and I don't think it has meaningfully advanced: https://github.com/fyne-io/fyne/issues/2572#issuecomment-154...


Flutter? Dart seems interesting, although the fact that it wanted to track my usage, while very on-brand for Google, was a big turn-off.


wxPython is somewhat simple for at least small apps. You need to know and install Python. One plus is that it has many example apps showing use of various widget and features of the toolkit.


Hate to say it. Electron.


Looking at the electron documentation, it doesn’t seem nearly as beginner friendly.

It mentions this…

>this tutorial assumes you are generally familiar with Node and front-end web development basics. If you need to do some background reading before continuing

Then goes on to say you shouldn’t just know web dev and Node, but also the CLI and git, as well as installing node.js and npm.

Those are a lot of barriers to entry for a beginner who is looking for a quick win to get them to keep going.



I have a lot of fond memories of Shoes and the project that spawned it Hackety Hack. I used shoes to make dnd character sheet creators, munchkin score cards, and guis for lots of board games. Hackety Hack was a fun way to learn Ruby and Shoes made it very easy to make simple guis.


I remember trying this out back in the day when I was working on Ruby and Rails.

Don't remember what the experience was like at that time.

When I went to the tutorials page just now, some of the code is truncated on the left side of the screen. Probably a CSS issue.


Dropping in with a brief note that you should please, for the love of god, not name your product after the plural of a common noun. “Shoes is a popular framework” makes my brain hurt.

Nowadays is there any reason why you would do something like this instead of standing up a local devserver and delivering the gui via HTML? After using textual for a few months I’ve become pretty anti-gui for small local projects - web is just infinitely more mature and extensible than any little framework.

But maybe I missing the point?


The web is also rather complicated to set up and run.

A simple binary that one builds or downloads and runs is often far simpler than setting up VPSes, SSL, and so forth. And typically "web" projects are ran on complex setups where one needs the right runtime, a database, some weird bundling/dependecies step (that breaks after a few months).

Shoes has the same problems of a fickle runtime and flakey bundling step as Rails, Django, Laravel,Express and whatnot have. So it's a bad example.

But a single statically built go or rust binary is just so much easierto runthan hosting any web-app.


All very fair! I guess I was thinking of the small CLI-related usecases that this is a more natural fit for. Writing a little monitoring gui for your program, making a few graphs from local files, etc. In that context I see web only requiring one-command startup (ie `npm start`), maybe two if you want a database. And then you have the entirety of the internet to steal from, rather than just the other Shoes/Textual devs.

Long story short, I think your answer is a great consideration of typical modern web servers, but I was suggesting the use of the protocols in a more unusual way. Namely, writing web programs that you don’t intend on ever publically hosting


> “Shoes is a popular framework” makes my brain hurt.

It’s a matter of getting used to. Note that Rails is an even more popular framework.


One of my biggest gripes with Ruby (probably after the abuse of `method_missing` to add unsearchable method invocations) has got to be the naming of packages. I have no data to back this up so I might be off-base, but in my decade-plus of working with the language I have many memories of becoming frustrated because I couldn't remember a library's name or couldn't immediately figure out the function of a library I found in a Gemfile or an import. This is absolutely a problem with all modern package-oriented languages, but for whatever reason I perceive Ruby as having the worst case of it of all the ecosystems I've used.


I'm afraid everyone does this, I did java for a while and I still don't know what "Catalina" is and how it related to Tomcat.


Do you remember what was the name of that library? What name would you prefer instead?


An example: nokogiri. Something like “libxml-sys” would be more obvious.


I see your point.

At the same time Nokogiri for me has more character. It feels justified too, the gem is everywhere and it’s very useful.

Also, since this is one of the most popular ruby gems, it’s hard for me to imagine that a rubyist would forget what this gem is about.

Plus, there is already a “libxml-ruby” gem. I like having library names that are distinct.

But yes, ruby does indeed have a lot of names like Nokogiri, (or Capybara, or VCR, etc).


I shared this view and built my partner a little web app to use for aggregating peer reviews for her students. It worked fine for a couple years until she had to go on maternity leave and hand it over to her replacement while she was gone. Due to data/privacy concerns it couldn’t be easily publicly hosted. It ended up being simplest to wrap it up as a Tauri App (coincidentally also on the HN front page right now) and distribute it that way. It’s now being used by a few people and I never have to worry about keeping it operational or losing/leaking data.

I guess in some ways I still went with your suggestion since it’s an html based gui, but local apps make data ownership way less problematic and are the right choice sometimes.


Great great example! Yes I was referring to exactly this - still making a local app for privacy/complexity reasons, but using html for the actual GUI. Will look into Tauri, never heard of it…


Ironically, it's a library for use with "ruby"... Common nouns are fine. Just need a little qualification for search "ruby lang", "shoes ruby gem"?


I think the issue is the grammar of it. “Shoes is” instead of “Shoes are”.


"James is" instead of "James are".

All those people with names ending with "s" make my head hurt. Curse you James, Chris, Thomas, Charles and all the others with their fancy and exotic names!

Seriously, proper names are fine to end with "s" as their isn't really a meaningful plural form. Shoes is used as a name here so "Shoes is" is grammatically correct.


Yes it is grammatically correct, but it is linguistically and aesthetically an attack on my delicate sensibilities. To me it sounds less like “James is” and more like “jameses is”. A framework is one individual thing, naming it after a plural noun is a weird juxtaposition. Like naming a kid “jameses”, or a dog “rovers”.

Plus “shoe” would be an AWESOME name for a framework! Missed opportunity…


Cli is fine when cli is fine, and not when it's not.

Web is fine when web is fine, and not when it's not.

When is a gui app better than either cli or web? Sometimes.


> But maybe I missing the point?

maybe! coding can be playful and computers are for everyone.

https://github.com/whymirror/why-archive/blob/master/shoes/n...

https://imgur.com/a/GeZUEh6


> web is just infinitely more mature and extensible than any little framework.

> But maybe I missing the point?

I'm just looking at WhatsApp taking 150% CPU (plus 30% from a whatsapp helper) and ruining my laptop's battery.

This is the "infinitely more mature" future you want.


Cool to see a logo for an open source project that isn't terrible


I've always loved the idea of "Shoes". Can you make Shoes components that can be reused in other Shows apps too?


All (*) GUI libraries make simple UI making simple. : )

(*) Almost all. Most of them.


can't believe it's been ten years since I played with shoes. And recently started going down a similar rabbithole with rich/textual


I want this, but for iOS and Android.


There was Dragon ruby and rubymotion - but I think they are also defunct?


DragonRuby is not defunct and actively receives updates. It also sponsored several game jams. The last update, according to their Discord, was on January 25th 2024.

RubyMotion I can't really vouch for.


Dragonruby is actively developed and quite fun to work with, but I'm not sure it's the same thing.


WOW. What a blast from the past




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

Search: