Show HN: Halloy – A GUI Application in Rust for IRC
github.com
github.com
The feature list is really impressive: https://github.com/iced-rs/iced
Plus, here is the road map with many things already done: https://github.com/iced-rs/iced/blob/master/ROADMAP.md
Wow, wow, wow: Keep up the great work.
One of the rendering engines is Skia by Google. This library is sneaking up fast on us...
Consider this idea: Most people who use a table class in a GUI framework assume it is essentially infinitely scalable (myself included!). I am talking about millions of rows or thousands of columns with all kinds of silly widgets injected into individual cells. It is a crazy hard computer science problem to solve. I would not doubt there are many PhD thesises written on the topic of fast, scalable table widgets.
Beyond desktop GUI toolkits, people have tried to do the same in a browser (HTML/CSS/JS). Have you seen AG-Grid? Woah, it is unbelievable how much goddamn data you can squeeze into that widget. Most Wall Streets web-based trading apps use it one way or another. It's just so hard to beat. Ref: https://www.ag-grid.com/ There must be 1,000 person years of optimisation sunk into that implementation.
I've wanted to work on a few tiny tools in Rust, but so much of my workflow relies on proper clipboard support that it's never worked out.
Maybe some day I'll have time and energy to work on this, but the issue seem to come from underlying libraries providing abstractions that just don't allow properly inter-operating with the clipboard.
Of course, this isn't a problem for an IRC client, since you can't send images or anything like that anyway.
This seems to have a form of drag and drop in the demo gif.
So here’s a question: if I download this, what’s a good place to hang out?
PS I’ve never used this Ui toolkit (being an egui man myself) but that panel snapping looks amazing!
I've run https://n.tkte.ch/ for the last decade and it's bots are currently connected to over 200 unique, active IRC servers. Still very much alive!
Simpler configuration, easy voice chat and screen share, simpler administration, user accounts and profile pictures by default, visually appealing and more noob-friendly client, persistent chat history, media embeds, file uploads, rich presence, etc...
I personally think persistent message history (XMPP botched that rollout terribly) - which goes hand-in-hand with multipresence - and the extreme dearth of any - let alone actually good and usable - IRC (or XMPP) mobile clients (esp. on iOS) was the real reason they lost mainstream use.
Multipresence is more than just a checkbox; doing it correctly involves actually setting up a SSO system with actual first-party user account support (not just relegating it as a stateful detail of the underlying IRC library you are using). IMHO actual account integration would have bound users more loyally to IRC and would have created more of a "network effect".
Inline attachments, emoji reactions, etc are all just icing on the cake.
Message history on the other hand is a huge Discord feature for me as is inline attachments (e.g. being able to post code snippets without having to use s pastebin).
Native attachments support was personally a big thing for me (inline images or gifs.. not so much) but what I meant to say is that I think the ecosystem could have survived without it if that were the only issue - just look at how long Reddit went without any sort of image or video upload support. Ultimately and "at some point," attachment support would have "just happened" naturally. I just really think multi-presence w/ history and the lack of a good web or mobile client was the bigger deal. Unlike attachments which you can just staple on to the UI and squint at it the right way, these were actual, fundamental issues that required a rearchitecture (or even rewrite) of existing servers and clients, and despite how obvious their importance was (at least to some of us) the mainstream client/server options didn't really relish the idea or jump on board.
I still vividly remember being locked out of a hacker space maybe seven years ago and needing to figure out how to get on the irc from my iPhone. I scoured the app store looking for a good (free) client for this one-time need I had and found nothing. I searched online and found a really shady, insecure, and ad-infested website that would open an IRC connection in the backend and then stream the text to your browser in an interface intended for desktop use. The interface was neigh impossible to use on a phone, all the UI bits were overlaid atop of one another, text wrapping was broken, etc.
I was able to use this to post on the IRC channel and get someone to let me in, but every time I changed tabs or my phone timed out and turned off, the connection would be severed and I would have to start again.. and ask "sorry did anyone reply to my earlier message, I am logging in from a web frontend and was forced to refresh, I might have missed your reply if you did."
Never had an IRC server want to verify me through SMS or FORCE me to update my client.
> simpler administration
IRC is just a ban list, an except list and an invite list.
> user accounts and profile pictures by default
Don't want it.
> persistent chat history
Liability.
Which destroyed several channels through spam. The authentication is a feature.
Now use that to implement RBAC for a server with a hundred channels.
Go ahead, I'll wait.
Less pithily, IRC's built-in permissions may be simple, but they're so simple primarily because they're basically useless for real moderation tasks. Every IRC channel I've ever seen handles moderation with a mod-bot, and "set up a bot" instantly blows the complexity budget.
Don't want it.
You may not, but many others do, like myself.
Lets be frank, IRC is boring without content. There is no easy way to share any imagery, videos. Any form of simplification of media hosting is a tragic mess.
> Never had an IRC server want to verify me through SMS or FORCE me to update my client.
NickServ.
"If you don't register your nick in 1 minute you be renamed to "anonymous".
I've been on networks where mIRC has been banned which is my client of choice.
Are you sure it was prompting you to register rather than to authenticate? It sounds like you were using a nick someone else registered, but you can usually use unregistered nicks freely.
I've visited networks where you have forced you to register nicks. You have the option to leave, but same principle.
"To use this server you MUST register with IRC services."
The server had mandatory nickserv registration.
You share it the same way you share it on r*ddit. Upload it to imgur, imbb or whatever.
> NickServ. "If you don't register your nick in 1 minute you be renamed to "anonymous".
It's telling you exactly what you need to do. If you don't like having services, don't use a server that has services.
> "You can't use BitchX on this network" I've been on networks where mIRC has been banned.
You're free to make your client respond however you like.
> IRC is boring
IRC is just a tool. If IRC is boring, it's a reflection of you and your friends.
I can drag and drop with Discord, Slack and Teams. And look its there!
No one wants to click links. I updated my post, but to send any type of media is a tragic-mess for IRC. Including if its hosted on my own domain as my own nick!
> It's telling you exactly what you need to do. If you don't like having services, don't use a server that has services.
Right, sure.
> You can't use BitchX on this network" I've been on networks where mIRC has been banned. You're free to make your client respond how
And to a user who wants to join and connect, I don't have time to do that anymore. That it self is tech-savy stuff. Not so easy for the average user. It's not common, but networks have implemented.
> IRC is just a tool. If IRC is boring, it's a reflection of you and your friends.
IRC is a protocol, the client is the tool to connecting to the network. IRC as a whole provides the services to communicate and if no one is communicating as like "your not 1337 because your not using a znc bouncer with irssi"
Or those folk who already know each other in channel and don't want to reach out to new folk even introduce newbies to the channel.. you don't have a voice.
Or just a channel with a topic that's not been changed since 2017.
I -really- dislike Discord, it sucks. However at least it's easy and tacky enough to allow you to introduce yourself rather than black text on a white background. It allows you to enjoy media, show off stuff.
And up until recently could use any nick even if had been taken.
If you want to host your own channel on IRC you need to understand cryptic flags, Host a bot. Know how to operate chanserv.
YIM, MSN Messenger and all those services had it right, games, media and voice.
I actually prefer that my chat client doesn't auto follow links, so I have a choice of whether to look at them, and so they don't interrupt conversations by taking up huge space in the chat.
A few channels have Matrix-IRC bridges attached so that is an option for servers who want to enable multiple interfaces for those who prefer not to interact with discord.
Some clients show link/image previews. I think the #1 thing that would make them better would be configuration options to drag&drop/paste images and other files, and have those automatically uploaded to a user-configured service with a link dropped into the channel. Hassle to implement, though.
[1] https://wiki.gnome.org/Apps/Polari [2] https://thelounge.chat/
IRC is still alive. I still know people on IRC. Most opensource channels have thriving communities on IRC with 100s of regulars logged into the channels everyday. The people I knew in the IRC world in 2010 are still very much there in 2023. The only big change has been that all of us moved away from Freenode over to Libera after the Freenode takeover. And everyone has become older and more mellow and more friendly to beginners.
If you've been away from IRC recently, I urge you to get back to Libera chat network and see for yourself. The IRC world is much better now than it was before.
I recently looked for an active chat for hobbyist/DIY EE stuff, and I joined around half a dozen Discords and they were all nearly completely deserted. Part of it is that each individual Discord aims to be a complete lifestyle, replate with completely redundant #general rooms and what not - it's too hard to sustain that kind of thing.
##electronics on Libera, meanwhile, is alive and kicking every time of the day.
I've made similar experiences with non-tech topics like e.g. cycling.
Yeah, you can run a bouncer... but then it depends on that bouncer working, and wtf is a bouncer, why is it necessary, and how do you explain that to normal people? And splits?
IRC is a ridiculous experience comparatively. Its big benefit is that it's super cheap to run.
The footprint should be very consistent throughout the lifecycle of the app. Message history is pretty small and we only keep opened buffers in memory. Everything else is flushed to disk.
Now compared to Electron, there is no comparison for speed and responsiveness
https://github.com/squidowl/halloy/blob/main/Cargo.toml
It seems to use iced gui toolkit
"mIRC 7.73 has been released! (June 18th 2023)" and runs on Windows XP/Vista/7/8/10/11.
At age 12 I got unlimited internet for $20/month where I spent all my free time on mIRC. I learned to code making mIRC bots, then I found eggdrop bots.. Then I had to learn Linux to run them. Before I knew it I was a teenager with better coding knowledge than most of the professionals I knew.
Hah, same. I went really far with mIRC scripting, much pain was had. Hard lessons that built a career i imagine.
However, to be sincere, I'm not a huge fan of element and this client look great indeed.
How feature complete is this client? As in what IRC versions (and dialects) are supported?
And thanks for noticing the XKCD!
> We use https://crates.io/crates/irc under the hood which is compliant with RFC 2812, IRCv3.1, IRCv3.2.
But hiring an Adobe Illustrator expert to professionally recreate the icon as a layered SVG wouldn't cost much. Well done!