Sunday, December 9, 2007

Public Service Use: Auditing

I've put out a couple feelers to get an explanation for the full intention of the PublicService annotation. In the mean time, I've been doing a little digging of my own. There are two places that the intentions for this annotation may show up: Explicitly in code and implicitly in policy.

Explicitly the annotation is being used to assist services such as the Audit Service.



The audit component implementation relies on public service identifier interface to find public service methods. The implementation for the Public Service Identifier checks for the annotation to make its identifications.

I'll update this post with more explicit uses as they show up.

Will there be any implied policy in the Alfresco SDLC (software development lifecycle?) I don't know -- we'll see what Alfresco has to say about that; this is a good question for Paul Holmes-Higgin or David Caruana.

Personally I find the notion of a public interface much more interesting if it means I can count on it in some fashion because being marked as public sets parameters on the interface in the software development lifecycle. I am much more interested what this notion of public service could mean in terms of the SDLC.

As a customer dependent on a non standards based (although open) API, I need to know what I can count on, what to expect; I want predictability and stability.

Sunday, December 2, 2007

Public Services

If you are looking for an architectural representation of Alfresco, the best wiki link I know of is here. This documentation does a good job of putting Alfresco in context with the application server, client applications and breaking down the high level components.

Two of the most important pieces of documentation we need to maintain is A: A diagram and a strong description of what the current architecture and B: A well described road map of where we are going and how we plan to get there.

I try to do my best to keep up with how the architecture is evolving. The way I do it is by downloading the HEAD of the SVN source base, looking at the changes as they come down and comparing them to my current understanding. If there is an unknown or a mismatch, I head for documentation.

Recently we have seen a new addition in the source base (many actually) but there are few that caught my eye and one that I want to investigate immediately: an attribute placed on service classes called @publicservice. What a public service is isn't really clear to me yet. I've thrown together a diagram that kind of illustrates how I break out the architectural structure of Alfresco in my mind and how I am imagining public services -- what they really are remains to be seen. I suspect the diagram has some errors in it. Also with respect to the public services I see some services that I would expect to be public but that are not marked public. For example, the Tenant Service -- a new service that allows the repository to host multiple clients simultaneously and independently. This could be A: because I am wrong in what I suspect a public service is or B: because the concept isn't yet being applied by the entire team yet. C: Other :)



From an architectural perspective the notion of a "public service" could be very important to me. I've looked at many open source frameworks and often wondered why there was no distinction between public and internal code. How can you exist without this distinction? How can you possibly plan to refactor your code without putting customers at great risk? From my perspective a public layer gives the community a contract that says "It's safe to develop against this -- the life-cycle, the maturity, deprecation and ultimately removal of this interface is well known and you can plan against it." This creates a safety net for the community and a means or a protected space for refactoring for the engineers and architects of the project. If you the consumer have violated this public contract and tapped something below it -- it's at your own peril.

The documentation for "public service" doesn't yet exist from what I can tell and the java doc is somewhat uninformative in that it says "Specifically indicate that an interface defines a public service." -- a bit like defining a word by using the word. What does it mean to be a public service? I am not sure yet -- but I was thrilled to find it there and it has been fun to speculate on what the Alfresco team is intending for it. I plan to get to the bottom of the following questions:
  • What is the definition of a public service -- can we get it in the java doc?
  • Can it be counted on -- Is there some sort of contract with the community?
  • If so is there a some sort of documented life-cycle?
I'll be back with answers once I get them! If you have the answers post them in the wiki and link it here!

Exciting stuff.

Saturday, December 1, 2007

Freedom of the Press and Enterprise Content Management are IMPORTANT

Freedom of the Press matters dearly to humanity
Affordable Enterprise grade content management matters dearly to Freedom of the Press.

I think Alfresco, having gone completely to GPL last year has the opportunity to play a huge role in making the world a better place to live in by enabling the Freedom and ability to publish.

Related:

Sasa Vucinic invests in free press

