Skip to content

The Meanwhile Project

An Open Re-Implementation of Lotus Sametime

SF.net | GNU GPL | Donate

Get Firefox!

Valid XHTML and CSS

Last Modified: 2006-04-12

Questions


General

What is Lotus Sametime?

Lotus Sametime is a corporate Instant Messaging product sold by IBM and Lotus.

It was originally offered by a company called Ubique as Virtual Places (VP), utilizing a client called VPBuddy. The protocol and the client application were renamed to Sametime when Ubique was purchased by Lotus. Later, the product again underwent a name change and is now officially Lotus Instant Messenger (LIM).

The VP protocol is what Meanwhile implements. LIM is slowly moving away from VP, instead favoring SIP/SIMPLE as the underlying messaging protocol. Hypothetically this means that the Meanwhile project will slowly become obsolete. Realistically, VP-based deployments of Sametime will probably be around for quite a while.

If anyone has more information on the history of Ubique, please let me know via the contact page.

What is Meanwhile?

Meanwhile is an open source project for connecting as a client to a Lotus Sametime Connect community. There is a stand-alone library portion, which can be used to write a client, there is a Python module wrapping the library, and there is a Gaim protocol plugin which turns Gaim into a Sametime client. There is also a significant amount of work into documenting the Sametime protocol.

Is this project affiliated with IBM or Lotus?

No. The Meanwhile project is neither affiliated with, nor endorsed, nor supported by, either IBM or Lotus.

The project was first available exclusively inside of IBM, because I didn't want to be sued. This has been resolved with Lotus, and Meanwhile is now open to the world.

To re-cap (because people really seem to have a hard time with this one), Meanwhile is not an IBM project. IBM does not control Meanwhile. IBM does not fund Meanwhile. IBM does not support Meanwhile. Meanwhile is developed outside of IBM. The development of Meanwhile is external to IBM. Inside of IBM is not where Meanwhile is developed.

Does Meanwhile use the Lotus toolkit?

No. It is a project to opperate similarly to the Lotus toolkit, but built from extrapolating the binary protocol from captured network packets.

Should I use Meanwhile?

It's safest to say that Meanwhile is still a beta, and is not completely stable. If you are a hobbyist, or some other variant of insane person, then go right ahead. Problems should be logged in the appropriate trackers with as much pertinent information as possible.

Remember: If it breaks, you get to keep the pieces!

On what platforms can I use Meanwhile?

Meanwhile has been successfully compiled and used on Linux, Win32 (via mingw), Solaris, and Darwin (Mac OSX). Possibly and probably more, but those are the only ones I've heard of so far.

Wanted: someone to get it to build under OS/2

Why is there no SRPM?

Primarily because you can make a source-rpm from the release tarball with a single command:

rpmbuild -ts [tarball]

Should I package Meanwhile into my distribution?

Anything from meanwhile 1.0.0 onward should be fine. I would not recommend packaging anything before that.

Plugins

What is Gaim?

Gaim is an open source Instant Messaging client platform. Gaim supports almost every instant messaging protocol, and any number of additional protocols can be added in as modules. It provides a single front end for all of a user's various instant messaging accounts and buddy lists.

For versions of Gaim prior to 2.0.0, the gaim-meanwhile plugin is maintained as a part of this project.

Does Meanwhile work with Gaim 2.0.0?

Yes. Sametime support via Meanwhile is a built-in part of Gaim starting with version 2.0.0beta1. However, depending on how you are obtaining Gaim, the gaim-meanwhile plugin may be available as part of the primary package, or part of an add-on package.

Meanwhile support in Gaim requires the presence of the Meanwhile library, which is still maintained in this project

How do I make the Meanwhile Gaim plugin use my server-side buddy list?

Back up your buddy list right now with an official client.

The act of obtaining the server-side list is trivial. Correctly parsing the data from it however has turned out to be much more complex.

The level to which the server side list is used is set in a preference attached to the protocol plugin. It has three settings: Local Only; Load from Server; Load and Save to Server. The default is safely set to Local Only.

Meanwhile's handling of certain problems with the list format mimics the official client, in that any saved aliases with the comma (,) character in them will be misinterpreted when the list is later loaded. Don't put commas in your buddy aliases and you should be fine.

How do I add a Notes Address Book Group to my buddy list?

In Gaim 1.5.0, look under Tools→Account Options→[your account]→Add Notes Address Book Group

In Gaim 2.0.0, look under Accounts→[your account]→Add Notes Address Book Group

What is "Psychic Mode" and what does it do?

Psychic Mode is a strange feature. Put simply, it lets you know when someone is going to send you an IM before they actually send you a message. This is accomplished by opening a conversation window/tab when a channel is opened over the IM service from a user. Since most clients (including Meanwhile) open the IM channel as soon as possible in order to negotiate features, a user of a psychic-enabled client will have a conversation window open as soon as someone opens a conversation window to them.

Meanwhile didn't invent this feature. At least two other Sametime clients support it, and it was added to this plugin at the behest of many switching users.

Psychic mode can be enabled from the preferences dialog. It is disabled by default.

Note that with the inclusion of the Sametime plugin in Gaim 2.0.0, this option was removed in favor of a more general Psychic plugin.

What does the "Force Login" option do?

This is an option very few users are likely to need to enable.

A single Sametime community can be deployed across multiple servers, with user accounts configured with a "home" server. When a user logs in to a server in the community, its profile is checked for that home value. If the home value exists and does not refer to the currently used server, the protocol will instruct the connecting client to redirect its login attempt to that other server. At this point, if the "Force Login" option is enabled, the client will instruct the server that it cannot use its home server, and that the server should route the connection to the correct home server itself.

The gaim-meanwhile plugin by default will actually attempt to open a connection to the home server if it is instructed to. If the plugin cannot reach the home server, then it will force the login. In some cases, the act of attempting to open a connection to that other server may take quite some time before failing. If a user is constantly being redirected to a home server they know they can never reach, and would like to completely skip attempting to redirect to it, they can enable the "Force Login" option.

"Force Login" can be enabled from the preferences dialog. It is disabled by default.

What does the "Hide Client Identity" option do?

When a Sametime session begins, a 16bit value is sent from the client to the server indicating what kind of client it is. Some servers are set up by default to only permit clients using the "official" values to connect. If you're receiving an error stating that you are "Not authorized" when you attempt to connect, try enabling this option. Doing so will cause the client to tell the server that it is an official client, which will almost always allow it to fully connect.

If you are a Sametime administrator, and would like to know how to change the settings for client ID filtering, see this IBM Technote on the subject.

A list of some known client ID values can be found in the wiki.

I seem to be missing some conversation logs...

There was a release of the gaim-meanwhile plugin that changed the way that Meanwhile accounts were named by appending ":server.host.name" to the login ID. Since the default loggers in Gaim store log files under ~/.gaim/logs/meanwhile/[account]/ all the logs for that release ended up in a different place.

Version 1.2.0 of the gaim-meanwhile plugin was the only release that did this. Version 1.2.1 and later all switched back to naming accounts by the login ID alone.

You can safely copy the contents of the badly-named account directory to the correctly named account directly. This will add all the conversation logs from the 1.2.0 release to where other releases can find them.

Why don't you support ${FEATURE}?

It's not entirely a matter of not supporting, it's more a matter of not yet supporting. Please look through the RFE Tracker for features that the project intends to eventually provide. If you have something you'd like to add to that list, go ahead and do so.

I'm using SUSE and installed from RPM. Why isn't it working?

First, ensure you've installed both the meanwhile library, and the gaim-meanwhile plugin.

SUSE's Gaim installation looks for plugins in /opt/gnome/lib/gaim, and the gaim-meanwhile RPM installs to /usr/lib/gaim. So all you need to do to get things working is:

su -c "ln -s /usr/lib/gaim/libmwgaim.so /opt/gnome/lib/gaim/"

Contributions

How can I help?

Be supportive! The developer may be very sad, and your happy words could turn his day right around!

In order of precedence, the following are all super helpful: protocol insight; patches and bug fixes; bug reports; happy thoughts; donations of cold, hard cash

How can I help with the protocol research?

The best ways are through libpcap packet dumps, and written extrapolation on network antics. It may be helpful to have used the Lotus libraries before, but that's not necessary. If you notice that an unsupported feature seems to generate network traffic whenever you use it, capture those packets and explain exactly what you were doing to produce them. We'll get this thing figured out yet!

tcpdump -i eth0 -w gaim-meanwhile.capture -s 0 tcp port 1533

In the most recent release of the Meanwhile library (in the -doc package) there are some code samples. One of these samples is for a single-connection, logging, decrypting Sametime proxy (called logging-proxy.c) which can be used as an alternative to capturing network packets.

Are you accepting patches?

Maybe.

As with any project, there are apparently arbitrary code factors to be taken into account when submitting code. Look for the HACKING file in your source tree. If there isn't one, wait. I'll get to it eventually.

Added functionality should not step out of the scope of the rest of the file. Services should never co-mingle or require one-another. Don't write code that's deployment specific. And check your parameters on public interface functions.

If you're working for Lotus or IBM, it's very doubtful that I'll be able to safely incorporate any changes or fixes. You may be able to safely communicate the idea/fix, but please check with your management first.

Patch Tracker

What's the method for reporting bugs?

First, ensure that no existing bug report for the same item exists before creating a new report. If one does exist, read through the commentary. If you feel you still have something important to add, then continue on.

Next, indicate with specificity the nature, demeanor, astrological sign, molecular weight, and specific gravity of the bug.

Finally, re-read the report. Check all fields. Is this enough information to actually figure out what you're talking about? If-- and only if-- you are satisfied that adequate information is provided, then submit/update the bug.

These are all parts of the bug reporting process. Failing these steps yet still submitting an item into the tracker is not reporting a bug, it's just senseless noise.

Bug Tracker

How do I keep the developer happy?

A happy developer wants to solve your problems. He wants to help you out, and will take extra time just for you. An unhappy developer will instruct you to put sharp things into hurtful places on your body, and will then stomp away. In order for a project to continue at a good pace, it's important to keep the developer(s) happy.

For the most part, this just means Be Polite. Do not make demands. Don't act threatening or try to wrest control of the project away.

Why are you taking peoples' money?

Because I am broke. Please note that I immediately hand over 50% to the EFF. The rest will probably buy me toys, or manga, or something.

If handing over cash isn't your bag, but you still want to provide a material reward, there's always my del.icio.us wishlist!

Thanks for visiting, hope you found something useful.

Site content © Christopher (siege) O'Brien, 2005. Site and project are neither endorsed by nor affiliated with IBM or Lotus. Lotus and Sametime are trademarks of Lotus Development Corportation and/or IBM Corporation.