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.
> 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
>> 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.
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.
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.
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.
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?).
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.
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.
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.
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.
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).
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)
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.
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").
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.
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.
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.
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...
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.
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.
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.
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
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 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…
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…
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.
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/