[HN Gopher] Show HN: Halloy - A GUI Application in Rust for IRC
       ___________________________________________________________________
        
       Show HN: Halloy - A GUI Application in Rust for IRC
        
       Author : culinary-robot
       Score  : 140 points
       Date   : 2023-06-30 14:43 UTC (8 hours ago)
        
 (HTM) web link (github.com)
 (TXT) w3m dump (github.com)
        
       | egonschiele wrote:
       | Wow, that logo is gorgeous. Who is the artist?
        
         | neilalexander wrote:
         | It's strange to me though that people release new apps on macOS
         | without making the icons conform to the usual shape. Makes
         | applications stand out like a sore thumb on the Dock.
        
         | hu3 wrote:
         | I'm tempted to say it was AI generated:
         | https://i.imgur.com/ZIfbAca.png
        
         | ilrwbwrkhv wrote:
         | +1 would love to work with the artist for my company.
        
           | unshavedyak wrote:
           | Apparently it's AI. So...
        
         | culinary-robot wrote:
         | It's made with the Midjourney niji engine and finished up in
         | Photoshop.
        
           | riquito wrote:
           | Turned out gorgeous. Do you remember the original prompt?
        
             | culinary-robot wrote:
             | Yes, but promise not to laugh: "application icon, a side
             | view of a fat seagull". Fat seagull :D
        
           | ComputerGuru wrote:
           | It's beautiful but from decades of experience in app
           | development, I moved away about 10 years ago from using
           | images as icons to insisting that all icons be vector files.
           | 
           | But hiring an Adobe Illustrator expert to professionally
           | recreate the icon as a layered SVG wouldn't cost much. Well
           | done!
        
       | halkony wrote:
       | I misread the title and had a mini-heart attack when I thought I
       | was on the front page of HN.
        
         | intelVISA wrote:
         | You are now. :)
        
       | throwaway2037 wrote:
       | Holy shit this GUI framework looks good. I am a Qt fanboi, but
       | this looks great. Normally, I skip all the "X for Rust" posts as
       | a bunch of fanaticism. Could it really be different this time???
       | 
       | 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...
        
         | intelVISA wrote:
         | As a fellow Qt fanboi I admit this looks damn good, maybe this
         | once we'll permit a "rewrite it in Rust" moment?
        
         | nu11ptr wrote:
         | It is looking good, but I'm still waiting for a "table" (they
         | do have a "grid" now) and "tree" widget to give it a try
        
         | nicoburns wrote:
         | There's a more recent iced Roadmap here:
         | https://whimsical.com/roadmap-iced-7vhq6R35Lp3TmYH4WeYwLM
        
         | WhyNotHugo wrote:
         | iced is a really weird one. It has a lot of widgets and lots of
         | really advanced features... but clipboard support is almost
         | non-existant (basically you can only copy small strings and
         | nothing else). (I also think drag-and-drop is not possible
         | either)
         | 
         | 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.
        
           | bpicolo wrote:
           | > I also think drag-and-drop is not possible either
           | 
           | This seems to have a form of drag and drop in the demo gif.
        
         | culinary-robot wrote:
         | Thanks!
        
         | duped wrote:
         | Are they still backed by kraken?
        
         | hencoappel wrote:
         | They're also using it for the new Cosmic DE for Pop! OS
        
       | koito17 wrote:
       | Overall looks cool, but how does its implementation of IRC
       | compare to other clients? How about support for extensions like
       | XDCC?
        
         | ComputerGuru wrote:
         | From another comment:
         | 
         | > We use https://crates.io/crates/irc under the hood which is
         | compliant with RFC 2812, IRCv3.1, IRCv3.2.
        
         | samstave wrote:
         | It shows right there on the page that it embeds XKCD - it even
         | has the IRC comic embedded!
        
       | csomar wrote:
       | I see you didn't publish it to crates.io because of patched
       | dependencies. I registered the "halloy" name so no one else
       | abuses it. Contact me to transfer it to you.
        
         | culinary-robot wrote:
         | Thank you! I'll reach out.
        
       | creesch wrote:
       | Upvoted based on the XKCD alone, I used the same argument a few
       | years ago for this spaghetti mess:
       | https://github.com/creesch/discordIRCd
       | 
       | How feature complete is this client? As in what IRC versions (and
       | dialects) are supported?
        
         | TingPing wrote:
         | Looks basic, only ircv3 capability is server-time.
        
         | culinary-robot wrote:
         | We use https://crates.io/crates/irc under the hood which is
         | compliant with RFC 2812, IRCv3.1, IRCv3.2.
         | 
         | And thanks for noticing the XKCD!
        
       | distcs wrote:
       | What are you using for the GUI toolkit? The GUI looks awesome.
        
         | tekknolagi wrote:
         | Looks like https://github.com/iced-rs/iced
        
           | distcs wrote:
           | The cross-platform support and screenshots look impressive.
           | Anyone knows how it does that? Does it have runtime
           | dependencies to render those GUIs across OSes? Or is it all
           | baked into the Rust source code?
        
         | codetrotter wrote:
         | Judging from the Cargo.toml
         | 
         | https://github.com/squidowl/halloy/blob/main/Cargo.toml
         | 
         | It seems to use iced gui toolkit
         | 
         | https://github.com/iced-rs/iced
        
       | heyarviind2 wrote:
       | This looks interesting. I wonder if i can redesign it like GTalk
       | and bring back the old memories :')
        
       | AiAi wrote:
       | Looks nice from the GIF. I wish more chat apps had a tiled UI,
       | like mIRC. I use IRC via Matrix/Element, and this is something I
       | miss a lot.
        
       | neilalexander wrote:
       | This really is quite beautiful and feels great. It would be super
       | nice if it was possible to control the pane behaviour when
       | selecting channels but it is so refreshing for an application to
       | feel this fast and not be Electron-based.
        
       | SkyMarshal wrote:
       | Wow that is beautiful. Iced is really pushing the limits of what
       | terminals can do. Nice job.
        
         | zokier wrote:
         | Terminals?
        
         | voytec wrote:
         | For terminals, look at notcurses[1]
         | 
         | [1] https://www.youtube.com/watch?v=dcjkezf1ARY
        
       | wpwpwpw wrote:
       | Beautiful interface. Nonetheless would be nice to have a linux
       | screenshot on main page.
        
         | jeltz wrote:
         | Yeah, I wish there was a Matrix client which was equally
         | beautiful.
        
       | dethos wrote:
       | It would be nice to have something similar for matrix. I stopped
       | using IRC directly a while ago, and now I rely on matrix to join
       | the channels.
       | 
       | However, to be sincere, I'm not a huge fan of element and this
       | client look great indeed.
        
       | smodo wrote:
       | Man, I wish I still knew people on IRC... Whenever I see a link
       | to Discord I let out a deep sigh. We had it all and we blew it!
       | We threw it all away for gifs and centralization!
       | 
       | 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!
        
         | distcs wrote:
         | > Man, I wish I still knew people on IRC
         | 
         | 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.
        
           | sho_hn wrote:
           | There's a fair amount of enthusiastic or expert communities
           | that remain the most vibrant in their IRC edition.
           | 
           | 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.
        
         | 542458 wrote:
         | > We threw it all away for gifs and centralization!
         | 
         | 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...
        
           | floren wrote:
           | IRCv3 ticks a lot of boxes server-side; you get chat history,
           | user accounts (you can even log with the same nick from
           | multiple clients), replies, and a bunch of other stuff.
           | 
           | 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.
        
             | welterde wrote:
             | Polari [1] seems to support automatically uploading images
             | and text to some imagebin/pastebin and then posting the
             | link to the channel. The Lounge [2] also supports it (with
             | the files self-hosted in thelounge instance).
             | 
             | [1] https://wiki.gnome.org/Apps/Polari [2]
             | https://thelounge.chat/
        
           | [deleted]
        
           | ok123456 wrote:
           | > Simpler configuration
           | 
           | 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.
        
             | Filligree wrote:
             | > Never had an IRC server want to verify me through SMS or
             | FORCE me to update my client.
             | 
             | Which destroyed several channels through spam. The
             | authentication is a _feature_.
        
               | ok123456 wrote:
               | You can do authentication without something that's
               | tantamount to someone's government ID. I love when
               | companies make me give them my phone number, and then
               | they get hacked.
        
             | saulrh wrote:
             | > IRC is just a ban list, an except list and an invite
             | list.
             | 
             | 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.
        
               | ok123456 wrote:
               | > Now use that to implement RBAC for a server with a
               | hundred channels.
               | 
               | Don't want it.
        
             | doublerabbit wrote:
             | > user accounts and profile pictures by default: 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.
        
               | progval wrote:
               | > NickServ. "If you don't register your nick in 1 minute
               | you be renamed to "anonymous".
               | 
               | 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.
        
               | doublerabbit wrote:
               | Some Channels enforce the flag for registered users.
               | 
               | I've visited networks where you have forced you to
               | register nicks. You have the option to leave, but same
               | principle.
        
               | tredre3 wrote:
               | Some channels do indeed enforce registered users. But the
               | message you quoted is 100% because you were using
               | someone's nickname and they enabled nick protection.
        
               | doublerabbit wrote:
               | No. My nick was an unregistered nick. I know IRC -.-
               | don't tell me otherwise.
               | 
               | "To use this server you _MUST_ register with IRC
               | services. "
               | 
               | The server had mandatory nickserv registration.
        
               | ok123456 wrote:
               | > no easy way to share any imagery.
               | 
               | 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.
        
               | doublerabbit wrote:
               | > You share it the same way you share it on r*ddit.
               | Upload it to imgur, imbb or whatever.
               | 
               | 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.
        
               | smolder wrote:
               | > No one wants to click links.
               | 
               | 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.
        
           | ComputerGuru wrote:
           | All the open source Discord rooms I'm in, absolutely no one
           | uses the voice chat and I didn't even know there was a screen
           | sharing option. The ratio of users to admins is probably
           | 10,000:1 so ease of admin isn't really an issue (see also
           | reddit where mod tools suck). There are plenty of visually
           | appealing clients (e.g. this one!).
           | 
           | 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.
        
             | jeltz wrote:
             | Not sure why you are downvoted because you I feel you are
             | pretty much correct for many non-gamers. I do not use voice
             | chat and it is not what made me start using Discord. But I
             | still see why voice chat is very useful to many gamers.
             | Different groups missed different features from IRC.
             | 
             | 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).
        
               | ComputerGuru wrote:
               | I'm not sure either, but it's HN :)
               | 
               | 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."
        
           | MisterTea wrote:
           | Discord is far from simple. Simple is a text based protocol I
           | can interact with through a telnet session.
           | 
           | 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.
        
             | Halfwhit wrote:
             | I completely agree with your definition of simple, but to
             | less technically minded people Discord is simpler in that
             | it's a "batteries included" experience
        
         | culinary-robot wrote:
         | Iced is awesome. Slightly biased being a contributed though :)
         | I would recommend https://libera.chat/. There are a ton of
         | great channels: ##rust, #linux, #networking, #security to
         | mention a few.
        
         | TkTech wrote:
         | There are many, many IRC networks that are still very active
         | with tens of thousands of active users. Libera.chat is probably
         | the best one I can suggest at the moment for a wide selection
         | of topics. Politics, news, every tech group and subject under
         | the sun, etc...
         | 
         | 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!
        
         | tcmart14 wrote:
         | No kidding. I miss IRC. I still use it, but yea, its mostly
         | silence. About the only time I've seen interaction is on
         | something like #fedora or #freebsd where people just ask
         | support type questions.
        
           | [deleted]
        
         | Groxx wrote:
         | And chat history. Chat history is huge. And so is integrated
         | search.
         | 
         | 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.
        
           | jacobsenscott wrote:
           | I hate chat history. That's corporate mentality invading your
           | non-work brain. IRC should feel like walking into a bar full
           | of nerds, and you just join the conversation wherever it is.
           | Even at work, if I'm out for a few days I definitely don't
           | "catch up on slack" - that's not what chat is for. Long lived
           | conversations belong somewhere else - email, or PR, or (god
           | forbid) jira.
        
             | gochi wrote:
             | I don't see how chat history prevents that feeling. There's
             | no requirement to read through history every time.
        
               | jacobsenscott wrote:
               | I mean the lack of history on IRC is a feature, not a
               | bug.
        
         | bluejekyll wrote:
         | The simple story here is hosting. Self-hosted IRC while not
         | hard to maintain are not easily discoverable, and ad-hoc
         | communities.
        
         | mrits wrote:
         | The feeling I got of IRC in the mid 90s is that it was more
         | centralized than it appeared. Most of the server operators hung
         | out in the same channels.
        
         | iforgotpassword wrote:
         | #xkcd on slashnet? ;-)
        
         | MisterTea wrote:
         | I'm idling on OFTC, Libera and two private servers.
        
       | metadaemon wrote:
       | As a suggestion, you might want to modify the default config, I
       | see a lot of people logging into #rust as the `halloy` user.
        
         | ComputerGuru wrote:
         | Maybe/at least append an rng value to the end?
        
           | metadaemon wrote:
           | Well not sure how possible that is with the current YAML
           | implementation of config.
        
             | ComputerGuru wrote:
             | The app can write (or modify) the yaml template file on
             | first run. That's how I discovered the configuration file
             | in the first place, with the app prompting me to open the
             | directory and copy config.yaml.template to config.yaml and
             | customize.
        
       | qwertox wrote:
       | Which made me look how mIRC is doing:
       | 
       | "mIRC 7.73 has been released! (June 18th 2023)" and runs on
       | Windows XP/Vista/7/8/10/11.
        
         | oh_sigh wrote:
         | I wonder how much money Khaled has made over the years from
         | mirc
        
         | mrits wrote:
         | At age 10 I hopped on every BBS I could that wasn't long
         | distance. Then I did a few free trials of AOL.
         | 
         | 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.
        
           | unshavedyak wrote:
           | > I learned to code making mIRC bots
           | 
           | Hah, same. I went really far with mIRC scripting, much pain
           | was had. Hard lessons that built a career i imagine.
        
       | Capricorn2481 wrote:
       | How was working in Iced? It looks like you did a lot of the work
       | just this month
        
         | culinary-robot wrote:
         | This is Iced, not Tauri. Yeah, it's been a productive month.
         | Once you get hooked it's hard to stop.
        
       | jakswa wrote:
       | Looks slick for how quickly it was built. I was surprised by the
       | download size and RAM footprint, but... if it was easy to do
       | cross-platform, I'm thinking this is still ahead of electron on
       | footprint? Or at least competitive. Interesting!
        
         | tarkah wrote:
         | A lot of the ram usage is actually coming from the wgpu
         | backend. You can use ICED_BACKEND=tiny-skia to try software
         | rendering and the footprint should be a lot smaller.
         | 
         | 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
        
       | MisterTea wrote:
       | The UI seems to work like the plan 9 Acme text editor (itself
       | based on Oberon). in fact, you can use Acme as an IRC client or
       | mail client.
        
       | JimmyRuska wrote:
       | Imagine, someone makes an IRC client that looks like a discord
       | clone, adds some centralized proprietary emoji/background/mini-
       | game features that touches their own servers, and we go full
       | circle back to IRC once discord IPOs.
        
         | TeddyDD wrote:
         | There are proposals for ircv3 that aim to add support for
         | custom emoji, reactions, message editing etc. Soju + Gamja +
         | Goguma is pretty usable combo even today.
        
       ___________________________________________________________________
       (page generated 2023-06-30 23:02 UTC)