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???
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.
To be fair, in any GUI toolkit, the "table" is abolutely the most complex general purpose widget. People really under estimate the difficult of an efficient implementation. Qt spents YEARS improving their QTableWidget class. The implementation is mind-bogglingly complex. I am sure many very smart summer interns (PhDs!) have tried to tweak that class to squeeze every bit of performance possible. The table class in GTK+ and MSFT DotNet's WPF are equally, freakishly insane.
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.
First thing I look at when checking out a new shinny GUI toolkit of the month is whenever it has support for a11y features. In this case, it's not even on the roadmap.
My guess: a11y work always needs to be sponsored (indirectly) by gov't consulting contracts, similar to new cipher suites in OpenSSL. Why is a11y a deal-breaker for you?
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!
> 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...
> 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.
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.
> 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.
> 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.
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.
> 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.
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.
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.
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).
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.
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).
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."
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.
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
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.
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.
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.
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!
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.
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.
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.
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.
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!
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
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.
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?
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.
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.
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.
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.
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.
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!
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...