Skip navigation
All Places > Ignite Realtime Blog > Author: DavidSmith

Ignite Realtime Blog

6 Posts authored by: DavidSmith Champion

SparkWeb Open Source

Posted by DavidSmith Champion Apr 22, 2008

Earlier today I exported our svn repository for SparkWeb and committed the intial import to the new open source repository! Instructions for getting and building the source are available. The specified item was not found.. A chat room for discussion of SparkWeb development can be found at I'm looking forward to seeing what the community can do!

XIFF 3 Beta

Posted by DavidSmith Champion Apr 2, 2008

I'm happy to announce that we've just released an initial beta of XIFF 3.0, our open source ActionScript library for building XMPP clients. Continuing along the path set by Sean and the previous developers of XIFF, we've moved to embrace ActionScript 3 and Flex, while adding significant functionality improvements at the same time. Highlights include BOSH support, VCard support, and redesigned APIs. Feedback is strongly requested; It has been quite a while since a XIFF release, and a lot of things have changed, so I will be interested to see how the community feels about the direction we've taken things.


Some parts of this new release are still in a transitional stage. For example, SASL support is only available for BOSH connections at the moment. As more code is generalized between the BOSH and Socket connections, this limitation will go away.

Yesterday I ran across an extremely exciting fact: AOL is now running an XMPP server at that accepts logins from AIM/ICQ accounts and can talk with AIM/ICQ contacts. This means that there's suddenly 53,000,000 more people (according to 2006 numbers from Neilsen/Netratings) that are accessible from XMPP. I've made a brief timeline of important events in XMPP's growth.


1999: Creation of XMPP

2003: Jive Software releases the first version of Jive Messenger

2003: XMPP passes ICQ in number of users

2004: IETF approves XMPP as an official standard

2004: Google Talk released, dramatically increasing XMPP's market reach

2005: Apple announces XMPP support in iChat and Mac OS X server

2006: LiveJournal adds XMPP support, creating 14 million XMPP accounts in the process

2008: AOL creates an XMPP-OSCAR bridging server, adding another 50 million or so users accessible via XMPP


As you can see, over the last four years XMPP has gone from a relatively tiny force to a huge player in the IM world. Now all we need is for Microsoft, Yahoo, and QQ to follow suit and most IM users will be able to talk to each other without the hassle of creating accounts on each service and using lots of different programs (or multi-protocol programs) to connect to them.


I'm extremely excited about the possibilities of this, although a little worried about the lack of public acknowledgement from AOL. Hopefully they will continue to move forward with this, and make an announcement in the near future.

SparkWeb: Next Generation

Posted by DavidSmith Champion Oct 31, 2007

One of the new things other than clustering in Openfire Enterprise 3.4 is a new release of SparkWeb. This marks a number of major transitions for it:


Simplified Installation


First, it's now built into Openfire Enterprise. No more downloading a separate plugin, and no configuration required. You'll find it in a new sidebar item in the "enterprise" tab of the admin console.


Moving to Flash

!|src=|styl e=float:right; margin-top:10px; margin-left:5px;!


Second is that it's entirely new code. As we worked on the original SparkWeb, we ran into many limitations of the "ajax" (html + CSS + javascript + xmlhttprequest) platform, including browser compatibility issues, difficulty with localization, and the inability to support any sort of richer collaboration experience like voice or video. As a result, Derek DeMoro wrote a prototype of a web based XMPP client in Flash, using XIFF and Adobe's new Flex API. The new SparkWeb is descended from that, rather than from the previous version.




Work In Progress


There's good and (temporary) bad with this transition. The new code supports vcards and avatars, and is significantly smaller, resulting in quicker page loading. There's also a revamped UI, including contact list filtering much like Spark has. On the other hand, group chat support and secure connections are not quite ready in the new code, and are planned for the next minor Openfire Enterprise release.


If you have any questions or problems, feel free to post them in the Openfire Enterprise Support forum

After this many years, most web developers have become a little numb to how much Microsoft Internet Explorer is holding back the web. We whine about it, we drop by Position Is Everything to find the appropriate hack to use, and we go about our business. Recently, working on SparkWeb has really brought the issue back into focus for me.


Shortly before SparkWeb 1.0 came out, we realized that it wasn't working in Internet Explorer 7... sometimes. There was no discernible pattern to the failures; some were on XP, some on Vista, some were one sub-version of 7, some were another. After a great deal of painstaking debugging I eventually tracked down the problem. XML support (and by extension the XMLHTTPRequest feature used in "ajax") in Internet Explorer is provided by a system library, rather than built directly into the application. This wouldn't be too bad, except different versions are installed on different systems. Currently MSXML3 and 6 are the best choices. 3 is incredibly widely deployed, and 6 is the latest and greatest. We chose 6... IE7 chose 3. Boom.



