IRCNow

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
openbsd:irc:psybnc [2020/07/29 00:50]
jrmu
openbsd:irc:psybnc [2020/07/29 01:02]
jrmu
Line 6: Line 6:
   - ZNC is written in C++, an ugly and inelegant language.   - ZNC is written in C++, an ugly and inelegant language.
   - ZNC throttles users when you first start up ZNC and connect everyone. However, the throttling is done in a very stupid manner -- each connection is attempted and throttled serially, even if the networks being connected to are different. These connections should be done in parallel rather than serially. For example, if you have 30 independent networks to connect to and a 30 second throttling delay, it would take 15 minutes with ZNC, but it should only take 5 seconds with a proper bouncer that connects to all 30 networks simultaneously (no need to throttle because they are all unique).   - ZNC throttles users when you first start up ZNC and connect everyone. However, the throttling is done in a very stupid manner -- each connection is attempted and throttled serially, even if the networks being connected to are different. These connections should be done in parallel rather than serially. For example, if you have 30 independent networks to connect to and a 30 second throttling delay, it would take 15 minutes with ZNC, but it should only take 5 seconds with a proper bouncer that connects to all 30 networks simultaneously (no need to throttle because they are all unique).
-  - If a server doesn'​t have a properly signed SSL cert, ZNC will disconnect until the user adds the SSL fingerprint manually. This confuses >90% of users. They always blame our bouncer for not working properly. To make matters worse, ​znc then insists upon reconnecting every minute or so and failing in the same manner. And because ZNC does connection throttling, this slows everyone from being able to connect. You as a sysadmin are forced to manually disconnect networks that have SSL certs that aren't properly signed, or else in a few weeks, your ZNC becomes so slow (due to all the throttling) that it takes >10 mins to connect. +  - If a server doesn'​t have a properly signed SSL cert, ZNC will disconnect until the user adds the SSL fingerprint manually. This confuses >90% of users. They always blame our bouncer for not working properly. To make matters worse, ​ZNC then insists upon reconnecting every minute or so and failing in the same manner. And because ZNC does connection throttling, this slows everyone from being able to connect. You as a sysadmin are forced to manually disconnect networks that have SSL certs that aren't properly signed, or else in a few weeks, your ZNC becomes so slow (due to all the throttling) that it takes >10 mins to connect. 
-  - ZNC has design flaws with how connections work that are insidious because sysadmins don't realize ​it but which confuse ​users. ​First, ZNC+  - This same error also occurs when our bouncers are GLINEd. Again, ​ZNC stupidly tries to reconnect every minute, causing everyone to suffer from connection throttling, even if they are not GLINEd. 
 +  - ZNC chose to adopt IRCv3, a terrible protocol because it adds nothing of value to users but introduces a lot of bugs. We have documented that older versions of mIRC (from around v7.33 to 7.41) are unable to connect because either mIRC or ZNC improperly implement IRCv3 capability negotiation. This bug has also been observed ​with some other Mac and Android IRC clients. What is worse is that nothing in the system logs or user clients ever show this error; it just appears to be nonresponsive after IRCv3 capability negotiation. We are able to reproduce this bug. 
 +  - ZNC nickserv module appears to use the /nickserv alias which is not supported on all IRCds (not supported by ngircd). The proper nickserv module should instead adapt to each IRC network so that users do not have to memorize the idiosyncrasies of every single network's services. For example, for ngircd, the proper command is /squery nickserv identify <​password>;​ for DALnet, the proper command is /msg nickserv@services.dal.net identify <​password>​. This really does not need to be an optional module; ​it needs to be integrated into the bouncer. 
 +  - ZNC does not offer users any way to download their chat logsIt has a chat log module which stores the chat logs on the server hard disk -- but how is a user supposed to fetch these logs? Unless you give every single user on your bouncer ssh accessyou are forced to manually email them. A hideous solution. 
 +  - Requesting a ZNC account using a web registration form or a bouncer bot is an ugly hack. Users should be able to register an account instantly upon first connection. 
 +  - ZNC developers most likely have no interest in fixing any of the above design flaws. And even if they did, you'd be at the mercy of their development team, which may take years before they fix it. You are better off forking the code yourself.
  
 ====== Why psyBNC ====== ====== Why psyBNC ======