and

Peter Gabriel fights injustice with video

Friday, November 30, 2007

Tired old vision of ECM?

Seth Gottlieb of Enter Content Here posted this blog on Alfresco, its new Facebook integration capability and what that demonstrates about Alfresco and it’s vision for ECM. Alfresco is integrating deeply with Facebook for social networking capabilities which from my perspective is consistent with their strategy of “oem”ing capabilities from the open source and open standards community that solve contextual problems and are best developed by engineers who are focused directly on that problem, for example, JBPM business process engine, MediaWiki engine integration, javascript engine integration etc

Seth remarks:

“Alfresco's strategy is to integrate with best of breed applications. You look at their website and they use MediaWiki for their wiki, WordPress for blogs, and Baynote for search. All the open standards and APIs give you great tools to do these integrations. I used to think of this as Alfresco talking the ECM talk but not walking the walk. Now I get that they see the old ECM vision as being as outdated as I do.”

Alfresco's implementation is based on more than a dozen complementary open source products. One of the attractive aspects of Alfresco as a company in my view has always been its discipline when it comes to focusing on core capabilities rather than getting bogged down creating proprietary implementations of contextual capabilities. The key to this strategy is making it happen in such a way that the architecture is consistent and the platform feels and acts like a single product. That is to say the functionality and APIs feel natural and related rather than bolted on. Following this strategy enables Alfresco to focus its innovation and engineering mindshare and energy on what is core to Alfresco: repository and ECM vision.

Early on this month at the first Alfresco community summit(s) (held in NYC and Paris, presentations here) we got our first taste of what Alfresco is focusing on as "core" both in terms of repository and in terms of its vision for enterprise grade content management.

On the repository front Alfresco is looking to continue improve on its enterprise capabilities:

  • Scalable, fast, clusterable
  • Federated view of repositories
  • Web caching and clustering
  • Multi-tenant hosting
  • High availability
  • Linear performance regardless of size
  • Implementation of enterprise standards and infrastructure (BPM etc)

  • Plug-in architecture

Also worth mentioning is the intention to consolidate the repository technologies that currently exist in the product. Alfresco DM (Document Management) and WCM (Web Content Management) are built on two different repository approaches. The plan is to define the superset of these two functionalities then harmonize and eventually homogenize the platform.

Alfresco brings a fresh perspective on the vision for Enterprise Content Management. Many ECM providers are focused on are focused only on the traditional ECM feature set: Collaboration, PBM, Portal, BI, Search. However, as Seth pointed out, Alfresco feels the future of ECM is in Enterprise Social Computing enabled by an open stack, open standards, enterprise grade high performance, and integration both inside and outside the firewall. What is Enterprise Social Computing and how is that different? The technology isn't all that different but mindset is entirely different. Where the technology does differ, it is in the fact that it is often "open", either the code is available or it is based on standards. The product's technical feature set is different in that in addition to the traditional ECM feature set, it includes capabilities for extending beyond it's own application space and beyond the firewall. However, the real change is in the frame of mind. It's a new focus on distribution, community, and collaboration over control. The power of transparency is evident in both the code and and this new vision of what ECM; what means, how we are supposed to interact with our content and with each other.

Wednesday, November 21, 2007

Welcome!

Welcome Alfresca readers! I've been participating in the Alfresco community since 2005 and blogging about it on my personal blog on and off since then. The size of the Alfresco community has really exploded in to something huge. Early this month we held two large user groups (one in NYC and the other in Paris), it was evident to me that it was time to start a blog dedicated to discussing Alfresco, the software and the community. I hope you will come back often, read and contribute!

As my first post, and because this is thanksgiving, I want to say thank you to the Alfresco team for putting together such an outstanding product with such a bright future! I also want to give a special thank you to all the engineers and community members who spend an incredible amount of time and energy in the forums helping the community... great job guys!

All, Welcome, have a wonderful holiday and stay tuned for upcoming posts!
-R