empathy can't get roomlist (from irc.freenode.net)

Bug #426795 reported by tankdriver on 2009-09-09
80
This bug affects 17 people
Affects Status Importance Assigned to Milestone
telepathy-idle
Fix Released
Medium
telepathy-idle (Ubuntu)
Low
Unassigned

Bug Description

Binary package hint: empathy

empathy (2.27.91.1-2ubuntu5)

steps to reproduce:
- add a (freenode) IRC Account
- click Room > [Join Room] Room List

- nothing happens

Debug Information [Help>Debug]:
empathy/Other-DEBUG: 1,252499e+09: builder_get_file_valist: Loading file /usr/share/empathy/empathy-new-chatroom-dialog.ui
empathy/Tp-DEBUG: 1,252499e+09: tp_roomlist_finalize: Closing channel...
empathy/Tp-DEBUG: 1,252499e+09: tp_roomlist_request_channel_cb: Error requesting channel: unsupported channel type org.freedesktop.Telepathy.Channel.Type.RoomList

ProblemType: Bug
Architecture: amd64
Date: Wed Sep 9 14:26:29 2009
DistroRelease: Ubuntu 9.10
NonfreeKernelModules: nvidia
Package: empathy 2.27.91.1-2ubuntu5
ProcEnviron:
 LANG=de_AT.UTF-8
 SHELL=/bin/bash
ProcVersionSignature: Ubuntu 2.6.31-10.30-generic
SourcePackage: empathy
Uname: Linux 2.6.31-10-generic x86_64

Binary package hint: empathy

empathy (2.27.91.1-2ubuntu5)

steps to reproduce:
- add a (freenode) IRC Account
- click Room > [Join Room] Room List

- nothing happens

Debug Information [Help>Debug]:
empathy/Other-DEBUG: 1,252499e+09: builder_get_file_valist: Loading file /usr/share/empathy/empathy-new-chatroom-dialog.ui
empathy/Tp-DEBUG: 1,252499e+09: tp_roomlist_finalize: Closing channel...
empathy/Tp-DEBUG: 1,252499e+09: tp_roomlist_request_channel_cb: Error requesting channel: unsupported channel type org.freedesktop.Telepathy.Channel.Type.RoomList

ProblemType: Bug
Architecture: amd64
Date: Wed Sep 9 14:26:29 2009
DistroRelease: Ubuntu 9.10
NonfreeKernelModules: nvidia
Package: empathy 2.27.91.1-2ubuntu5
ProcEnviron:
 LANG=de_AT.UTF-8
 SHELL=/bin/bash
ProcVersionSignature: Ubuntu 2.6.31-10.30-generic
SourcePackage: empathy
Uname: Linux 2.6.31-10-generic x86_64

Sebastien Bacher (seb128) wrote :
Changed in empathy (Ubuntu):
importance: Undecided → Low
affects: empathy (Ubuntu) → telepathy-idle (Ubuntu)
affects: telepathy-idle (Ubuntu) → empathy (Ubuntu)
affects: empathy (Ubuntu) → telepathy-idle (Ubuntu)
affects: telepathy-idle (Ubuntu) → empathy (Ubuntu)
affects: empathy (Ubuntu) → telepathy-idle (Ubuntu)
affects: telepathy-idle (Ubuntu) → empathy (Ubuntu)
affects: empathy (Ubuntu) → telepathy-idle (Ubuntu)
Changed in telepathy-idle (Ubuntu):
status: New → Triaged
Changed in telepathy-idle:
status: Unknown → Confirmed
Rykel from Singapore (rykel98) wrote :

I also have this problem. Empathy on Karmic does not give a list of the IRC rooms. So far, problem exists on DALnet and Galaxynet. Probably on the other servers too. Thanks!

Brian Vaughan (bgvaughan) wrote :

It's not clear to me if this is a bug. There seems to be no way to get a list of rooms, and there doesn't seem to be any documentation of the feature. That greatly reduces the utility of Empathy as an IRC client.

Tiefflieger (tiefflieger) wrote :

I filed an upstream bug at https://bugzilla.gnome.org/show_bug.cgi?id=601566 , just to notice.

There is a branch for this in idle. It seemed to work when I tried it.

