|The [web] startup I'm working on will need a user-to-user instant messaging system of some sort. A system that allows users to have lists of contacts, and then send messages back and forth, with a little presence information. It will need to be web-based, but relatively simple (like Facebook Chat, for instance).|
My startup currently already uses a very simple and straightforward daemon (in Python) to facilitate real-time push to web users (uses Flash client-side).
XMPP would tackle all of these things well, since that's what it is born to do. I could run an ejabberd server and go from there.
However, I'd need to extensively modify/configure the server to match the requirements of my startup. It's been done (Chesspark has invested themselves in this), but I worry that I'd spend a disproportionate amount of time trying to mold and maintain a jabber server to match the requirements of the site. (I'm a sole founder.) A few requirements:
- Use the database for user accounts (easy)
- I'd like to make wider use of users' contacts throughout the site as part of the site's featureset; the information about contacts must be equally easy to retrieve, edit, and manage without going through the jabber server
- I'll need to make sure the messaging system isn't abused as a free-for-all: Messaging should be a core part of the site's experience, and we'll want to have good controls for reporting disruptive users, filtering explicit content, and the like. A lot of that is supported by the ejabberd server, but it could be difficult to integrate sitewide without delving into its internals.
- It needn't be complex; the messaging system should just be a simple tool for users to communicate. Facebook Chat is relatively simple in that respect.
Since we already have a push-notification mechanism to our users, I feel like it would be a lot simpler to forego XMPP for now and just roll out a site-specific solution. K.I.S.S. is a strong motivator here; integrating an XMPP server into our site would require a big investment into learning the internals of the server. I could always add a gateway to XMPP if needed down the road.
Granted, this is what XMPP was made for. I've read a lot of Metajack's posts about how Chesspark used it throughout their site, though they've used XMPP as a core part of their architecture.
Should I go with my instinct -- keep things simple and reuse our push architecture to add the messaging system, or should I dive into XMPP and try to mold it to the requirements of the site?