Comment 13 for bug 509802

Revision history for this message
In , Simon McVittie (smcv) wrote :

I'm not sure what the future of this branch is. I discussed it with Sjoerd this morning but we didn't really come to a conclusion: I'd like to either merge it or abandon it before too long, so we can run Idle through a re-indenter.

Only having one room list seems broken: it's a relic from the pre-Requests spec in which we couldn't have multiple "similar" channels, and we should just delete that wording from the spec. In a protocol like IRC where you can only have one room-listing transaction open at a time, the second and subsequent channels should probably just not list anything until it's their turn?

There are two problems with indiscriminate room listing (room lists that return too many results), which jointly prompted the "/list -YES" feature in irssi:

* the server suffers from unwanted load
* you suffer because there's no way to stop the server sending out room names (possibly throttled to n lines per second where n isn't particularly large), and until it's finished, you can't receive any other message

The normal way to list channels in a dedicated IRC client like irssi is with "/list PATTERN", which lists channels matching PATTERN (which is a shell-style glob, I think?). We don't have API for this yet, only for listing every channel. We could add a method you call instead of ListRooms, ListByPattern (s), which takes an unspecified, protocol-specific pattern (a shell-glob on IRC) and lists some implementation-defined superset of that pattern. This is starting to look more like ContactSearch :-)

Sjoerd mentioned that the UI he'd ideally like to see in Empathy is "start typing and channels appear", like the live-search for contacts. One possibility would be for Idle to make ListByPattern fail until at least n characters were typed, and for Empathy to keep calling it once per keypress until it succeeded.

However, it's easy to construct pathological patterns that match a lot of channels but have enough characters in them to look relatively harmless ("******" on any server that uses shell-globs, but that's easy to avoid by not counting metacharacters, if you know all of them; "#debian-" on irc.debian.org, which is harder to avoid).

One possibility would be to have a flag for "you must specify a pattern" and have Empathy not attempt a live search, or to assume that IRC is the only thing that combines a massive user-base with a shaky protocol and have that flag be "the protocol is 'irc'".