Simplicity of IRC
susam.net
susam.net
In the old shop, we eventually had all kinds of important subsystems hooked up to our internal IRC server: Monitoring and alerting. Source control and Wiki activity. The deployment pipeline. Ticket activity reports. All these services were pretty much effortlessly set up to provide useful, real-time status information broadcast to topic-specific channels users could idle in. Everyone could stay informed on topics of their interest, in real time, with no barrier to entry. It was really good, and the implementation completed in a few hours total, for all use-cases, due to irc's incredible simplicity.
Due to the benefits I had reaped from that setup before, I tried to implement parts of it on/for the MS Teams platform at the then-new job. Getting the Teams Python SDK to implement a bot-like entity running alone proved to be a days-long ordeal, and whatever followed wasn't much more pleasant.
In the end, we let someone set up two email-to-teams-channel-forwards which kinda worked, but suffered from obnoxious, multi-minute relay delays.
As a consequence of the tedious bringup and the latency shortcoming, the "effortless notification" initiative never really got traction.
Not only because of this particular experience I am a firm believer that software/system simplicity is a virtue that can neither be overstated in importance, nor substituted by anything else.
At any rate, for the IRC server at the shop I was at previously, I had "webhook" support/a http(s)->irc gateway implemented on my own in much less than an hour via CGI ;)
Teams seamlessly works across platforms, and mobile with video chat, files, outlook integration, and screen sharing. Maybe IRC could of been that, but it never happened.
The rest of the shift is explained by discord being popular for other use cases (e.g. as a twitch companion), overwhelmingly dominated by younger users. IRC isn't getting new users and over time, this means the community will migrate due to turnover. Thank god we at least have things like matrix bridges, but discord is a lost cause.
[1] - https://convos.chat/
[2] - https://thelounge.chat/
[3] - https://www.ilmarilauhakangas.fi/irc_technology_news_from_th...
One of the downfalls of IRC is the notion that everything should happen in the chat. There's no reason you can't have a pastebin and a file server and screenshot sharing service, most of which don't matter anymore after 5 minutes anyway. It works really well and in fact, we kept using them after switching to fat chat because it was a better experience. There are reasons to want a fat chat client (primarily mobile, imo), but having used both for many years, the featureful chat client ends up being worse than just sharing links most of the time.
* bot spam that I can't /ignore
* "inviting" people to channels tht you can't opt out of (invite is slack terms is yank. there is not option to say no)
* inline sharing of screenshots of article snippets that support an argument but not sharing links to the source material
* so... many... channels...
To compound the problem of many channels the UI uses an insipid three column layout. I like to arrange chat windows, tail -f terminal windows, and other monitoring things in a "dashboard" layout in a workspace. That way it can update in the background and if I am curious about the state of something I can decide to context switch and bring up that workspace to get an update. I can then deal with an issue or go back to the task at hand.
Slack and HipChat and all the other Electron-based attention siphons do not let me arrange their UI in a way that works for me. I hate notifications with the heat of a thousand suns and turn just about all of them off on all my devices. Slack et all hide the state of all but one channel by default and want to use notifications or stupid icons to show there's unread activity. It's the worst UI on the dumbest system but animated emojis!
I get why it’s designed the way it is, it’s trying to be Sharepoint, Slack, Zoom and Outlook. And as a result it does every single one of them worse.
Sometimes integration is better left as event handlers rather than trying to make IRC behave like a Wiki.
I’d like Teams more if it just focused on the video conferencing side of things. It’s chat and Sharepoint integration just adds more frustration than anything.
Also all video conferencing and chat applications support sharing files. This isn’t some unheard of feature that Microsoft have pioneered. It’s been possible since the BBS days. It’s possible in XMPP and IRC. It’s possible in every other commercial service I’ve used. And I happen to think Teams does it the worst out of everyone of them because of the weird UI decisions and Sharepoint integration. Compare Slack to Teams and you see what I mean. Files are in lined in Slack and it’s easy to preview and work with them. It’s a pain in the arse in Teams. Slack also has all the other features of Teams that you’re boasting about. And Slack isn’t even perfect itself yet it still runs circulars around Teams in terms of usability.
Literally the only thing Teams gets right is the way of marking the confidentiality of shared content. But that doesn’t justify the mess Microsoft have made of Teams UI.
I’m not one of these FOSS evangelists who throws their toys out of the pram if we don’t use IRC. But Teams UI is really just a clusterfuck of bad design decisions. It’s easily the worst designed solution out there. Except maybe WebEx - which is a pretty fucking low bar, scraping the barrel really.
Microsoft know they automatically win the enterprise because of AD and Office integration. So they don’t need to compete on quality. They just need to be present.
And this is why myself and others keep saying Teams is garbage. Why settle for something that is only just barely usable when there are a dozen other solutions on the market that are highly intuitive.
I’ve lost count of the number of textual messages I’ve missed in Teams because of the appalling way groups are handled. Or the number of lost conversations because video chat conversations are blended into private 1:1 chats. It’s a fucking mess of an interface. Literally everyone else does it better.
> The mobile app is especially nice.
I couldn’t give a crap about how nice the mobile app is when 99.99% of the time I’m chatting and running meetings from my laptop. I want MS to produce a 1st class productivity tool, not TikTok.
> They are constantly adding features
I don’t want new features. As I mentioned at the start, Teams already has too many features. I just want the core user experience not to suck.
> but already meetings with hundreds of people it handles no sweat
Yet text chat between people sucks and I (like 99% of Teams user base) spend more time messaging people than we do in video conferences for 500+ people.
Your shilling here really does demonstrate just how much Microsoft have swung and missed imo. Both you and Microsoft have completely lost touch with the kind of usage that most people actually need Teams to be good at. I mean yeah, some of the features you’ve described are handy in niche situations but if the average use case is appealing (and it really is in Teams) then you find yourself lusting after other solutions most of the time.
Case in point: At my company I literally pay for Slack despite also having Teams around just because Teams sucks so badly for anything non-video. I guess we could use IRC for free but Slack has better support for in lining files (better than Teams too), better support for Markdown (better than teams too), better search in chats than Teams, better ways of organising conversations. And it’s a thousand times easier to read conversations too. It’s just better in every way for messaging. And with huddle support, it’s also not better than Teams for quick voice chats too.
And if I had to drop Slack then I’d switch to Discord, IRC, XMPP or literal anything before being stuck with Teams for all our non-video communication.
This implies you don’t really care about capability at all. You have some beef with Microsoft where you’d rather have nothing than something to avoid using a product you have a irrational bias against.
No, I said you were shilling. I don’t think you’re a shill but your posts are definitely shilling the product
> and then say you’d switch to IRC over teams.
For text chat. Yes. I also said that was an extreme case however IRC is still more intuitive than Teams for text chat.
> IRC has no features compared to teams - screen sharing, voice/video, threaded discussion, calendars, a mobile client with all these features, etc..
Have you even read a single bloody thing I’ve posted? How many times have I said I don’t give a crap about mobile support because 99% of my usage is on a laptop? How many times have I said that Teams suffers from having too many features rather than doing one thing well.
It’s like talking to a brick wall…
Also I did say IRC specifically for text chat.
> This implies you don’t really care about capability at all
You’re conflating comparability with feature bloat.
I’m all for comparability as long as it doesn’t harm usability. But comparability can be in the form of supporting 3rd party API hooks - it doesn’t have to mean bundling every feature into a confused user interface.
This is where the UNIX philosophy comes in: everything in UNIX is compatible with each other but each individual program is designed to do only one thing and do it well.
Now I’m not saying we should have separate video conferencing, calendars, text chat, etc. However in the case of Teams it suffers from trying to do everything. It’s the “Jack of all trades, master if none”.
So naturally I will use a program that specialises in a specific area well if it improves my productivity. For me using a better text chat solution improves my and my teams productivity vs using MS Teams for everything.
> You have some beef with Microsoft where you’d rather have nothing than something to avoid using a product you have a irrational bias against.
Enough with the name calling. There’s no need. Especially when the issue here is your own reading comprehension.
I’ve given clear reasons why I don’t like Teams. You obviously disagree, which is fine. But at least read my comments before replying with your ridiculous bullshit. “Ridiculous” because you’re consistently citing examples of stuff I’ve already discussed as not a requirement in literally the previous post. Which you’d know if you’d bothered to read my entire posts properly.
Usable is in the eye of the beholder.
Usable as in "I can get a video call going and can send chat messages and files": true.
Usable as in "Easy to use, frustration-free to use, easy to discover functionality": false.
It's an incredible slow application for chat. I don't particularly care if it's just bad programming or an overuse of animations, but it shouldn't feel slow on a beefy computer. Mobile is even worse on a midrange android.
No easy way to quote or forward messages, the stupid distinction between teams channels that have threaded messaging and chat that doesn't, intermittent problems loading images; I could go on for hours.
long live the Unix model!
Due to its simplicity I could see its application as a falback for global communication downtime/outages (as we had with FB/Insta recently).
I remember when the solution to this, when everyone was still working in an office, was "pair of netcats".
In other words:
- to use the slack APIs, you probably need company level buy in _before_ any code is written against the API from IT folks
- in contrast, with IRC one could just try something out and at some point in the future _maybe_ create a seperate IRC account for it, if your IRC server even has logins enabled. If it doesn't, which when I worked for IBM was the case, one can just pick a new username for the IRC bot.
Same for mobile, the advantage vanishes once enterprise requires your (usually personal) phone to be surrendered to corp IT via MDM (which I sure as hell won't do).
The whole value proposition of Slack and Teams for their customers is control.
I don't even blame such enterprises because most of the time it comes from regulations or outside policies that customers mandate, something like all enterprise data (and thus communication) has to be firmly under control of the enterprise with hard guarantees, otherwise you just don't get to work with those customers. So you get a locked down Slack/Teams, and the email+calendar system disallows any native app unless the device is MDM'd, and even that is only with first party clients such as the Gmail app or Outlook.
TBH I think most companies are trying to do their best there, but they're stuck with some kafkaesque liability system.
Taking reasonable measures absolutely does absolve the company. At that point, it becomes a rogue employee who’s deliberately circumvented policies and technical enforcements, who is now potentially personally liable.
It’s garbage, but hey ho.
And consider this also: "hey we're quite sure pur homegrown system is as leak proof as it can be, trust us or fire up an audit team for 5 sprints to asses compliance" vs "Slack has the box checked already"
The fact that folks can e.g technically fire up a headless browser and programmatically interact with the app via capybara or whatever to rebuild a makeshift API, or just take pictures with their phones because the compliant system is inconveniencing them daily is immaterial.
...What?
[1] https://docs.microsoft.com/en-us/office365/troubleshoot/acce...
Microsoft uses these anti-features as a selling point, and in a large enough organization, it's not immediately clear who turned them on or who can turn them off.
Imagine an enterprise disallowing all VCS service providers -- whether hosted on-prem or cloud -- because they use SSH instead of HTTP.
Or is this something stupid like a user-agent check?
Wait? Can you even make API calls to Teams without getting the account owner to make a key for you? I’ve been looking for a way to use a personal key or credentials to make some calls, but the docs are absolutely impenetrable.
To think people build their businesses on this is mind boggling.
I'm actually going to use it to set up my own cloud dev I can access from anywhere, but it has tremendous utility beyond that
You need a client and bouncer (or server, if you connect directly) that supports this extension: https://ircv3.net/specs/extensions/server-time
> and limit problems.
ditto, but https://ircv3.net/specs/extensions/chathistory if I understand you correctly.
I do not claim ZNC or our whole IRC setup was perfect, but for me and many others, it did a very decent job of providing effective, no-frills, getting-things-done means of communicating, all while consuming little resources on both server and clients, and being simple, underestandable, and easy to hook other software into.
I really miss it, and personally dislike (especially the client UX of) most trendy/recent alternatives.
If something comes of the discussion. Update docs, post the chat log in the wiki, send an email with cliff notes and ask if others care to discuss, halt and get the right people in the room.
When you decide, 'hey, we have an idea, or a change in direction' you'd then document or make the case in a way that is more clear and user friendly than a mile of ephemeral chat. This is the same reason people send out meeting summaries instead of transcripts.
We've moved to this point where nothing is ephemeral. But a random chat isn't a good way to understand why things are being done. It's just too much to parse. And at some point new people are looking for a needle in a haystack and they just kinda checkout.
I thing documentation should be intentional, the why should be clear in a doc that doesn't waste time and is formated in a way that we have come to understand as the best practices of technical documentation. You'd start with a quick overview of both the problem and proposed or adopted solution and the reader can decide if they need more info.
Especially with remote work, I think it's important to have ephemeral areas for discussion without expectations that everyone keeps up on the whole chat. Thinking every team member needs to know every word of discussion is ludicrous.
I’d be fine with all chats being deleted after a month. But if I’m out one day I’d like to see my colleague’s message about the project I currently work on.
Reminds me of this classic: https://www.youtube.com/watch?v=O2rGTXHvPCQ
P.S. if you, like me, were wondering what Libera Chat is, it’s the moral successor of Freenode with Freenode now being a shell of its former self.
Visual Basic (classic) that you mentioned, discontinued in 2008, was not free, unless you pirated it.
> ‘just drawing things’
For that you have much more amazing things today, like Shadertoy, or various artistic programming languages like Processing, ...
Programming is easier than ever, computers are extremely cheap, software is free, documentation on the internet is free, YouTube is full of tutorials, there are literally no obstacles if you want to do it.
Back in my day I had to pay for computers, for programming software, for books, Internet cost a fortune, ...
> Build Native Apps 5x Faster With One Codebase. For Windows, Android, iOS, macOS, and Linux
https://www.embarcadero.com/products/delphi
And it's free if you don't make a lot of money of what you build.
Delphi Community Edition only allows x32 compilation
I downloaded it to try. It's not a huge limitation for most usecases I would imagine.
Apart from the underlying language, the experience is pretty close.
Really, it's not. This trade has got much, much harder since I started. The languages are harder, because the targets are both more complicated and more various. Computers were mainly used to do sums (I worked on accounting systems written in COBOL).
I mean, it's easier if you take into account the complexity and richness of the modern computing environment, USB, PCI, caches, what have you. You are producing more powerful programs. But the onboarding ramp for modern programming is steep.
The world that lived behind that experience - COM & Active X Controls - was extremely complex. If you needed to build a new active x control for your app, god save you.
It's been said a million times, but in programming there is always complexity. Sometimes it is just well hidden.
You're right to observe that programming involves irreducible complexity (one of the reasons why so many low code/no code tools fail is the refusal to accept this, imo), on the other hand modern toolchains are extremely complicated and could be a little more streamlined.
It's a meme at this point, but there's no way having six different pythons on your machine or whatever the hell modern JS toolchains do -- just to pick two examples -- is the simplest it can possibly be.
Older machines and toolchains certainly had their problems (arguably even worse ones), but I completely understand the complaints.
Similarly, I tried to learn Clojure before Pharo. Spent over a hour setting Atom with all dependencies required to convert the editor into a Clojure IDE. But I botched the set-up somewhere, and ended with a dead REPL. Again, never came back.
The best experience I had so far, as a beginner trying a new programming language, was Pharo. You type a couple of lines in the terminal, and gets a full environment with _everything_ you need included in the system image. No need to spending a lot of time wrangling dependencies to get a functional system. I think the image-based development strategy from the Smalltalks is underrated.
regsvr32 coolcontrol.ocx
and
> Once upon a time, one could download visual studio,
don't seem to agree very well. Visual Studio is a behemoth and usually results in stuff that's non-standard, non-portable and with lots of dependencies.
Maybe when the browser fully swallows the OS but I hope it won't be JavaScript or it would have morphed into something else.
BASIC is smarter than C, it knows when = means assign and when it means equality
Then suddenly there were masses of weird, undocumented APIs, including APIs from any application installed on the machine. Unfortunately I was making my living from VB6 at the time, so I had to learn it all. (And then MS withdrew support for VB6, forcing me to learn a new trade, which is only one driver of my animus against MS)
Long ago I owned a Sinclair QL. That toy had a rather nice BASIC editor. I think their dialect was called QBasic. You selected a function in the left pane, and it appeared for editing in the right pane. (I also loved that it used a 68K processor; that chip had a sweet instruction set)
Tcl was such an expressive yet minimalist language. Probably the only fast and easy way back then to create GUI applications on *nix systems. I guess Python + QT has killed it now, but with a massively larger footprint and resource usage obviously.
This is the mistake. Linux and, I believe, OSX come with several tools pre-installed including python.
It might be just me, but PowerShell feels outright developer-hostile even when compared to Bash. Perhaps it's their approach to rely primarily on .NET stuff which makes things so arcane, but when given the option it's far simpler and better to go with, say, python than PowerShell.
Bash is described as a "command language" and not a programming language per se.
Bash is what you use to type in commands, and automate said commands if you need to whip out a quick script that runs what you would otherwise run manually. Bash, scripting-wise, is command line glue.
If all you want to do is run commands with some logic, PowerShell is simply dreadful and outright developer-hostile. I doubt there is a single person on earth who uses PowerShell as a command shell like Bash is used.
This subthread was specifically about programming languages being available out of the box in OSs, so when you brought up bash my natural assumption was that meant as a programming language.
Expand your views. Everyone aren't you, didn't learn the same things as you and understand different things than you.
I learned some C++ as my first language, therefore I got stuck in an object oriented mindset, this translates really well to PowerShell and really poorly to bash. The thing where everything is text doesn't make sense, text isn't stable and everyone will write their own partially broken parsing implementation. In PowerShell they try to make everything an object, with type checking and other goodies, solid autocomplete for scripts being one.
In PowerShell I can deserialise JSON and perform CRUD operations on the data easily.
I'd say powershell is outright developer friendly as it brings a production grade language to the scripting table.
If powershell could parse bash completion files and integrate sudo better I'd use it as a command shell on all platforms, which right now are limited to MacOS and Linux.
PowerShell is such joy that it should be there on any Linux as default interactive shell.
For a long time MacOS came with only Python 2.x installed. I looked up what the latest version of MacOS comes with and came across an Apple support forum post with several responses posting conflicting answers [0]. One person got an Xcode related error. Having to install a heavyweight IDE just to get a language to run correctly is the type of needless complication the parent comment is talking about.
xcode-select --install pulls in the CLT, which is a fairly reasonably sized download given that it includes various essential dev tools including python3 but without Xcode.
This is hinted at by attempting to run python3 before any install, which calls a stub prompting you to do just that.
py2/ruby/perl/etc... are part of the base OS for backwards compatibility/expectations (because they were so before Xcode/CLT were even a thing) but have been marked as due for removal from base for something like half a decade. My bet is that at some point they will move to the CLT (or some other optional download) as well.
https://apple.stackexchange.com/questions/406244/will-macos-...
EDIT: Oh and pipenv!
If the Python version that comes with your OS is not the one you want (e.g. it's outdated), then you'll have to:
1. Install the version you want anyway, and all the tools required (that usually don't come preinstalled in the OS)
2. Try to not make them collide, which, last time I tried, was a PITA, because the OS depends on original version of Python being in the the $PATH or something.
Python on Ubuntu is notoriously misleading for newbies, because even if you apt install python3 and it tells you that it's already installed, it's not fully installed. For example, venv is not installed, you have to `sudo apt install python3-venv` and do that for every Python module that's not installed by default.
It would be easier if Linux didn't come with Python, and then people simply installed the actual, full version of Python they wanted.
Which then wouldn't work for all the repository python programs. The repo's python is what everything is built and tested against, so there is no replacing that.
I couldn't have afforded buying one, but my university had half a dozen.
I wish kids today could get that.
If you bought either of the two itch.io bundles "Bundle for Racial Justice and Equality" or "Indie bundle for Palestinian Aid", then you have the Standard license already included in that bundle. It's well worth a look IMO.
(Not affiliated other than a very happy user.)
Here's a 6-minute demo: https://archive.org/details/akkartik-mu-2021-06-09
Requires Qemu, though. And no sound yet, unfortunately. I'd love contributions there or elsewhere.
How is that not easy?
Computers are complex, and people who don’t work closely with them daily can easily get very confused.
The learning curve has been sacrificed. It's now a learning cliff for everything. We've used to have computers that make it simple to do simple things and hard to do complex things. Now, just so it can be slightly less hard to do complex things, we've made it hard to learn and do simple things.
In old GL it's basically glClear, glBegin, glVertex, glVertex, glVertex, glEnd and a bit of window setup.
In Vulkan you need to know what these things are: queues, command buffers, image/geometry buffers, memory locations (constant, uniform, varying), resources, bindings, shader programs, fences, swap chains, and how they all coordinate together.
And until they are all properly coordinated together, you'll just be staring at a black image or just get errors.
Nowadays, it's all about interconnecting different microservices just to bootstrap something, let alone build something complete.
What is an example of this?
I've been thinking about something similar (maybe even simpler) for my blog too.
> This is a static website generated using a Common Lisp program. See github.com/susam/maze for the source code of this website[2]
> Just like the original website, every line of HTML and CSS that appears in the website is handcrafted.[3]
[1] https://github.com/susam/maze/blob/main/site.lisp
I remember joining so many IRC channels to learn about everything in college. You'd get help and be humbled by the many regular names in each channel. There was more of a human element to it as most people simply acted as extensions of themselves.
You think about Slack, Discord, and Teams today and there's a whole corporate or personal identity attached behind each name. You can't always act like you would in IRC. You can't always be blunt and to the point. You can't call someone an idiot or to RTFM in the most sincere way possible.
When things were simple with a single pseudonym and a message, things were great. Now things are much more complex. Threads, DMs, notifications of mentions, bots, gifs, etc. It's definitely been changing quickly, but it was nice when everyone's attention was in one place instead of fragmented in each of these new apps that are just glorified IRC.
>When things were simple with a single pseudonym and a message, things were great. Now things are much more complex. Threads, DMs...
IRC has DMs too, /msg
You can absolutely still do that in IRC. Tens of thousands of people still use it to communicate.
I recently tried Discord to find programming communities but I just don't get it. When you join a server you are automatically subscribed to all the channels. And apparently you can't leave them, you can only 'silence' them by manually doing that for each channel. After a few days I just gave up as I could not keep up with all the notifications.
Think of a discord channel as a permanent thread or a topic and a discord server like an irc channel. I find discord's model more manageable than irc for a large number of users; irc channels become a mess around 50-100 active users. Dividing the conversations into topics helps a lot.
(I have been using irc since around 1994 and am still somewhat active.)
First thing I do when joining a new "server" is to mute all and any broadcast (@everyone/@here/roles) mentions. Broadcast mentions should have never been invented.
What "ownership" and "power?" Discord controls it all.
A server is to IRC what Discord is in its entirety
A channel is to IRC what a server is to Discord
If IRC let you subsection a channel, those would be channels to Discord
And instead of obnoxious netsplits, you get annoyed with popups to buy Nitro or whatever other crap whenever you log in
It's wonderful when you can have your toys in a sandbox where you use and develop them mostly for fun, and for scratching your own itch, away from well-moneyed interests. No need to carefully identify participants. No need to encrypt, or otherwise complicate the implementation. No need to efficiently serve millions of users. No need to add bling to attract more of those who barely cares. (The latter is not the case with Legos lately, though.)
This is why I think that a lot of innovation starts in the fringe, and looks like mostly useless toys, until one of these toys proves very useful for "real world" needs.
Instead, I grew up with AOL Instant Messenger, and then MSN Messenger which later became Windows Live Messenger, then Skype, Xfire, Pidgin and Trillian as clients, then back to Skype again, and now Discord, which is where I still reside most of the time today.
When I thought about existing chat protocols I wanted to use in game engines and websites that would allow one to connect through existing clients without having to join the game or navigate to the website in question directly, I thought about IRC.
But it seems like people use Matrix now, and it just hasn't caught on to my circle of friends. If I'm not mistaken, it almost seems like FOSS Discord.
I was recently introduced to it by a member of a community of very friendly Quake Mappers. I wonder if there is primarily first a cultural barrier to these technologies and not a technical one. As usually I find more technical people on IRC than on Discord.
No JS, no custom font, etc.
a:link, a:visited { color: #00e; }
Why do this?
Also to a mandatory review of WCAG standards.
Write programs to work together.
Write programs to handle text streams, because that is a universal interface.
; basically.
People expect to be able to paste a photo or screenshot just as easily as they post a sentence. Requiring a second app to do it (posting a link) isn’t nearly as good a UX as simply pasting in pictures.
We just need more modern terminals that can handle that.
Yeah like smartphone apps , webapps, and desktop guis…
But what about the UX of other people in the channel? Someone posts an image and the previous text is moved off screen. Now they have to scroll up to read what they were just reading. What about the case where someone posts an animated gif which becomes a distraction that requires you to stop the animation or hide it? What about the case where multiple animated images are posted which forces your client to use a lot of CPU resources to render them[1]?
[1] https://mobile.twitter.com/slackhq/status/879755518843252736
Regardless, the UX of slack, discord, teams etc. is different from IRC because it’s what people expect from an IM client
> features that lead to a negative user experience.
Any feature can be a negative user experience. There is only one way to see what a majority of users are "expecting" and that is to open the mainstream IM apps in default configuration. The worst case of poor user experience is breaking the expectation that it works exactly like that.
There was a joke on bash.org that IRC is basically multiplayer Telnet and ... they aren't really too far off.
This has good and bad things about it:
Good: it's extremely flexible.
Good: it's extremely efficient - your major IRC servers at there peak were probably one machine, possibly single core, and handled 20,000+ active connections. Protocol is extremely proxyable and tunnelable.
Good: It works well over dialup. If you can get .002Mbit/sec between you and the server you can use IRC.
Bad: no real concept of identity - everything is based on IP addresses and current connections. Connection drops, you're gone. Things have arisen to address this (NickServ, etc.) and using a bouncer has always been a thing.
Good: no real concept of identity - if your IP is cloaked or you're not accessing from your home IP, you're very anonymous.
Bad: First user on a channel is it's op and it's owner and can control the channel. If all ops connections drop, someone can take it over. DoSes/DDoSes to disrupt channels have been a thing. Things have arisen to address this on modern IRC (ChanServ) but before then, any really serious channel had to have a network of bots with out-of-band coordination to protect it (eggdrop).
Bad: Doesn't support file transfer directly. This is done with another protocol DCC which is hard to work with over firewalls, etc.
Bad: Media and link support is up to clients and requires non-IRC protocols to be effective. You're not posting pictures in IRC channels unless you are using a client that supports it such as thelounge, and even then what thelounge does is upload your pictures to a local server.
Good: Mature IRC clients give you a lot of control.
Bad: Mature IRC clients are complicated.
Bad: IRC is one of those protocols that arose before encryption was considered a basic need. Modern IRC supports SSL but all it takes is one client connecting non-SSL to ruin it like email, unless the server is SSL only.
Bad: Mature IRC servers tend to be from the age where the Internet was ruled by universities. So, DNS is relied on for security and identity far more than it should be. Configuration of mature IRC server daemons I find somewhat complex and difficult.
POP3:
1. run openssl s_client -connect myserver.example.com:995
2. enter two commands: "user myusername" "pass mypassword"
3. profit
SMTP & AUTH PLAIN is only slightly more complicated but similarly just an additional protocol command, connecting with s_client. (You need to generate the auth string in another shell window with: echo -ne "\0username\0password"|openssl base64)Often local stuff like: “Why does is smell like somethings on fire”, “Has the water been turned of” or is “Is soccer cancelled this week?” is only posted on Facebook. So if you don’t have Facebook, you can’t get those information. Then again the Facebook algorithm will hide it for three weeks before deciding that you need to know that the hot water will be turned of for quarter of the town at three o’clock.
I feel that Usenet would be ideal for this.
https://paparisa.unpatti.ac.id/linux_journal_archive_1994_20...
I have the skills. Just let me automate my own machine without making me have to fight you tooth and nail!
It could be a little bit more complex in my opinion. Perhaps it is time for servers to start supporting an i.r.c. 2.0 protocol but otherwise allow 1.0 and 2.0 users to still communicate with each other to facilitate the migration.
For example a server can tell the client that it only accepts UTF-8: https://ircv3.net/specs/extensions/utf8-only
I also wish that nicknames would not be handled via the hack of bots, as this sysem allows one to take a nickname one does not own, at least for a short while, but simply no identify it and ignore that message, and thus impersonate another user.
I also believe it is possible to have a protocol that has proper E2EE and simple enough to where you can use netcant and one other tool to use IRC.
Trust-on-first-use authentication (like signal or ssh) is also terrible in practice on its own. Keep it simple. Let the servers handle public key distribution and certification so that compromise of the server/mesaaging infrastructure is required to mount identity attacks, then do the normal TOFU authentication so users won't have to trust middleware. Have a commandline tool that "connects" to the other user (like ssh or sendmail) and opens a socket/fd you can use with a proper frontend or just echo/netcat to it.
If it was well supported for smartphones, I'm still wondering if it would cause some bandwidth costs to servers.
EDIT: I know about bouncers, but I would prefer to do without.
They can do it with some help from the IRC server: https://ircv3.net/specs/extensions/chathistory + https://github.com/ergochat/ergo/blob/master/docs/USERGUIDE....
If the server itself doesn't support it, you'll need to add a bouncer inbetween, which is still very common, unfortunately.
Well doing without bouncers like other "modern" chat services is kinda like using another person's bouncer. An IRC server is just a realtime relay, it's not meant to store history, manage replay to different devices, etc. This would require much more code and a bigger database (and the logging of all messages).
1) How easy is it to use?
2) What features does it offer me?
3) How well does it integrate into my lifestyle?
4) Do my family and friends use it? Can I get them to?
Slack and Discord win on ALL FOUR of the above points vs. IRC. IRC is a dead horse... stop beating it, please.
"The only thing that matters in software is the experience of the user." --Ryan Dahl
I suspect some IRC users like the high barrier to entry (but would never admit to it): it keeps out all those clueless 'non-technical' users.
And there are (and certainly were) plenty of people on IRC who aren’t very technical. Seriously, around 20 years ago it was often used as a "dating app" by regular users, or for radio listeners & DJs to chat, etc.
I like the interface way more than Discord.
And it seems to attract more knowledgeable people.
If you are into startups, check out #startups on Libera!
While that is true, most of those who wrote bots did not meaningfully interact with the protocol because they used abstractions (eggdrops, mirc scripts, etc). The simplicity of the protocol was unrelated, as a well abstracted library for any other protocol or even service (such as twitter) can be as simple.
That isn’t to say that most fully featured tools were written from scratch — I can’t speak to that one way or another. But I know a lot of people who were learning about internet protocols by using telnet to interact directly with IRC servers then transferring that knowledge into a socket-level reimplementation of the protocol.
RFC1459 certainly proved to me that RFCs can be simple and worth reading. And the whole experience taught me early that a simple enough, well documented protocol could be easier to use than a wrapper library in a foreign language. I certainly use a lot of libraries these days, but those lessons have served me extremely well.
Also wrote a script that sent email directly for tinkering purposes, later used that protocol knowledge to get my first tech job haha "how does email work?" "how in-depth do you want?"
You are also right to some extent as well; I wonder how much mIRC scripting has been underestimated as the gateway drug to programming for thousands.
(Rose-tinted/me-tinted disclaimer: the first non-trivial program I wrote was an IRC quote bot, in Visual Basic. I later rewrote it into Python, because I wanted to learn Python, which eventually led to my day job today...)
http://github.com/tinspin/fuse
The HTTP server is written in Java with a custom JSON database and it has clients in C++, C# and HTML5.