The often random thoughts of an Eclectic Architect, Enterprise Technologist, Coffee Addict & Social Media Junkie

Archive for June, 2008

The first draft of the Architectural Principles for Enterprise Social Software was posted here. I invited feedback and was fortunate to get some comments from Luis Benitez, an IBM architect who deals with Lotus Connections who also then commented and expanded on these further in his own blog with a post 10 architectural principles for social software. I’m going to carry the conversation one step further and refine them again now.

First, a little bit more background. When we (myself and the team I work with) define architectural principles, one of the good pieces of guidance we use in drafting them, is that each principle must be able to be expressed as a counter argument. Why? Because this is something that guidance is therefore required on, and will generate a conversation with the business and help get to the root requirement. If no conversation is required, then it’s probably not a principle (it’s more likely to be a fact). The proviso I’d put around this is that one organisations “fact” will be another organisations “principle”, so you need to consider your requirements and if these principles here apply. For example, the Principle “Configuration not Customisation” does have a counter in our business where they would consider highly customising an off-the-shelf solution and have typically done so in the past, whereas in your business, it may not ever happen.

Applying this rule, I think that we can further refine two of Luis’ principles into one, because at the moment, while they are sound, they are also (at least for our organisation) “fact”; i.e if Internationalisation was available, no-one would say “don’t do it”, and equally with the UI, no-one would say “lets design a complex UI that requires lots of training”. So with that background, here are my 9 core principles from my original (7) and then Luis post (3 combined down to 2) plus a draft of a new one to bring the total to 10!

All this needs now is a review of a few eyes and I think a re-order perhaps to reflect importance a bit better.

Principle 1: Limit Social Software Data to Basic Security (Username/Password) Only

Rationale: Social software is by it’s very nature social! While user security is important, information requiring complex, 2-Factor security solutions is generally not considered appropriate for how social software will be used. In general, open read access is preferable.

Principle 2: Social Software should use Authoritative Sources for relevant Information.

Rationale: Internally we store a lot of information about users, including their phone numbers, contact details etc., we shouldn’t require them to re-key this and it should be updated automatically.

Principle 3: Simple Ubiquitous Online Access

Rationale: Social Software should be considered an online access solution (ie. limited facility to access the information in an off-line capability), but access should be facilitated from multiple points, not just a browser.

Principle 4: Global Sharing (largest number of users)

Rationale: The value of a trusted network dynamically increases with its size http://en.wikipedia.org/wiki/Metcalfe’s_law

Principle 5: Modular, Highly Integrated Services

Rationale: Services should be designed to maximise simple re-use and allow users to mashup up modules to meet their specific requirements. Common standards support is key to enable this.

Principle 6: Configuration not Customisaton

Rationale: Social Software is rapidly evolving, we should only configure the software, not customise it t allow rapid roll-up to future versions and capabilities as these improve.

Principle 7: Build for Rapid Growth

Rationale: Social Software is difficult to control and pilot, we should be prepared for a rapid uptake and changing usage patterns. Effectively this means build with added headroom above what you might normally size for a production system.

Principle 8: By the People, For the People

Rationale: Social software is designed to be used by the people and for the people, we must be very clear on the aim and purpose of the system and remove barriers to adoption that prevent and hinder people sharing information with each other.  This includes promoting Internationalisation and Ease-Of-Use UI’s which facilitate easy use (no-one ever received training on LinkedIn).  The counter to this is that we have an Enterprise Centric Approach where the information and it’s use is driven and mandated by the Enterprise which is quite different in principle.  This is not saying Enterprise Information has no place, it does (see Principle 2), it just means that the Enterprise is not the end consumer of the information (it may be the benefactor), people are.

Principle 9: No User Content Creation Work-Flow

Rationale: Social software solutions promote the sharing of information and activities, deriving value from the flow of this information through the eco-system. Approval processes hinder the value of this conversation, reducing the incentive to participate in the system. Strong requirements for content-creation work-flow potentially suggest that either social software is the wrong solution for the business, or that the business is not yet culturally aligned with social software.

Principle 10: People not Documents

Rationale: Social Software is about people connecting to people and discovering and carrying on a conversation. It’s not a document centric publishing and storage platform (although it may potentially extend to that if documents aid the conversation).

 
Tuesday, June 10th, 2008

Some of the earliest posts on this blog were about how powerful location aware services could be.  I spoke about Mobile Mashups and SOA, as well as Location Based Services (LBS) and AGPS and finally the value of Location (and how I thought it was relevant, but not quite sure what to do with it).  You’ll notice this is “so long ago” in Internet History (last year) that I refer to Touchstone, now called Particls.

