Reflections on Jive SBS
I’ve been working with the Jive SBS platform for about 6 months at my current client. SBS stands for “Social Business Software“. At its heart, Jive is a portal product, with an emphasis on supporting social networking. Jive is a licensed product. It can be used effectively out of the box, but licensees have access to the source code (as well as the source of any open-source projects that Jive leverages). Jive provides a robust mechanism for customizing the functionality of the product via plug-ins that developers can create and install.
I have found that the platform has some very useful functionality, as well as some substantial shortcomings. In this posting, I’ll describe some of the pros and cons of the platform (as I see them).
1. Overview of Jive Functionality
Some of the highlights of Jive’s functionality include:
- Jive leverages many familiar technologies to implement the system, including Spring, Struts, Freemarker, CSS, to name just a few.
- The central concept within Jive is a community. The term community connotes an area of the application in which users with similar interest can interact. However, from a technical perspective a community is simply a very abstract container for content. Depending on the content chosen to be delivered within the community, it might actually represent one or more coherent interests. On the other hand, a community could just contain something as simple as an image, and nothing more. It is up to the administrators of the system to adopt a coherent strategy for how they create and used communities.
- Communities are organized in a tree structure. Theoretically, any number of communities may be created within the application.
- Because Jive is a social networking platform, the typical social networking tools play a central role is the system. For any community, you can associate any number of blogs, discussions, forums, and resources (such as documents). The underlying data model is designed to allow quite a bit of flexibility in order to accommodate this functionality.
- As of Jive 4.5 (which I have not used) it looks like Twitter and Facebook integration has been prioritized, which was definitely needed.
- Licensees of Jive can easily customize the application either by implementing custom functionality with the main application itself, or by developing custom plug-ins that provide new functionality to the site (or override existing functionality).
- For the visual presentation of most content within a community, Jive provides the ability to place “widgets” on a community. A widget can encompass any desired functionality. Jive provides many widgets out of the box, such as widgets to view the most recent blog posts for the community, or general-purpose widgets to hold any HTML desired. The system developers can easily create new widgets for use on the site, in the form of plug-ins.
- Styling of the view of a community is accomplished via “themes”. Themes consist of customized versions of the Freemarker templates and CSS used while rendering the view of a community. Communities can inherit their theme via a variety of mechanisms, including explicit assignment of a theme to a community, mapping community to theme by URL pattern, or inheritance of a global theme for the application.
- Jive leverages a distributed caching solution to improve performance and limit the number of database hits. Until version 4.5, Coherence was used for distributed caching. As of version 4.5, Jive switched to a customized flavor of project Voldemort. Cache configuration is fully configurable, although caching works fine right out of the gate.
- Jive provides a robust configuration framework that allows system configuration to be easily modified at run time. Global system properties may be defined or adjusted, properties specific to particular communities may be leveraged, and users may have a set of properties to provide useful meta-data.
- Jive provides an administration console that can be used to view and administer many aspects of the system. This includes administering communities, system properties, cache properties, themes, users, email, security, user administration, auditing, indexing, and much more. In my opinion, this is what really could make Jive worth the investment.
- Jive provides a very good set of developer tutorials to introduce new developers new to the system. These include the basics of developing plug-ins for the system, using Jive’s web services, basic system configuration, and deployment. These tutorials are excellent for getting started, and enable a developer to create very basic plug-ins.
- In my opinion, one of the biggest strengths of the system is its configurability. Jive is easily configurable from top to bottom. Many system and run time parameters can be configured quickly via a start-up configuration file. This file can be used to specify database properties, caching properties, what mode to start up in (e.g., start up in debug mode), and a number of other system properties. There are also alternative ways to specify system and VM properties. Jive provides a global application property construct that can be easily leveraged to allow for environment-specific properties and externalization of properties. Any desired application properties can be created or altered dynamically at run time via Jive’s administration console. In addition, communities and users have a set of properties that can also be updated dynamically as needed, either via code or via the administration console. These properties can be leveraged to provide per-community and per-user customization of the site. Despite this flexibility, there is some downside to this configuration system, to be described in section 3 below.
- When running in a clustered mode, Jive (up until version 4.5) leverages Coherence to provide distributed caching of many application objects. The configuration of the caches (sizes, expirations) is quite easy. In fact, there are multiple ways to configure the caches both statically or dynamically. Cache attributes can be specified in a file that is part of the deployment, in the Jive start-up file, or dynamically via the administration console. The caching portion of the administration console is pretty slick. For every cache, you can view the cache utilization statistics (hits/misses/number of current objects), effectiveness, and current size. Any caches that appear to be poorly utilized (e.g., low effectiveness, large percentage of the size in use) are highlighted, so the administrator can easily identify which caches should be adjusted for optimal performance.
- The ability to provide custom themes and change themes on the fly is pretty nice. There are standard themes, and development teams can implement any custom themes that they desire. A theme can include all aspects of the view, including Freemarker templates, resources, style sheets, and so on. Alternatively, a theme could leverage one of Jive’s base themes, and simply override a small aspect of it. Installing new themes (once they are developed) is as easy as dropping the theme content/resources to a specific location on the application server. Via Jive’s admin console, you can modify specific files within a theme without requiring a restart.
- Jive leverages numerous open source products in its architecture, making it fairly accessible for new “Jive developers”. Spring and Struts are central to almost all Jive development. Jive’s central view technology is Freemarker. Besides those, Jive leverages or makes available dozens of other open source technologies, including (among others) Apache projects such as Mina, Lucene, and ActiveMQ.
- Jive provides a web service interface (SOAP and REST) that can be used to access and/or manipulate data within the system. This allows quick integration with external systems, if required. There is a core set of web services available out of the box, and additional services may be implemented as needed.
- Jive’s permissions model is very flexible, and easily administered via the administration console. It is almost always possible to tune permissions for individual users, groups of users, communities, and resources in any desired way from the administration console.
- The biggest shortcoming of Jive is the lack of documentation. Developers are required to do a lot of research on their own to determine how to configure and use the product. I personally believe that Jive’s philosophy on documentation is based on the fact that they present a social networking product. When you join the “Jive community”, the primary method for finding information about how to develop on the platform is to search through the community message boards. It seems that Jive has taken the view that developers will provide most of the detailed documentation about the platform via discussion threads, and therefore they do not need to provide a “bible” detailing the more involved workings of the system. Of course, Jive does provide some basic developer and system configuration guides, but they do not go very in depth, nor do they provide references for where more information can be found. Naturally, this approach does not provide a coherent or definitive corpus of documentation. Discussion threads within the Jive community are often started and never continued past the first message. If you have an issue with the system, you almost always can find a discussion in which somebody else details a similar issue, but often there is no resolution or even additional details to be found within the thread. Jive does have support personnel who address questions and issues in the message boards, but they do not seem to address all of the messages posted.
- On a related note, Jive is a behemoth of an application. Although licensee have access to the source code, it can be very difficult to determine what classes or resources to look at in order to get a better understanding of the system. The lack of documentation certainly does not help this situation.
- As an example, there are many system properties that can be used to control certain aspects of the system (such as who to email when certain events occur, whether to index documents such as Word documents, and so on). There is no central source that lists what all of these properties are, and how to use them. Some licensees have taken upon themselves to document some of these properties on message boards, but even the Jive engineers and support staff seem to admit that there is no comprehensive source of information on this. As a result, developers often have to spend hours searching through source code to determine whether they can adjust/customize functionality via system properties, or whether they will actually have to implement new functionality to override existing Jive functionality.
- In the support model for Jive, if a client has an issue with the system, they open a ticket and a Jive representative will work with the client to resolve the issue. I have seen that some of the Jive representatives are very good, and others are not. If you have been working with Jive long enough to know which representatives you like, you can request specific people to help you (and sometimes be denied).
- On a related note, often the tickets that are opened with Jive involve the most common or crucial issues related to the system. However, the details of the issue and the resolution do not automatically get placed on the general Jive message boards. Therefore, other clients typically do not get access to the same information. If another client encounters the same issue, they often have to go through the same process.
- In all fairness, I should point out one positive of the support model: It is actually rather common that Jive’s engineers get involved in support discussions, so it is possible for members of the Jive community to interact directly with the people who implemented the system.
- Despite the fact that Jive presents what appears to be a plug-in architecture, it is not really a robust plug-in architecture. You can develop and install plug-ins the way you might develop additional libraries for any other application. You have to develop jars and deploy them. Deployment requires a restart, so its not like it is OSGI or anything.
- The view is exclusively Freemarker templates (or straight HTML). It would be nice if other view technologies were supported.
- It does not appear to be possible (at least not easily) to migrate communities and their associated data from one environment to another without completely replacing the database in the target environment. Depending on the complexity of communities and the number of communities, it can take a long time to build out a set of communities. If you are doing this directly in a production environment, it can potentially be a period of days (or at least hours) between when you deploy new functionality or themes and when you actually have the communities built that leverage this new functionality. It would be very helpful if there were some sort of migration tool that allowed communities to be built out in a “production-like” environment and migrate them into production.
- Jive’s packaging can make development difficult. They have included customized versions of a number of OSS libraries, making it very difficult to include newer versions of these projects. I’m sure that much of this is by design, as changing the version of certain libraries may have a wide range of effects on the system. However, this also ties the hands of developers trying to customized Jive’s functionality. As an example (at least up until Jive 4.5), inclusion of Spring 3 libraries seems to break the application. In fact, some of the functionality of Spring 2.5 (such as annotation-based wiring) seems to break the application. Another example is JQuery. JQuery is used heavily in the site, but the libraries supporting modal dialogs were not included in the Jive distribution for some reason.
- Some of the included libraries are simply outdated as well. As an example, much of the Jive authentication model is based on Acegi, despite the fact that Acegi became Spring Security almost three years ago.
As you might infer from the list of pros and cons above, the Jive platform is pretty good from a technology, architecture, and administration perspective, but has significant shortcomings on the support and documentation side. For many customers looking for a social networking platform that will work out of the box with little-to-no customization, this is a good product to look at. On the other hand, if your requirements will dictate that any significant customization will be required (especially in the case that on-going customization will be required), the lack of documentation and sub-par support model can quickly become a nuisance.That being said, with a good group of developers and proper factoring of necessary research time into development schedules, you can certainly work through the lack of documentation.
I must also call attention to how critical it is to adopt solid strategies and processes in terms of the overall organization of a site built on the Jive platform. It is likely that communities and content would be managed by somebody other than the. It is critical for those people to receive training very early on in the following areas:
- How Jive works
- What will and will not work in relation to what the content requirements might be
- How the development team can help customize the site as needed
As a last note, I think it is fairly obvious that if you are not interested in actually using social networking tools, Jive is definitely not for you. If all you want is a platform to provide content in an efficient manner, along with functionality such as user administration, security, and so on, Jive is probably not the best choice. There are many other platforms that would meet those needs effectively, and for less money.
If you would like to see a bit more of Jive, you can of course visit their website (http://www.jivesoftware.com/). To get an idea of what it offers in terms of social networking tools, take a look at the Jive community pages (https://community.jivesoftware.com/index.jspa). To really get a good look, you would need to register.
In a future post, for those people who have worked with Jive or are currently working with it, I will enumerate a number of technical tips and stumbling blocks that I have encountered with Jive.