Is Twitter poised to become a public enterprise message bus enabling a new range of transactional applications?  You can already see this happening with new on-line services/applications which (following your registration) monitor your twitter feed for specific/tagged data which is captured for use within the application.

For example http://www.fuelfrog.com/ will collect your auto fuel and mileage information – which you publish with your mobile twitter client when you are filling up.

The uses could become far reaching.   Some examples might include

  • Manage expenses real-time using twitter
  • Manage contacts & calendar events
  • New (enhanced) “devices” which publish transactional information for your use by applications

The simplicity, universal access and proven scale of Twitter are part of what make this possible.  It has a rich set of mobile clients making it very practical to participate in real-time from anywhere.   Twitter is continuing to support significant growth with fewer down times.  And Twitter provides a simple yet powerful public API allowing applications to connect.

One big challenge is privacy.   Currently Twitter status updates are wide open (unless you password protect) and expect you don’t want this type of data public, nor would your followers want to be distracted by it.  Maybe a feature allowing a category to be associated with updates (default would be status) and then clients could leverage this in queries to filter data messages.   Or maybe the direct messages could be leveraged – however this would be limiting as it prevents multiple applications from receiving an update.

Could this be in the future of Twitter?   I think the possibilities would be exciting especially with the rapid explosion of mobile devices with application stores and on-line services.

Advertisements

There has got to be a better way!  Having spent years building large business applications, it seems the time has come for the traditional monolithic application model to become a thing of the past … and be replaced by a new concept I have labeled a “mash-app” much like a mash-up but different.   First I’ll clarify what I mean by enterprise business applications and then consider challenges this creates along with how this can be overcome with new architectures – heavily influenced by SOA and web2.0.  Of course this requires some change in mindset as to what constitutes an “application.”

Enterprise Applications:  They’re broken

The term Enterprise Application takes on various meanings, but for the sake of this discussion it means an application used to perform mission critical business functions across the organizations of a business.  While the specific functions will vary from business to business, they generally include requirements around high availability, scalability, flexible and strong security, robustness of features, ability to model a customer’s business processes and ability to integrate with other technologies already part of the business process.

As these applications have grown and become more complex, they have effectively started to bulge and crack at the seams.  Years of growth, acquisitions and technology advances have pushed this type of software to point where they are broken.  This software often falls victim to:

  • Lengthy time to market for new innovations – software that is behind the times.
  • Contamination of features when new features added – over time even best intentions are hard to overcome as product becomes unwieldy.
  • Costly upgrade processes which may include re-integrations – more features, more customizations, more integrations as these large installations create upgrade headaches.
  • Unusable interfaces – often evolved over years of adding new features on top of old, using features in ways not originally intended, etc.

Deb Lavoy shares her thoughts on this also in a blog post titled enterprise software has 5 years to live.  Many of these challenges are rooted in the traditional desire to produce a single “application” including a single interface, single base of technology, single database, single installation – all ideal, but at what cost ($$ and time).

Mash-App: An Enterprise Application architecture of the future

A mash-app is a concept where the traditional application, both UI and services, are sufficiently componentized such that the final application is effectively a mash-up of the components while still delivered as a packaged solution.  These components would be integrated to meet the business and functional needs with integration via services (via web services) and user-interface components (via URLs, json, web services).

One challenge here is a possible change in how we envision an “application.”   Unfortunately we have grown accustomed to the Microsoft Office style of integration for a suite – one where everything looks almost identical and is so tightly integrated you might not know which technology is driving what features.   While this might be the holy grail of suite integrations – it introduces a number of challenges which limit a software businesses ability to innovate.

Leveraging this new Mash-App architecture, the larger application will now be decomposed into more distinct service groups allowing for:

  • True agile delivery of updates to those components without requiring complete reinstall, configuration, and re-integration of the complete application.
  • Diminished risk of cross-contamination when adding new features because features are more physically separated.
  • Efficient integration of 3rd party technology which at best share an underlying technology.  This becomes particularly important today when roll-up acquisitions occur frequently to enhance and augment functionality through innovation of start-ups and other vendors.
Mash-App:  simple example

Let’s suppose we have a document management application which leverages “users” for everything from access control to auditing and workflow.  The application generally provides a means for managing these users (even if fed from external source such as LDAP) to maintain application data.

Leveraging this new model, we will define the “User Services” as a component – both business services and user-interface services.   These services include the interfaces to define, manage, search-for, and display details of user information and would now effectively be a module.  When a different component of the application needs to interact with user services, i.e. search for a user, it would “call” the search-for user API (maybe via URL) which would present the end-user with a search screen and the ability to select 1..N users.   Upon completion the component would return control back to the caller providing the key identifying information.

With this approach, the vendor could easily decide to enhance the user services and deliver an update of this component with limited/managed risk to other parts of the application.  I believe this approach could be extended to the other functional groups within the application.

Mash-App:  so what do you think

Imagine entire applications built using this architecture?

While it might take time to achieve fully (unless building from scratch) – a movement in this direction will allow for a more agile approach to software development and delivery.   New acquisitions will deliver value to customer more quickly.  And even delivering “software+services” through mash-ups is more achievable as the core application is designed in a similar architecture.

Finally had one of those “ah-ha” moments to appreciate how micro-blogging (Twitter, Yammer, etc) is basically “hall conversation meets the internet!”

In years past much collaboration occurred in the halls at work (or around the coffee machine).   During these ad-hoc discussions folks share what they are working on, maybe something new they have seen, possibly even something personal.   Key was short and often disjoint bits of information, but often valuable to your work.  As you would come and go you would pick up parts, some days more than others and might followup on something you heard.  

And then there was Twitter… and Yammer…

These new technologies and communities provide almost an electronic “coffee machine” around which discussion occurs.  While it took me a short while to appreciate and understand, this is clearly part of the significant change underway in how the internet is used.  And now the field of scope from whom I can have ad-hoc conversations has grown to be global.  This is really exciting – I can see this filling a critical gap in distributed work environments. 

So is there a negative?   Does this promote further distancing in folks from developing good interpersonal skills?   Take a look at this article at mashup http://mashable.com/2009/02/10/mobile-dating-stats

Have you ever felt that navigating the web is like living life around town with blinders on?   I spend a great deal of time navigating the net doing research, reading, and shopping – and even with the exhaustive searching performed I continue to get “surprised” with new sites and information which I have never seen before.  It can feel like you are working with very narrow tunnel vision.

This got me thinking how in the physical world an important way we learn is simply through awareness of our surroundings.   We go to the video store and see a new restaurant opened in the plaza, we are driving to work and see a new electronics store from the highway, you go to lunch and see/smell something new a friend is eating…   We pick up a lot about secondary topics while pursuing a possibly unrelated primary topic.  

How can browsers or tools evolve to take on this behavior pattern?

Browsers evolved originally as tools for delivering page oriented information – think newspapers, magazines, etc – and have now become capable of supporting dynamic information and controls thereby supporting rich applications.  In the physical world these activities (reading a news paper, using an application) do not replace the physical.   But as the internet grows, one can spend more and more time on it and less time out and about in the physical world.   Folks do their work, shopping, reading, books, ordering food, etc – all from the internet and often from home.  

Should browsers provide more of a “3rd Dimension” of information by providing knowledge of our “surroundings” based on the browsers knowledge of the user and what the user is doing?

We are starting to see initial concepts here with tools such as tags, blogs, rating, twitter – but these rely on others.   Instead it would be great if my window on the web were able to tell me about an information source which was new to me.