Logs for jdev
[00:13:59] * tong left the chat.
[01:14:17] * evilotto left the chat.
[01:20:48] * smoku left the chat.
[01:26:43] * bLaDe joined the chat.
[01:36:57] * will.thompson left the chat.
[02:01:26] * bLaDe left the chat.
[02:05:15] * bLaDe joined the chat.
[02:16:33] * darkrain_ left the chat.
[02:43:07] * jcea left the chat.
[03:11:20] * bLaDe left the chat.
[03:17:39] * bear joined the chat.
[03:17:53] * bear left the chat.
[04:00:06] * Lance joined the chat.
[04:22:27] * Lance left the chat.
[04:57:19] * lastsky joined the chat.
[04:59:04] * lastsky left the chat.
[04:59:38] * Neustradamus left the chat.
[04:59:46] * Neustradamus joined the chat.
[05:00:17] * MattJ left the chat.
[05:24:44] * Ludovic joined the chat.
[05:43:57] * misha left the chat.
[05:47:48] * Ludovic left the chat.
[06:58:22] * teo1 left the chat.
[06:58:24] * teo1 joined the chat.
[07:04:53] * lastsky joined the chat.
[07:25:32] * Alex joined the chat.
[07:34:39] * Neustradamus left the chat.
[07:39:14] * Alex left the chat.
[07:55:35] * lastsky left the chat.
[08:04:40] * teo1 left the chat.
[08:36:40] * smoku joined the chat.
[08:39:25] * Alex joined the chat.
[09:17:13] * luca tagliaferri joined the chat.
[09:31:31] * will.thompson joined the chat.
[09:45:23] * elmex joined the chat.
[09:58:49] * will.thompson left the chat.
[10:02:21] * scippio left the chat.
[10:10:46] * nabatt joined the chat.
[10:16:25] * Zash joined the chat.
[10:22:34] * nabatt left the chat.
[10:24:34] * nabatt joined the chat.
[10:32:48] * will.thompson joined the chat.
[10:45:12] * jcea joined the chat.
[11:03:37] * lastsky joined the chat.
[11:06:25] * lastsky left the chat.
[11:06:44] * Zash left the chat.
[11:08:27] * scippio joined the chat.
[11:25:39] * dbanes joined the chat.
[11:30:17] * Neustradamus joined the chat.
[11:30:39] * teo1 joined the chat.
[11:45:48] * naw joined the chat.
[12:12:24] * Tobias joined the chat.
[12:19:43] * nabatt left the chat.
[12:20:02] * nabatt joined the chat.
[12:26:52] * lastsky joined the chat.
[12:28:42] * lastsky left the chat.
[12:34:17] * nabatt left the chat.
[12:34:46] * nabatt joined the chat.
[12:43:16] * nabatt left the chat.
[12:43:37] * Treebilou joined the chat.
[12:43:38] * nabatt joined the chat.
[12:52:35] * jameschurchman joined the chat.
[13:04:55] * Hermitifier joined the chat.
[13:06:40] * Destructhor joined the chat.
[13:12:46] * Destructhor left the chat.
[13:13:10] * MattJ joined the chat.
[13:20:18] * Zash joined the chat.
[13:27:55] * Tobias left the chat.
[13:28:14] * Tobias joined the chat.
[13:28:48] * 1ntellect joined the chat.
[13:29:39] <1ntellect> Hey guys
[13:31:11] * jameschurchman left the chat.
[13:32:00] <1ntellect> For our product, we are looking at something like "groups" that the users can create, and there will be one bot per group,
to put it vaguely.
[13:32:17] <1ntellect> people who want to interact with the group will add it's bot.
[13:32:19] <MattJ> Hi
[13:32:46] <1ntellect> So there could potentially be hundreds or perhaps thousands of bots
[13:32:57] <1ntellect> how does one go about making such a system?
[13:32:57] <dwd> 1ntellect, What do these groups do?
[13:33:01] <dwd> Roughly?
[13:33:05] * Tobias_ joined the chat.
[13:33:07] * Tobias_ left the chat.
[13:33:07] * Tobias__ joined the chat.
[13:33:24] * Tobias__ left the chat.
[13:33:29] <dwd> Tobias, Ah, the famous SUM hash algorithm, huh?
[13:33:41] <dwd> Tobias, And Swift. With the Amusing Swift Bug.
[13:33:43] <Tobias> yeah
[13:34:40] * Tobias_ joined the chat.
[13:34:42] * Tobias_ left the chat.
[13:34:42] * Tobias__ joined the chat.
[13:34:44] <1ntellect> dwd: Something like, if I own a group, I will use the group bot to talk, while the users of a group will use a common bot
to recieve messages and talk back
[13:35:03] <dwd> 1ntellect, Ah, okay. How does this differ from MUC?
[13:36:23] <1ntellect> Sorry if I am being vague, but I can only pass out limited information. But the product is aimed at normal gmail kind of users.
The messages are stored and there is a web layer through which the same communication also happens
[13:36:30] * Tobias__ left the chat.
[13:36:34] * smoku left the chat.
[13:36:37] <1ntellect> All this is not real-time.
[13:36:47] * smoku joined the chat.
[13:37:28] <1ntellect> I could leave a message to a group and get responded as and when the corresponding party wishes to
[13:37:37] * smoku left the chat.
[13:37:49] * smoku joined the chat.
[13:37:56] <1ntellect> my main concern is, is it viable to have hundreds and thousands of bots?
[13:38:17] <dwd> Oh. Sure. Jabber.org has hundreds and thousands of users.
[13:38:17] <1ntellect> and processing the messages for each
[13:38:21] * Tobias_ joined the chat.
[13:38:23] * Tobias_ left the chat.
[13:38:23] * Tobias__ joined the chat.
[13:38:28] * smoku left the chat.
[13:38:33] * Tobias__ left the chat.
[13:39:12] <1ntellect> not normal users, but programmatically managed users which others add and talk to
[13:39:25] <1ntellect> will I need to work with a server component for this sort of thing?
[13:39:40] <dwd> I think you'd want to consider whether you took an open-source server and simply customized it, or whether you implemented
the group-bots and hung them off an OTS server.
[13:39:55] <1ntellect> what is OTS?
[13:40:02] <dwd> Off The Shelf.
[13:40:07] <1ntellect> oh right
[13:40:09] <dwd> As in, without any custom work.
[13:40:41] <dwd> You could use components, but you'd effectively then be duplicating much of the work of a server if it's got to manage rosters
for each bot's address, etc.
[13:40:42] <1ntellect> but for this sort of thing, will I have to look into server components?
[13:41:03] <1ntellect> earlier we were looking at just one global bot, so I was just using it as a client
[13:41:17] <1ntellect> and handling the presence and stuff myself
[13:42:21] <1ntellect> or is it more complex than that and requires server code customization?
[13:42:44] <dwd> If you do a component, then the only thing the server can do for you is S2S - you'd be doing everything else.
[13:43:38] <dwd> Some of the open source servers, on the other hand, are pretty easy to customize, so if the only thing you want to do is message
handling and making your bots appear online all the time, that might be easier to do by adapting an existing open-source server.
[13:44:24] <dwd> (Which is a shame, because I work for Isode writing a closed-source one, so I'm not really helping myself here...)
[13:44:31] <MattJ> /me grins
[13:44:37] <MattJ> dwd, you can always come and join us
[13:45:04] <1ntellect> between writing a component and customizing an open source server, what are the pros and cons of each ?
[13:45:23] <1ntellect> thanks a lot btw
[13:46:00] <dwd> 1ntellect, If you need to have the bots largely act as ordinary users, in terms of appearing in rosters, etc, then you'll
need to handle presence subscriptions and probing.
[13:46:33] <MattJ> That doesn't necessarily imply storing a roster, and you probably have the authorization info in a DB already anyway
[13:46:43] <dwd> 1ntellect, It's generally speaking unlikely you'll manage to do this as efficiently as the server, however you *might* find
that you need access and control of the data anyway (as Matt says)
[13:46:59] <1ntellect> I am currently doing that for 1 bot as a client
[13:47:15] <dwd> 1ntellect, No, the server's doing a lot for you, as a client.
[13:47:28] <1ntellect> storing the users data and handling presence and probes
[13:48:06] <dwd> 1ntellect, Really? You shouldn't need to handle probes - in fact, as a client, you should never see them.
[13:48:51] <dwd> 1ntellect, Customizing a server means using that server foreever, in effect, and also using their language, their structures,
etc. But it might well save you some work.
[13:49:31] <dwd> (And FWIW, the open-source servers seem to all use relatively unusual languages, like Erlang and Lua.)
[13:49:51] <1ntellect> yea
[13:50:27] <dwd> 1ntellect, Of course, using a component also means you can use the server I (help to) write, which I like to think is a huge
advantage. :-)
[13:53:09] <1ntellect> earlier I asked around here about the best way to make a scalable bot which is potentially added by thousands of users. People
said I should just use a client and not worry about a server component for that.
[13:53:42] <1ntellect> and if I was really worried about scalability, I could store the user db and handle presence myself
[13:53:58] <1ntellect> which is what I am currently doing, and have working locally
[13:54:34] <dwd> Right. I think that if you're worried about the scalability of your server, you should pick a different server.
[13:54:53] <dwd> It's a lot cheaper than deciding to try to reimplement bits yourself.
[13:55:59] <dwd> For thousands of bots, though, your main problem doing it as clients would be the number of clients - it's just an ugly bits
of coding. The advantage would be that it's obviously really easy for you to build in horizontal scalability.
[13:57:12] <1ntellect> So right now, if I want one global bot, and hundreds of "group" bots, which all need to be online and for all of which i need
to by processing messages.
[13:57:38] <1ntellect> What is my best option is terms of 1) code complexity and 2) Scalability
[13:57:39] <dwd> Right, it's a TCP connection per bot, basically, if you do it as clients.
[13:57:51] <1ntellect> according to you
[13:58:09] <MattJ> I prefer components, because they're more flexible and you can do things more efficiently
[13:59:32] <dwd> 1) Component. (Assuming you can handle probes etc, or assuming you have to anyway) 2) Component, probably. But you'll want
to consider load-balancing and/or CHT-based traffic splitting for the component traffic, and not all servers have that.
[14:00:07] <1ntellect> what's a good server you would recommend?
[14:00:12] <1ntellect> I am currently using prosody
[14:00:27] <1ntellect> MattJ: I talked to you earlier on webchat if you remember :)
[14:00:29] <dwd> 1ntellect, Prosody is good. If you're happy with it, then stick with it.
[14:00:50] <MattJ> +1
[14:01:00] <MattJ> 1ntellect, how earlier is earlier? :)
[14:01:02] <dwd> MattJ, Well, yes, you *would* say that.
[14:01:10] <1ntellect> a week ago or so
[14:01:15] <1ntellect> iirc
[14:01:27] <MattJ> The Prosody room is incredibly active recently
[14:01:47] <dwd> 1ntellect, Of course, I'd also recommend Isode M-Link, but that's at least partly because I work on it.
[14:01:56] * Hermitifier left the chat.
[14:02:01] <1ntellect> hmm
[14:02:26] <1ntellect> I meddled with components for a bit. But I didn't understand a few things
[14:02:59] <1ntellect> I was recieving messages for <anything>@foo.bar
[14:03:26] <MattJ> Correct
[14:03:47] <MattJ> The whole point is that you can make a single component look like many JIDs
[14:03:47] <1ntellect> how can I have specific bots abc@mydomain.com and have my component recieve it
[14:03:55] <dwd> 1ntellect, RIght - a Component is, in effect, a kind of "domain-level client".
[14:04:04] <MattJ> Just make mydomain.com a component
[14:04:16] <1ntellect> and like abc, I will have say 100 more specific bots
[14:04:49] <dwd> 1ntellect, Right, the component connects as "mydomain.com", and gets all traffic to subordinate jids send to it.
[14:05:01] <dwd> 1ntellect, One TCP connection, lots of addresses.
[14:05:14] * scippio left the chat.
[14:05:36] * scippio joined the chat.
[14:06:14] <1ntellect> ok so if a user adds and interacts with abc@componentdomain.com ...
[14:06:28] <dwd> Then they talk to your component.
[14:06:41] <1ntellect> I have to check if abc is a valid specific bot and handle it myself right?
[14:06:49] * dbanes left the chat.
[14:06:52] * dbanes joined the chat.
[14:06:56] <1ntellect> abc being a group someone has created, say
[14:07:04] <dwd> Right. Including the <presence type='probe'> and the responses to that.
[14:07:20] <1ntellect> Alright
[14:07:32] <1ntellect> I think I am getting a slight idea of how it goes
[14:07:47] <dwd> There's some coding examples in the O'Reilly book about converting a bot service into a component-based one.
[14:07:49] <1ntellect> thanks a lot dwd and MattJ
[14:07:55] <MattJ> np
[14:08:04] <1ntellect> yea, I have it with me :)
[14:08:17] <dwd> 1ntellect, Ah, hang on, then, I'll look up the pages.
[14:09:55] <dwd> Page 218
[14:10:34] <dbanes> hi
[14:10:38] <dwd> And 203 has some info, too.
[14:11:50] <MattJ> Hi dbanes :)
[14:12:00] <dbanes> @cleartext went the component route - tied into the user database
[14:12:03] <dbanes> Hi MattJ
[14:12:14] <dbanes> for our microblogging platform
[14:13:14] <dbanes> and we started with the ideas in the book as well - good starting point but lot's of extra work for a live platform
[14:17:30] * jameschurchman joined the chat.
[14:35:42] * 1ntellect left the chat.
[14:36:21] * 1ntellect joined the chat.
[14:44:41] * will.thompson left the chat.
[14:44:42] * will.thompson joined the chat.
[14:48:39] * theozaurus joined the chat.
[14:51:07] <theozaurus> Hi Guys, just working on a library to help clients deal with managing XMPP servers. Currently, I'm looking through the MUC
XEP. Why are presence messages used to create rooms? Using just IQ's makes more sense to me because it abides the request/response
pattern.
[14:51:43] <dwd> They're kind of not...
[14:52:01] <dwd> MUC rooms are created on demand, and joining a MUC room is done by presence.
[14:52:13] <dwd> MUC rooms are configured, however, by IQ.
[14:53:16] <theozaurus> Sure, but under the 'Creating an Instant Room' bit I can't just send that IQ, I have to send a presence first. What if I just
want to create a room and not join it?
[14:53:34] <dwd> theozaurus, You can't, I'm afraid.
[14:54:46] <MattJ> theozaurus, presence is used because it means you automatically leave if you get disconnected from your server
[14:54:55] <theozaurus> It's only popped up as a problem because sending IQ messages using my code waits for a response, and presence messages it
doesn't. So it's difficult for me to know if the presence message has worked in this case.
[14:54:56] <MattJ> iqs wouldn't have that
[14:55:09] <dwd> theozaurus, Yes, I can sympathize.
[14:55:23] <dwd> MattJ, Yes, but he doesn't want to join the room in the first place, just set it up.
[14:55:40] <MattJ> Yep, I was just answering the "why presence"
[14:55:51] <MattJ> Creating a room and not joining it isn't a typical use-case
[14:56:01] <MattJ> No reason a server couldn't support it though
[14:56:03] <theozaurus> I can understand both mechanisms. It just seems a shame you can't use purely IQ.
[14:57:32] <theozaurus> Our use case is purely administrative. In this scenario we don't care about what goes on inside a room, just that it exists
and is configured correctly.
[14:58:10] * teo1 left the chat.
[14:58:33] <theozaurus> On a slight tangent. I remember some chat a while ago about a pubsub/muc hybrid. Is anyone still throwing this idea around?
[14:58:53] * davidbanes joined the chat.
[14:59:42] * davidbanes left the chat.
[15:00:14] <dbanes> how about making your admin app appear as a bot with a JID like muc_admin@<server.com> and use it to create rooms
[15:01:40] * davidbanes joined the chat.
[15:01:55] * davidbanes left the chat.
[15:02:08] <theozaurus> dbanes: I could do that, but I'd rather my occupants didn't have to care about the likes of bots. Presumably this means my
bot will also receive all messages. I could potentially be creating 1000's of rooms so this would be wasteful in terms of
traffic. Unless there's a way to ignore this.
[15:06:43] <dbanes> sounds like you need to build a custom MUC component :)
[15:07:55] <MattJ> or modify/make a plugin for an existing one
[15:08:22] * Tobias left the chat.
[15:09:48] <dwd> theozaurus, I wouldn't object to being able to create rooms by configuring a room that doesn't exist - my implementation already
lets you configure rooms from "outside", as it were.
[15:10:42] <dbanes> is this a client side app?
[15:14:31] * scippio left the chat.
[15:14:56] * scippio joined the chat.
[15:15:44] <theozaurus> dwd: What's your implementation?
[15:16:23] <theozaurus> dbanes: This is all designed for a webserver talking to an XMPP server. Essentially the webserver has our business logic,
and the XMPP side does the realtime goodness and heavy lifting on the message passing.
[15:16:45] <dwd> theozaurus, Isode M-Link.
[15:18:53] <theozaurus> dwd: One of the Prosody developers was talking about a neat feature M-Link had, to do with authzid. Allowing an admin to login
as another user using the admin credentials. Is that right?
[15:20:06] <dwd> Gosh, you can, actually, but I didn't think anyone knew about that. (It's an artifact of it being built on a common core with
our IMAP server, where that's more useful).
[15:21:28] <dwd> It's fairly rudimentary - you can define a single authcid which can authorize as any authzid. For XMPP, it's possible to do
cleverer things, like retrieve other people's rosters if you have suitable permissions - which we're aiming toward.
[15:21:33] <theozaurus> You guys should advertise it. It would be a very handy feature for us. Our clients need a lot of setup relating to PEP nodes
so we often need to login as them to make sure that is all correct.
[15:22:42] * jameschurchman left the chat.
[15:23:04] <dwd> Ah, admins can just look at other jid's PEP nodes (at least, they will be able to in the next release).
[15:24:22] <theozaurus> dwd: Can they configure them as well? We have a use case where PEP is used as storage for the client, but only the server
can update it.
[15:24:56] <dwd> theozaurus, Will be able to. Admins (strictly speaking, operators) are simply treated as "above owner" on any resource.
[15:25:18] <theozaurus> that makes a lot of sense
[15:25:25] <dwd> theozaurus, The current release doesn't have configurable PEP nodes (nor persistent storage).
[15:25:44] <theozaurus> is there a release date for the next one?
[15:29:10] <dwd> There certainly should be. I think we're quoting Q1 2011 - in principle we should get release prior to the end of March. (Otherwise
I'll get annoyed and start backporting features).
[15:30:39] <theozaurus> I'll keep a look out. Cheers
[15:38:19] * dbanes left the chat.
[15:42:41] * nabatt left the chat.
[15:42:44] * nabatt joined the chat.
[15:50:09] * teo1 joined the chat.
[15:58:55] * scippio left the chat.
[16:08:45] * will.thompson left the chat.
[16:11:52] * scippio joined the chat.
[16:12:49] * Alex left the chat.
[16:19:35] * dbanes joined the chat.
[16:29:19] * will.thompson joined the chat.
[16:34:12] * 1ntellect left the chat.
[16:34:32] * stpeter joined the chat.
[16:52:23] * naw left the chat.
[16:57:14] * Tobias joined the chat.
[17:02:16] * SteveG left the chat.
[17:07:25] * lastsky joined the chat.
[17:15:31] * lastsky left the chat.
[17:21:20] * naw joined the chat.
[17:22:13] * xnyhps left the chat.
[17:31:07] * nabatt left the chat.
[17:33:42] * xnyhps joined the chat.
[17:33:42] * xnyhps left the chat.
[17:38:24] * xnyhps joined the chat.
[17:38:25] * xnyhps left the chat.
[17:49:40] * deryni joined the chat.
[17:52:28] * theozaurus left the chat.
[18:08:30] * scippio left the chat.
[18:20:32] * evilotto joined the chat.
[18:46:40] * jameschurchman joined the chat.
[18:47:11] * jameschurchman left the chat.
[18:47:43] * luca tagliaferri left the chat.
[19:07:05] * xnyhps joined the chat.
[19:07:06] * xnyhps left the chat.
[19:07:17] * xnyhps joined the chat.
[19:07:17] * xnyhps left the chat.
[19:15:34] * McKael left the chat.
[19:17:18] * Ludovic joined the chat.
[19:17:53] * Ludovic left the chat.
[19:24:02] * will.thompson left the chat.
[19:30:28] * xnyhps joined the chat.
[19:39:00] * xnyhps left the chat.
[19:39:05] * xnyhps joined the chat.
[19:47:15] * Lance joined the chat.
[19:50:06] * McKael joined the chat.
[19:58:33] * Lance left the chat.
[20:03:58] * naw left the chat.
[20:32:09] * scippio joined the chat.
[20:36:50] * Tobias_ joined the chat.
[20:36:51] * Tobias_ left the chat.
[20:36:51] * Tobias__ joined the chat.
[20:37:01] * Tobias__ left the chat.
[20:38:25] * Tobias_ joined the chat.
[20:38:26] * Tobias_ left the chat.
[21:06:18] * dbanes left the chat.
[21:07:12] * Tobias_ joined the chat.
[21:07:23] * Tobias_ left the chat.
[21:07:23] * Tobias__ joined the chat.
[21:07:44] * Tobias__ left the chat.
[21:17:22] * naw joined the chat.
[21:22:14] * Neustradamus left the chat.
[21:42:20] * scippio left the chat.
[21:42:56] * scippio joined the chat.
[23:12:39] * Tobias left the chat.
[23:41:45] * stpeter left the chat.
[23:53:08] * naw left the chat.