That issue is fixed now, but it reminded me again of just what we're missing. Here's a brief list of stuff that works in the big 3 (Mozilla, Safari, Opera), but not in IE6, and in many cases not in IE7:

  • position: fixed
    Useful for making navigation bars and such always available so users don't have to scroll back up to them. Also allows for things like Eric Meyer's beautiful ComplexSpiral design. This is fixed in IE7.

  • border-radius
    Part of the in-progress CSS3 specification, but still pretty well supported these days. It allows for painless rounded corners, without the crazy hacks we use now.

    I'm slightly skeptical of the usefulness of this one, but it's a pretty big deal to some people. IE will not accept XHTML unless it's told that it's HTML instead of XML. This leads to pages that have subtle hard-to-find bugs when switched over to real XML parsing.

  • XMLHTTPRequest
    This one "works" in IE6, but only through ActiveX. If the user has ActiveX disabled (say, for security reasons, as Microsoft did in IE7) then it will stop working. This is fixed in IE7.

  • CSS child selectors
    Generally useful in all sorts of layouts

  • Translucent PNG images
    Again, hugely useful. There's a hack to allow them in IE6, but it can break a bunch of other things... as we found out when trying to use it in SparkWeb. Even in IE7 there are a number of nasty bugs involving this functionality.

  • :hover on anything other than links
    Useful for popup menus, button hover effects, tooltips, and any number of other things. This is fixed in IE7.

  • Modifying stylesheets via javascript
    Basically every major browser gets this one wrong in some ways. I've found it's best to just forget that the possibility exists and use inline styles instead.

  • SVG and canvas
    These are the shiny new ways of making complex images and animations on the web. Canvas is a simple javascript-driven system for drawing, and SVG is a complex vector image format based on XML that also supports animation and a number of other things.

This is just a selection of major issues, there are many many smaller issues, many issues that have slipped my mind, and many places where IE isn't the only browser messing up. Microsoft claims that they will be making a big push to catch up on compliance with modern web standards in Internet Explorer 8. Even if that's true though, the legacy of stagnation from five years of IE6 will be difficult and time consuming to overcome.


However, there is some hope; People like Dean Edwards, Jack Slocum, the Prototype team, and many others are building libraries to work around browser issues and provide a common platform to build web applications on. Also, the newly re-formed HTML working group is pushing forward towards HTML5 with some wonderful people involved, including key participants from Apple, Google, Opera, Microsoft, and Mozilla. Unlike previous web standards efforts, the HTML process is open to anyone who's interested. Ian Hickson has instructions on joining the process here


With all the Apple news recently, as well as several new employees using Macs (including myself), I thought I'd write up a little update on what Jive is doing to improve how our products run on the Mac. There are a couple of areas where we're making big strides forward:



Installation Experience


Most Mac applications are distributed in disk image (.dmg) files, and some are installed from the .dmg via an installer package (.pkg) file. Disk images alone are used for standalone apps that can be installed by dropping them where you want them, while installer packages are used for more complex apps that install lots of support files.


The Spark dmg file now includes some spiffy background art based on the Spark logo, as well as a symlink to the applications folder so installing really is just drag -> drop; no need to dig around in the filesystem finding the applications folder first.


Wildfire is a bit more complex. The new Wildfire.pkg file creates an unprivileged user called Wildfire, so that the application can run in a "sandbox" much as apache and other system services do. It also installs the next two improvements on the list...


Launchd and Wildfire


Launchd is Apple's new replacement for init, rc, inetd, xinetd, atd, crond, watchdogd, and SystemStarter. As of Mac OS X 10.4 it's the recommended way for services like Wildfire to run, so I have created a launch daemon file for Wildfire. This allows for all sorts of customization for the savvy system administrator, including easily imposing resource limits, automating startup and shutdown, and other handy things previously spread across the system in various configuration files. For people who don't want to spend their time tweaking XML files, there's a new feature of Wildfire that makes controlling this even easier...


Wildfire System Preference Pane


The Wildfire prefpane provides a simple interface for starting and stopping Wildfire, configuring whether Wildfire will start when the system starts up, and accessing the administration page.


Spark Fixes


Tuesday morning we had a meeting where we brainstormed a whole bunch of fixes and improvements to Spark, ranging from renaming preferences in the Mac version (Toast? We use Growl in these parts!), to fixing keyboard shortcuts (command-w is on the list), to making sure that windows gain focus correctly when new messages are added. This sort of polishing should make Spark much nicer to use, even without some of the larger things that we're looking at, such as Address Book integration.


Filter Blog

By date: By tag: