Previously IBM had two online presentation solutions and neither was ideal.
The first software offering, IBM SmartCloud Meetings, also known as Lotus Live, is the most popular presentation software within IBM. This offering is the direct result of IBM’s 2007 acquisition of WebDialogs (http://www-03.ibm.com/press/us/en/pressrelease/22210.wss). This platform supports delivering presentations to internal and external audiences with viewers using Windows, Mac OS X, and Linux. Unfortunately, the ability to present was exclusive to Windows. Support for presenting from Mac OS X was recently added. For a Linux user that needs to present using WebDialogs, your only choice is to use a Windows virtual machine.
The second software offering, IBM SameTime Meetings, is a plug-in running within stand-alone IBM SameTime or Lotus Notes with integrated SameTime. This solution is also known as SameTime Instant Meetings because while chatting with a colleague in SameTime a presentation can be initiated with a single button click. This convenience also results in the first deficiency–all meeting participants must have an IBM SameTime account and have access to the IBM intranet. A key strength is the plug-in’s support for Windows, Mac OS X, and Linux–so all IBM users can take advantage of this solution. The most notable disadvantage is that presentations cannot be made to external participants (non-IBMers).
IBM’s solution was to grow the capabilities of the SameTime Meetings infrastructure by adding support for participants without an IBM IIP (username/password) that are not on the IBM intranet and by eliminating the requirement to install any IBM software (Notes/SameTime) on the presenter or attendee systems. The new product’s name is still IBM SmartCloud Meetings, but internal documentation has chosen to add the suffix ‘(New)’ to distinguish it from documentation relevant to the old solution. The new SmartCloud Meetings bears very little (if any) resemblance to the prior product of the same name. The prior product was clearly thinly veiled cover placed over the existing WebDialogs platform. The new solution has the same layout as the SameTime plug-in, but instead of being implemented in Java/Eclipse it is implemented using Dojo with a Java applet running on the presenter’s system to grab the screen/application. The URL for the new service is: https://stmeetings.na.collabserv.com
While Linux is supported by IBM SmartCloud Meetings (New), the current product has limited support for anything other than RHEL6 / IBM OpenClient when presenting. Here is a brief overview of the steps that occur when a user attempts to share that I have been able to infer from my debugging.
- After clicking on the button to begin sharing your screen, a first Java applet, vmverifier.jar, is downloaded and run to determine if your machine is compatible with the application. From looking at the code in this application, the checks are rather minimal and mostly relate to blacklisting older virtual machines.
- If your machine passes the verification test, a second applet, appshareapplet.jar, is downloaded and run. This applet creates the folder ~/SameTimeMeetings/NativeLibraries and downloads two files to this location. One of the files is an executable and for me had the name “asnat852_20130827.2051″. The second file is a library that has the same name as the executable with the prefix “lib”. In my case, the name was “libasnat852_….”. Here are my thoughts on the name’s constituents. The “as” at the start stands for “application sharing”. I am not sure about the “nat” part, but perhaps it really does have to do with going through a NAT firewall. (Somewhat odd to put that in a name. Why not throw in TCP or IPv4 in there for good measure while at it? ) The “852″ almost certainly refers to the version of SameTime Meetings this code is from (8.5.2). And the “20130827.2051″ is a timestamp, likely created when the build started. The format is YYYYMMDD.HHMM.
- For the current system to work on Linux, a client-side application is used to grab the screen or an application’s video buffer and send it upstream. This native application has over 50 library dependencies. If any of these are missing, the application won’t work and won’t present any useful error messages to the user.
For me, the first step in getting to the heart of this problem was to enable the Java console and crank up the log level to 5. To enable the Java console, run the ‘jcontrol’ application, go to the ‘Advanced’ tab, expand ‘Java console’, and select ‘Show console’. After restarting Firefox the Java console now appeared up when I tried to start sharing. This got me to the point where I could see what was going on under-the-hood and to have an exception dialog appear!
Seeing this exception with its clear reference to the file libasnat… requiring a library prompted me to go and run ldd against the library. Not surprisingly, among the 50+ libraries that were listed, the following two entries appeared:
./libasnat852_20130827.2051.so: /usr/lib64/libpng12.so.0: version `PNG12_0' not found (required by ./libasnat852_20130827.2051.so)
My first instinct was to simply make symbolic links from the current versions of these libraries installed on my systems to the versions that were being requested. Unfortunately, when I looked at the contents of the /usr/lib64 folder I found that symbolic links for libjpeg.so.62 and libpng12.so.0 to the current versions were already present. Clearly the problem wasn’t simply a missing older library that could be solved by making a symbolic link to the current version. The references to the missing declaration of ‘LIBJPEG_6.2′ and ‘PNG12_o’ called out by ldd were no joke. I went to an older system running SuSE 11.3 and looked at the png and jpeg libraries present there. The first good news was that the system used the same version of these libraries that I needed to run ‘libasnat…’. The next step was to see what type of dependencies the jpeg and png libraries had. Mercifully, neither had any dependencies that would prevent me from simply copying these older libraries into /usr/lib64 on my newer system and getting things to work.
Note: All thoughts on this blog are my own and should in no way be construed to represent IBM. I am just a programmer and Linux user trying to get things done.