(In reply to comment #1)
> There is a branch for this in idle. It seemed to work when I tried it.

Listing rooms on big IRC servers is a bad idea: you don't get any messages other than the room list until listing finishes. On OFTC and Freenode, when I type '/list' into irssi, it tells me:

  Irssi: Doing this is not a good idea. Add -YES option to command if you really mean it

Not clear what we should do in Idle.

biochip2k (julio-delvalle) wrote :

from bugzilla:
Guillaume Desmottes [empathy developer] 2009-11-11 17:32:58 UTC

That's because telepathy-idle doesn't implement room listing:
https://bugs.freedesktop.org/show_bug.cgi?id=23005

Now in lucid, the "Roomlist" option is greyed out when IRC is selected.
My thoughts: greyed out > feature not available > There is no bug where's no feature
suggesting "Wont fix" or "Wishlist" bug status for Feature request.

t405 (tent405) wrote :

To me, not having a room list is a serious impediment to the usability of an IRC client.
I suggest that this is more important that wishlist.

Some IRC networks frown upon usage of the room list feature. In this case freenode does since it's a large network. I think this bug should be set to won't fix personally.

Javier Hernández (javiube) wrote :

As Shawn says, for me is a serious usability impediment, and it could be the reason to abandon empathy as a multi-protocol chat application. In fact, i'm using pidgin again.

Brian Curtis (bcurtiswx) wrote :

As the upstream status says, on large IRC networks this is a bad idea, and being the empathy triager here I am leaning towards wont-fix because this isn't a bug with empathy/idle it's something that freenode doesn't want. I will wait a few more days to see if upstream says anything

is it possible to add a "-YES" option to Empathy as well?

Tiefflieger (tiefflieger) wrote :

So how am I supposed to join a channel if I don't know the exact channelname?

For using IRC, a roomlist is crucial to me. As long as this room list doesn't work I'll be using pidgin, just like Javier Hernández

Brian Curtis (bcurtiswx) wrote :

@Tiefflieger: you can with other networks, but the big ones like freenode don't like it. So it's disabled by default. Quite honestly the fact that anyone decided to go to pidgin couldn't mean any less to the empathy devs/triagers. The ability to choose which client you want to use is a great feature of linux.

ridgerunner7 (ridgerunner7) wrote :

Lack of documentation is a serious problem. "It's not a bug. It's a feature!" is a joke that testers/users pose to engineers sometimes when they attempt to placate/trick users into changing their viewpoint.

Upstream blames it on Freenode. My sense was that "/list" takes too long on large networks like Freenode so they, Freenode, discourage its use to cloak their own bad implementation. If you really want to then you should send "/list -YES". Can Empathy add a preference that allows users to send the "-YES" option?

Brian while I agree with you that the ability to choose is a great feature of Linux it seriously frustrates me when it is used as a bludgeon as you have done. I know a lot of engineers who are proud of their work and want it to be useful. I hope the Empathy engineers are like that. There is nothing wrong with users reporting (respectfully of course) a usability issue as a bug. IMHO encouraging users to switch when they are trying to make useful contribution is disrespectful to both the user and the engineers. My hope is that you don't really speak for other triagers and the engineers as you have implied.

Pidgin is a great product. My reason for using Empathy is because it integrates with Gnome better than Pidgin. That's an added feature. All we are asking is for better usability.

Changed in telepathy-idle:
importance: Unknown → Medium

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'".

Changed in telepathy-idle:
importance: Medium → Unknown
Changed in telepathy-idle:
importance: Unknown → Medium

(In reply to comment #6)
> 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?).

Actually, this isn't how this works: LIST only supports specifying a single channel name, to get its number of occupants and topic (or an error if it doesn't exist).

Some, but not all, servers run an ‘alis’ bot that you can query with.

What we should do is what irssi does to selectively enable the “not a good idea” warning: send LUSERS to the server while connecting, and look at the RPL_LUSERCHANNELS message in the reply to see how many channels there are. If that number is over some threshold, don't offer RoomList channels.

Later we could add a way to query; that could be made selectively available by looking for a user called 'alis', maybe.

(In reply to comment #7)
> (In reply to comment #6)
> > 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?).
>
> Actually, this isn't how this works: LIST only supports specifying a single
> channel name, to get its number of occupants and topic (or an error if it
> doesn't exist).

To further muddy the waters, a large number of server variants actually do support listing with wildcards. Thankfully, there is a recognised detection mechanism to find out *if* it is supported: RPL_ISUPPORT (005)'s ELIST token. (I'm not certain *everything* uses this, but if it doesn't, well... bad luck for them?)

See: http://www.irc.org/tech_docs/005.html

Basically, you want to look for 'M' in ELIST's value if I remember rightly.

I snapped and updated this branch today.

It seems to work fine. It has the strange behaviour of batching the list of channels up and then emitting it all in one go (rather than emitting them as they arrive—I think the API was basically designed for IRC), which has the amusing side-effect of making Empathy freeze and peg the CPU for, ooh, half a minute when used on Freenode.

I've merged this: <http://cgit.freedesktop.org/telepathy/telepathy-idle/log/?id=04b6b07>

Having this code sitting here rotting doesn't help anyone.

Changed in telepathy-idle:
status: Confirmed → Fix Released
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Duplicates of this bug

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.