Jivespace Community Blog

2 Posts tagged with the differences tag

For those of you who are fans of Spring, or those who are just plain curious, I'd like to briefly go over the parts of the framework we used in the latest release of Clearspace.  One of our goals for the new release was to take advantage of the power the framework offered where it made sense to us, and in the end it turned out Spring and Clearspace are a good fit for eachother.

 

Core Context and Struts: The JiveContext now extends the Spring ApplicationContext.  Everything registered with the context is a Spring bean.  Struts actions and interceptors are autowired using these bean definitions.  Writing Actions just got a whole lot simpler.

 

Data Access: We changed a lot of our code to use Spring's JdbcTemplate and SimpleJdbcTemplate.  This has the advantage of making our DAO code much simpler and less error prone, as well as quicker to write.  Some classes ended up half the size after this effort.  We used annotation-based transactions, wired in using Spring's AspectJ support via the AnnotationTransactionAspect.  This allowed us to quickly add transactional coverage of far more DAO methods than before, and more easily make methods transactional in future development.  Finally we used Spring's LDAPTemplate in several places to simplify directory access code.

 

Security: We're using Acegi (Spring Security) for authentication.  This allows the possibility to authenticate against more than one data store.  For example, you could have one account that authenticates against LDAP, and a separate machine account that authenticates against a database.  It also provides a well documented, peer-reviewed framework to use as a platform for developing custom authentication solutions.  We are investigating using Acegi more fully for authorization in future releases.

 

Tasks: We worked hard to externalize timed tasks so that they each have bean definitions.  This gives greater insight into what is being fired, why, and where.  It also makes it much easier to control when a task is firing, or turn it off completely for testing purposes.

 

Plugins: We allow plugins to add their own Spring bean definitions to the context, so that Plugin actions and interceptors can be autowired as expected.  This is done via the plugin's "spring.xml" file.

 

Web Services and AJAX: Apache CXF is now used to expose SOAP and REST style web services.  It relies heavily on Spring for its configuration.  We are also using Spring for DWR configuration, via the Spring 2.0 DWR namespace.

 

Customizations: As part of the new release we also parse any XML file in the <jive home>/etc directory with the expectation that it's a Spring configuration file.  Developers can use this to extend or override bean definitions in the core application context.

 

In the end, we found Spring very helpful to simplifying our codebase and providing a point of cohesion.  We look forward to using it even more fully as we continue to develop Clearspace, and as the Spring framework itself evolves.

0 Comments Permalink

Thanks to some great feedback from community members I wanted to clearly articulate the current differences between Clearspace and Clearspace X as well as provide sense of how the products will continue to diverge over time. You can also check out a video on the same topic.

 

When Clearspace was under development we realized that trying to force a single product into two very different use cases was a bad idea. Since Clearspace and Clearspace X serve different purposes, and have a different set of users and buying criteria, we decided to give them each their own focus. Clearspace is focused on giving people inside organizations a place to "get work done" that breaks down silos between groups, gives everyone a voice and recognition, and keeps people in the loop. Clearspace X, on the other hand, focuses on providing a full-featured online community solution where the needs are around customers getting support, providing feedback, sharing ideas and connecting with other users. This distinction allows our development teams to focus on solving specific business problems instead of worrying about how one product must "boil the ocean" by solving everyone's needs.

 

Current Differences

The current feature differences stem from different configuration defaults and exposed functionality. Over time the products will diverge more significantly as new features are created for each use case. However, at an architectural level the differences between the products are basically non-existent, and we don't expect the two products to diverge architecturally in any meaningful way.

 

Name

Description

Profile Fields

The two products contain different default profile fields: Clearspace contains 'location', 'title', 'phone number', 'biography' and 'expertise'. Clearspace X contains 'location', 'occupation', 'biography', 'expertise', and 'homepage'.

Create Blog Permission

Registered users are given permission by default to create a blog in Clearspace but are not allowed to create a blog unless given permission in Clearspace X.

Guest Access

Anonymous / guest users are allowed to view content in Clearspace X by default, but in Clearspace that permission is off which forces users to first login before viewing any content.

Private Messages

Private messages are enabled by default in Clearspace X and disabled by default in Clearspace.

Blog Trackbacks

Blog trackbacks are off by default in Clearspace but on by default in Clearspace X.

Blog Pings

Blog pinging is enabled by default in Clearspace X and disabled by default in Clearspace. Blog pinging is a process that happens behind the scenes in most blog software. When enabled, your instance will send an XML-RPC ping to weblogs.com, Google blog search and Technorati, but only if blog pinging is enabled when a new blog post is created / published on your system.

Email Visibility

Email addresses on user profiles are hidden by default in Clearspace X and are visible by default in Clearspace.

Language

Clearspace X uses the word 'Community' when describing the containers for content while Clearspace uses the word 'Space'.

Design

Clearspace X uses a different design than Clearspace. The difference is controlled by using jive-external.css versus jive-internal.css.

 

More Differences Over Time

Over time there will be certain features or changes that only make sense in one or the other product.

 

Name

Description

Reputation and Recognition

The way that the reputation and recognition system work will change over time as each product gets a more focused version of the system.

Read/Write WebDAV

This type of functionality only makes sense in Clearspace for most customers.

Certain Integrations

Integrations with other systems may only make sense in one use case or the other.

Summary

 

Clearspace and Clearspace X have different purposes and are meant to solve different problems. So it only makes sense that we want the respective development teams to be thinking about those problems as they further refine the product. The current differences are primarily focused on configuration to best fit the problem being solved by each product, but these differences will continue to grow as new features are added that are unique to its intended use case.

7 Comments 0 References Permalink