So it’s with great interest that I can see some of the things I was blogging and thinking about beginning to become a reality.  I was a user of Plazes for a while, but ultimately gave it up because to some extent I just didn’t get it and I think having seen BrightKite now, it was missing the fine-grained access I needed to feel comfortable at that time (it may have it now I haven’t re-checked).

BrightKite is a very compelling and interesting service, provides reasonable privacy settings, but also links in to Twitter by default to set either your location or tweet it.  I’m going to see how it evolves, but I can see BrightKite becoming part of my tweeting in the future (especially when I get a new phone in the next couple of months).  It will potentially be my photo-log of where and what I’m doing, auto-feeding this in to Twitter as appropriate, while I’ll use Twitter directly through it’s various other clients for my 140 character tweets on the world and the community.

Another interesting feature of BrightKite is FireEagle. FireEagle sounds like it’s the DataPortability answer to Location Based Services, an open exchange for location information and the fact that a player like Yahoo is making a move in this space suggests we are at the cusp of big things to come.

Dopplr also adds to the picture of location based services, although in this case Dopplr fulfills a “Where am I going” rather than a “Where am I” feature.

I speculated early on, that LBS would potentially be of use for the Enterprise, but I couldn’t quite touch on the use.  The big area I could see is staying in touch with the people who are part of your Enterprise as they move around, with BrightKite and it’s GEORSS feeds, Dopplr and it’s “where am I going to be” and services like FireEagle, I can see that in the next 6 - 12 months, this will start to become a reality.

To paraphrase myself from over twelve months ago:

As Architects, understanding how location works and what location information is needed to tie the system together will be critical steps that can be taken now to ensure early mover advantage when it finally becomes a reality.

We are considering implementing some Social Software so have drafted a series of Architectural Principles to help govern the planning for this. I tweeted on this and was followed up by @IdoNotes
asking if I was willing to share these, so here they are. I’d really welcome any feedback, good bad or in-different, particularly if you have implemented something similar internally.

I’ve removed a lot of the background information here and just shared the key points that are generally relevant (there are a couple of principles I’ve skipped which are just too specific to our circumstances).  There are also other more general architectural principles that we would under-pin these with, for example “Buy Not Build” but these are not included here.

Similar to these, there are some related business principles we’ve proposed for consideration that are not technical in focus, I’ll share these separately.

Principle 1:  Limit Social Software Data to Basic Security (Username/Password) Only

Rationale:  Social software is by it’s very nature social! While user security is important, information requiring complex, 2-Factor security solutions is generally not considered appropriate for how social software will be used.  In general, open read access is preferable.

Principle 2: Social Software should use Authoritative Sources for relevant Information.

Rationale: Internally we store a lot of information about users, including their phone numbers, contact details etc., we shouldn’t require them to re-key this and it should be updated automatically.

Principle 3: Simple Ubiquitous Online Access

Rationale: Social Software should be considered an online access solution (ie.  limited facility to access the information in an off-line capability), but access should be facilitated from multiple points, not just a browser.

Principle 4: Global Sharing (largest number of users)

Rationale: The value of a trusted network dynamically increases with its size http://en.wikipedia.org/wiki/Metcalfe’s_law

Principle 5: Modular, Highly Integrated Services

Rationale: Services should be designed to maximise simple re-use and allow users to mashup up modules to meet their specific requirements.  Common standards support is key to enable this.

Principle 6: Configuration not Customisaton

Rationale: Social Software is rapidly evolving, we should only configure the software, not customise it t allow rapid roll-up to future versions and capabilities as these improve.

Principle 7: Build for Rapid Growth

Rationale: Social Software is difficult to control and pilot, we should be prepared for a rapid uptake and changing usage patterns. Effectively this means build with added headroom above what you might normally size for a production system.

 
Sunday, June 1st, 2008

Two ideas have converged.  Elias Bizannes wrote about the Value Chain for Information which I have been thinking about, then I saw Sacha Chua’s Web2.0 @ Work which was done with a Nintendo DS and got really excited about wanting to make something similar. The main difference is I wanted to try make mine as an actual movie, rather than a series of slides.

I give you the Value Chain for Information - The Movie!

This is my first attempt at using a Nintendo DS to create a presentation and I’ve learnt a few things on the way.  I’d do it differently next time (For example, the each stroke ends up as one frame so I’d use more strokes!  On the Nintendo there are lovely sweeping wipes of each screen, but you don’t see these as they are a single frame in the movie), I’d also probably use some more colours! But I’m content enough for a first attempt. Sacha has a great guide here that tells you how to do it, I also used Wired’s more detailed Wiki as well.

I hope you enjoy it and that it adds some value along the way to Elias idea which is growing on me as I consider it further.