Latest Posts

Archives [+]

Archive for 'April 2009'

    Posted by Michael Marth APR 30, 2009

    Posted in chemistry and cmis Add comment

    Day 2 of the CMIS plugfest just ended. As I blogged about yesterday we tried to connect as many client implementations with as many server implementations as we can. The results are displayed in the matrix below: "C" means being able to connect, "R" able to read, "W" able to write, and "W+S" write and search.


     

    So, all in all we have tested 31 client/server combinations, most ATOM-based and 4 with SOAP. All tests were based on the spec version 0.6.1. I am quite happy with these results, especially because many servers and clients were updated to the latest spec version (or even implemented from scratch!) during the plug fest. Cedric Huesler has compiled a collection of screenshots of CMIS clients in action (all experimental and subject to changes):

    Also, today the Apache Chemistry project (Apache's CMIS implementation) has been accepted in the ASF's Incubator. Congratulations!

    Posted by Michael Marth APR 29, 2009

    Posted in chemistry and cmis Add comment

    Day 1 of the CMIS plugfest is just getting into the beer-oriented phase. But before I leave I would like to share some basics of what we are up to:

    Today's participants are: Berry van Halderen (Hippo), Cedric Huesler(Day), Dave Caruana (Alfresco), David Nuescheler (Day), Dominique Pfister (Day), Florent Guillaume (Nuxeo), Florian Mueller (OpenText), Jens Huebel (OpenText), Martin Hermes (SAP), Paul Goetz (SAP), Serge Huber (Jahia), Ugo Cei (SourceSense), Volker John (Saperion), and me.

    By now all clients and servers are running on version 0.6(.1) of the CMIS spec. For the Atom binding we have as clients:

    • the Javascript client from the Apache Chemistry project
    • the Java client from the Apache Chemistry project
    • Alfresco
    • SAP
    • Shane Johnson's Flex-based CMIS Explorer
    • the CMIS Explorer portlet from Sourcesense

    Servers with Atom bindings are:

    • Day CRX
    • Nuxeo
    • OpenText
    • Alfresco

    That gives us 28 combinations to have fun with already. On top of that we have SOAP-based clients from OpenText and SAP (and the same list of servers).

    We are checking which client can read from, write to and query which server (and tweaking both ends to make things work). Results tomorrow... :)

    For getting live updates as we progress look for #plugfest on Twitter

    more pictures here

    Posted by Michael Marth APR 28, 2009

    Posted in jcr, link of the day and php Comment 1

    There is an exciting JCR project going on in the PHP world: Christian Stocker of Liip is busy on project Jackalope which aims to make available a Jackrabbit repository from PHP.

    First tweets about the project start appeared only 3 weeks ago so I am surprised that there is already a Getting Started tutorial.

    Make sure to have a look at the file test.php. Nice, isn't it?

    Posted by Bertrand Delacretaz APR 23, 2009

    Posted in contentmodels, cq5 and jcr Comments 5

    In software engineering, modularity often leads to hard choices when it comes to how big or small things should be. In a JCR content repository, the question is how granular should my content be?. A more granular structure contains more information, but too much granularity might slow things down.

    Inside a JCR node, we can create a simple or complex hierachy of content atoms and metadata. But how far should we go? Should we think in terms of files, mini-databases, or simple name-value pairs?

    JCR beginners often have a hard time figuring out the best content models for their problem, so we thought we'd share some of our experience here.

    Starting with this post, we will explain some of the cq5 content structures. Without going into theoretical details - just by describing and explaining those structures.

    Today, we'll have a look at the cq5 tags, used as semi-structured metadata, mostly for content pages. In cq5, tags like stockphotography/animals/birds can be added to content pages. Tags belong to namespaces (stockphotography in our example), and can be arranged hierarchically within their namespace.

    cq5 tags - user view

    Looking at the tags from the cq5 site admin console, we see a simple tree of concepts,grouped in namespaces (Marketing) and categories (Interest). Each tag has a unique TagID, visible in the first column on the right, that will later be used to connect content with those tags.

    Nothing surprising here, except maybe the fact that our tags live in a hierarchical space,as opposed to a flat one. This creates simple namespaces for our tags, allowing several "worlds"of tags to be combined without conflicts.

    How are we going to store this in JCR? In cq5, the tags are stored as a tree of JCR nodes,with a structure similar to the above one, using the cq:Tag node type. The content model simply reflects the reality of the tags and their natural organization.

    The cq:Tag node type

    Here's the definition of the cq:Tag node type in CQ5.2:

    The tag node is required to have a sling:resourceType property with a default value of tagging/tag. That property is used by the Sling rendering system to select the appropriate components to render the tags, in the cq5 site admin console for example.

    The node can contain nt:base child nodes which have the cq:Tag type by default. The cq:Tag node can also contain any number of additional ("residual" in JCRspeak) properties, single or multi-valued.

    The cq:Tag node type also uses the mix:title mixin, which defines two optional String properties,jcr:title and jcr:description. The jcr:title property is used to allow tags to be renamed without changing their identifier. The cq5 user interface displays the jcr:title value, which can change over time,but it's the path of the cq:Tag node that is used as the tag identifier.

    There's no specific node type for tag namespaces: a cq:Tag node that doesn't have a cq:Tag parent is considered as being a namespace. In cq5, tag definitions are stored under /etc/tags, and that node is not a cq:Tag, so cq:Tag child nodes like /etc/tags/marketing define tag namespaces.

    At Day we like to keep things open whenever possible: the cq:Tag node type is not designed to put strong constraints on the content, and that's inline with David's model rule #1:

    Data First, Structure Later. Maybe

    We haven't reached the maybe stage yet.The cq:Tag node type is clearly here to help, not to restrict what we can do.

    Tags content model

    Switching to the CRX Explorer, we notice that the tree structure under /etc/tags simply maps the namespace/category/tag structure of our tags. Nothing surprising again, and that's a good thing. Obvious content structures will help others understand what we're doing.

    Looking at the properties of the /etc/tags/stockphotography/animals/baby_animals node,we see that the TagId property that's visible in the cq5 site admin console is not explicitely stored in the content - it is simply defined by the storage path of the tag node under /etc/tags, to avoid redundant information.

    Don't you love the Principle of Least Surprise?

    At this point you're probably thinking that all this is quite obvious - and you're right! The beauty of a JCR content repository is that you can in most cases store information without any structural transformations. Tags are items grouped in namespaces and categories, so a tree of namespace/category/tag nodes makes perfect sense, and is largely self-explaining.

    Tagging content

    To tag content, we simply add a multi-value tags property to the _jcr_contentnodes of cq5 pages, or to other pieces of content. A page might have:

    cq:tags =
    [

    marketing:interest/business,
    marketing:interest/investor,
    marketing:interest/services
    ]

    if it was tagged with the business, investor, services tags of the interest category of the marketing namespace.

    We don't use JCR references, but simply store paths in properties, as this gives us more flexibility when restructuring things. It's hard to say what will happen to those tags, and to the very concept of tagging, over the expected lifetime of our product, so we accept potentially dangling references (and cope with them at the application level) to gain content agility.

    Coda

    That's it for now! We hope to write more about our content models in the near future, to help our readers see how simple JCR content models can be - and should be.

    As usual, feedback is very welcome - let us know if this information is useful to you!

    Posted by Carsten Ziegeler APR 22, 2009

    Posted in sling Add comment

    This year the number one Java conference in Germany, the JAX 09, is great as always. With nearly the same number of attendees it's crowded in the positive sense - although you have to go to a session in time to get a good seat. I've seen a lot of highlights today - but first was my own presentation about JCR, OSGi, Scripting and REST - which presented the great Apache Sling web framework. Apache Sling uses Apache Felix as the OSGi framework and Apache Jackrabbit for the content repository. My session was very well attended, more than I expected, and while preparing the talk I noticed that I actually have more presentation material for JCR/Jackrabbit and OSGi/Felix than for Sling itself; although Sling is of course the topic of the session. I think this shows that Sling is really a very clever framework, leveraging existing stuff and combining it in a productive way - this goes hand in hand with the great keynote tonight from Neal Ford - now, I can't summarize it for you, but one of the key points was: don't make things more complex than they should be (just because somethings that it makes sense or is cool). Look around and make use if available stuff - even if that doesn't look cool for your developers. Most of the time is spent on accidental complexicy which in the end causes projects to fail.

    I'm in the software world for over 20 years now and Neal is spot on with his message; i've seen a lot of projects fail because of this or because of one (or more) of the anti-patterns Neal mentioned. Unfortunately I missed the sessions from Neal's collegue Ted Neward which I enjoyed last year, but I saw an interesting session about the tools in Spring IDE for Spring, OSGi and Spring DM - now this looks pretty cool to me; I'm not in favour of using Spring as I think that there are more lightweight :) solutions when it comes to OSGi - but on the other hand giving the fact that everyone and his dog knows Spring and given such good tooling with Spring IDE, it's really hard to advocate something else. With the upcomming OSGi blueprint specification this will also have an impact on OSGi. And in the light of Neal's talk, what could possible reasons be to not use this stuff? It would be great if the tooling would work with any OSGi framework and not just the Spring server.

    But these are just excerpts from the day - and it's just the first day; I'm looking forward to tomorrow when the OSGi day takes place! During the breaks I'm trying to finish some stuff for the upcomming Sling release - we hope to get it out in the next weeks. So stay tuned.

    Posted by Bertrand Delacretaz APR 20, 2009

    Posted in iks-project Add comment

     

     

     

     

    It's been three months since I started working with the IKS project team, where Day is involved as an industrial partner among an impressive group of both academic and industrial teams.

    The goal of this integrating project, partly funded by the European Commission, is to create an open source technology platform for semantically enhanced content management systems.

    Now what's that? There are many ways to semantically enhance content management systems, including many scenarios that would be easy to explain to users but are still hard to implement today. Finding similarities between blocks of text written in different languages, for example, is an obvious use case that's next to impossible to implement reliably today for arbitrary content. Would that be useful? You bet - but only if the signal to noise ratio is on par with what you get from Google searches today, sufficiently good for the human user to do the final selection.

    That's only one example, and talking to users of our products leads to a number of scenarios where semantics would help. Suggesting tags based on content? Some CMSes already do that, but is that good enough to be useful? Rarely. Tagging images automatically based on their content or graphical features? Now that would be cool, and that's probably possible today, but not yet as a mainstream feature.

    After spending a few days with the IKS partners during two project meetings, I think creating a framework that allows semantic algorithms to be plugged in, and provides a simple RESTFul interface to its features, would be very valuable. We're planning to work for four years on IKS, and during that time semantic algorithms will improve, so whatever we create needs to allow new and improved tools to be plugged in.

    In my opinion, CMS vendors will not change a significant part of their technology stack just to get semantic features - so it is important for IKS to provide tools that can be interfaced with existing software. In our discussions with IKS project members, we have mentioned Apache Solr as an excellent example of making the power of Lucene available to the programming masses, through a simple HTTP interface.

    Whatever tools IKS makes available should in my opinion provide simple HTTP/JSON or HTTP/XML interfaces to their services, based on REST principles, to allow them to be used from any programming language and technology stack. Integrating semantic features in Lucene or Solr would be the best, of course, but that doesn't seem too easy to do now, so we might want to first create some prototypes and then look at possible synergies.

    Those first three months working (part-time) for the IKS project have been very interesting for me, and I have a good feeling about the group. To put it simply (and half jokingly), the academic partners seem to have really nice semantic tools but don't really know what to do with them, and we industrial partners have needs in this area but don't know how to design and implement the required features. We just have to mix both together to create great things!

    With thirteen project partners, we'll all need to push hard for concrete things to emerge quickly. Judging from our first meetings and workshops, the will is there to create something, and if that can help people be less scared of "semantic features", by making those more accessible, the project will be a success.

    One important thing on which we have agreed early on, is to work in an open source way right from the start, and make some noise about our results as soon as we have something concrete to play with. Incubating parts of the IKS stack at the Apache Software Foundation might be the best way to grow a community both inside and outside of the IKS team - I hope that happens as soon as we identify the components for which that would make sense.

    Looking forward to all of that. For now, my immediate goals are to learn more about Linked Data techniques and tools, and to find out how far Apache UIMA could help in extracting semantic information from arbitrary content. We'll have more about IKS here as the work progresses.

    Posted by Michael Marth APR 17, 2009

    Posted in communique, cq5 and lotw Add comment

    Can I re-tweet on a blog? Hmm, let's try:

    RT @jaykerger www.phoenix.edu is officially live on CQ5! Congrats to the team!

    Congratulations, guys!

    Posted by Michael Marth APR 16, 2009

    Posted in cms, cq and cq5 Comments 7

    CMS analyst Janus Boye has blogged about the expected lifetime of a CMS installation, i.e. for how long an installed CMS can be expected to be in production. His guess is a lifetime of 3 years. On the blog's comments Janus and I got into a discussion about the accuracy of that guess where he asked Day to publish actual real data about this topic.

    I like this idea because publishing this data provides a benefit to our potential new customers: a reliable indicator (without any hand-waving or gut feelings) of the CMS's lifetime that can be used in business plans.

    The data

    The data I have used is taken from Day's support contracts. Only customer data from outside ouf Europe was used (simply because it was available to me). This selection is likely to bias the results towards shorter lifetimes as Day's oldest customers are based in Europe. The basic assumption is that the life time of the CMS is equivalent to the duration of the support contract. The used end point of each contract period is the date up to which the contract is paid for as of today.

    You might argue that there could be customers that have a contract but do not actually use the product anymore, which could in fact be the case (I do not know of any). On the other hand, I am aware of customers that still use the product and have terminated their support contract. Therefore, in order to reduce selection bias I did not remove any data points due to this particular consideration.

    Each customer was counted once for each product he purchased, i.e. a customer that has two distinct support contracts for CRX and CQ was sampled twice. I discarded all OEM contracts because they are of their different nature (they would skew the result towards longer lifetimes). Finally, I also dropped a data point where the support contract was cancelled because the customer went out-of-business alltogether.

    I believe that this data set is reasonably unbiased to provide meaningful results with respect to the question of the lifetime of a customer's CQ/CRX installation.

    The Method

    Luckily for Day, the data is what is called "right censored". That means that it is unknown for how long an existing support contract will go on - actually the majority of the available data points are right censored.

    The scientific discipline that is concerned with analyzing data of this kind is called "survival analysis". One is interested in the survival function which maps a set of events onto time. The survival function is a property of a random variable, i.e. it needs to be estimated (in the statistical sense of the word).

    One well know estimator for the survival function is the Kaplan-Meier estimator (which is non-parametric, i.e. there are no underlying assumptions about the distribution of the data). In a nutshell:

    The Kaplan-Meier estimate of the survival function, S_hat(t), corresponds to the non-parametric MLE estimate of S(t). The resulting estimate is a step function that has jumps at observed event times, ti. In general, it is assumed the ti are ordered: 0 < t1 < t2 < · · · < tD. If the number of individuals with an observed event time ti is di, and the number of individuals at risk (ie, who have not experienced the event) at a time before ti is Yi, then the Kaplan-Meier estimate of the survival function and its estimated variance is given by:

    The quantity of interest is the mean survival time (and its respective estimate) which is given by:

    Because S(t) may not converge to zero, the estimate may diverge. Therefore the integral is only taken up to a finite number. A reasonable choice of is the largest observed or censored time.

    Results

    Resisting a geek's urge to implement the estimator myself I used the freely available R to calculate the results. Here is a plot of the Kaplan-Meier estimate for the survival function with 95% confidence bounds (time is in days):

    And finally, the estimated value for the mean survival time, i.e. the estimated lifetime of a Day CMS installation is: 2453 days with a standard deviation of 154 days. That's about 6.7 years. Mind you, this result is likely to be lower than if the whole customer base had been analyzed.

    Posted by Michael Marth APR 14, 2009

    Posted in open and tools Add comment

    Bertrand Delacretaz's talk on open source tools at the OpenExpo (mentioned previously) is now available as a video.

    The slidedeck can be downloaded here.

    Posted by Juerg Meier APR 14, 2009

    Posted in rest Add comment

    This is a guest post of Juerg Meier who runs restfulness.info where he describes a prototypical enterprise working on the principles of ROA. He blogs at blog.restfulness.info.

    Based on my professional activities, I have been faced to explain the advantages of Resource Oriented Architectures (ROA) to a number of customers. Some of them with technical, but most with business background. Granted, you don’t want to provide the link to Roy’s dissertation to a business person… nor tell them, what great infrastructure we have to implement the architecture. Personally, I came to a conclusion, which I am glad to share here. This article tries to elaborate what the number one business driver for ROA is, IMHO.

    Back at BEA eWorld 2002, BEA co-founder/CEO Alfred Chuang had somebody to steal his car during his keynote. The car was found again - courtesy to a car-locating-system, which communicated with registered cars via the latest technology hype of the coming era: web services. The car was hot, the show was fun, but one big question remained: what difference made the web services? To make this story short: none. Because the same could have been achieved with any other RPC-based technology. From the viewpoint of the business – in this case the car owner – web services did not add any specific value, so business can remain essentially agnostic about the current communications fashions in IT. IT is simply perceived as a cost center.

    With almost 3 decades in IT, I have seen many of those fashions come and go: bare-boned socket connections, DCE (yes, I do mean distributed computing environment), transaction monitors, CORBA, component models such as EJBs and DCOM, WebServices... Have any of these evolutionary RPC-steps made us, information systems developers, more efficient? Not much comes to my mind. It generally was rather an exercise to move bytes from A to B in the hypest fashion.

    Even corporate intranet projects were driven by rather weird, heavyweight technologies like portal/portlets or "document-driven collaboration solutions". In particular, they appeared overly complex in comparison to that system that has been growing at light speed for 15 years now: the WWW. Moreover, it has exactly the qualities we’ve been looking for in enterprises: scalability, flexibility, reliability, speed. In 2009, the prime time for the "Enterprise Web" seems to come, thanks to progresses in web oriented middleware technologies and standards, but also owing to a common gut feeling that WS* have somehow failed to fulfil their promises.

    So, what's the ROA advantage?

    Many will happily cry: Web 2.0 support! I won’t. Sure, information exchange can improve with blogs and wikis, thereby smoothing the biggest nightmare of the information age, I mean the tons of emails that flood our mailboxes every day.

    But I think that ad-hoc information generation is rather the exception than the rule in the enterprise. The typical enterprise is highly process-driven, hopefully by well-defined ones, but more often than not by ones that have been defined informally. Many of these processes, even the well defined, are not well implemented: they lack access to related information, either intentionally (too costly to access data on different systems) or un-intentionally (process designers have been unaware of other relevant information). Both reasons may have their origins in one of RPC’s major deficiencies: services still are not really loosely enough coupled and they lack a truly overall addressing scheme.

    It is primarily the latter where I see the biggest advantage of ROA, and that advantage has a name: URI, the Uniform Resource Identifier. With it, we are able to give any chunk of information a unique identity and a location - on an enterprise wide level. The "chunks" can be anything, from small to large, from a database record to an image in some DMS, from pure data encapsulations to function-only resources. Consequently, we give process designers the opportunity to integrate any relevant information into their "process space". And vice-versa, the process’ output will be as easy available to others, no matter where else in the enterprise the consumer resides.

    Thus, Resource Oriented Architectures promote an enterprise addressing scheme that is truly re-usable. Instead of building, like in RPC-based architectures, thousands of point-to-point, tightly-coupled connections between systems, business analysts are asked consume information out of large, business-oriented classification trees, and store their outcomes back into some specific position into this tree.

    Consider an old-fashioned cash withdrawal at a teller’s window. This process consumes base information about you, your account, the teller, and may require viewing an image containing the scan of your signature for verifying your identity. Each of these information fragments might come from different systems, i.e. different information silos, but the addressing/classification scheme acts as glue here.

    On the other end, the process produces information about your withdrawal, which might include the data (time, amount, …), and perhaps a physical receipt you had to sign. These artefacts can be stored in a well defined place in the information tree, e.g. at //mybank/privateCustomers/4711/accounts/checking/transactions/20090510-1/details, and .../20090510-1/receipt respectively.

    As you may have noticed, I have not mentioned IT in the description above. REST comes with inherent concepts that help the enterprise to run its business simpler and with more transparency.

    The concept of an overall addressing scheme that makes information directly available via uniform resource identifiers, comes as a direct advantage to businesses.

    Of course, the engine that empowers this uniform access has to come from IT. But unlike its RPC-style predecessors, this is not something that happens under the covers in some obscure manner; the introduction of ROA impacts directly on how businesses and their knowledge workers will operate.

    This is the main message we have to carry on to the management and business levels of companies. Still noteworthy though that the technical implementation of ROA can happen on relatively simple and low priced infrastructure. The same time, we can simplify our SW stack by leaving alone many unnecessary SW layers. This might be considered a side effect; however, it improves the Return-On-Investment of ROA, a "hard" argument, which will be paid much attention these days.

    Posted by Michael Marth APR 09, 2009

    Posted in announcements and cmis Add comment

    The CMIS Technical Committee's mailing list has been added to dev.day.com's discussion groups. Check it out here. The list is, of course, searchable.

    Posted by Michael Marth APR 09, 2009

    Posted in jcr and link of the day Add comment

    Our partners eForce have just come out with a new JCR-focused developer portal called JCRDEV. The covered topics include Apache Sling as well as JCR-based CMSs. The site itself is built on Sling.

    Alongside the web site there is also a Twitter account to follow and a LinkedIn group to join.

    Posted by Michael Marth APR 08, 2009

    Posted in announcements, crx and crx quickstart Add comment

    Along with the release of CQ5.2 we have released an update of CRX, which is now available in version 1.4.2. Apart from bug fixes there are improvements are in the areas Quickstart, virtual repository as well as search. Also, CRX is now optionally supported on Amazon EC2 virtual machines. Please see the release notes for full details.

    Here's the download of the Developer Edition and the Documentation Pack.

    Posted by Lars Trieloff APR 07, 2009

    Posted in tagging Comments 2

    As you all know, CQ5 supports tagging and taxonomies and both side by side. Taxonomies are great, because they allow multi-dimensional classification of content, but sometimes there are things that do not fit into the taxonomy. And this is where it comes handy that you can just type and add a new tag to the standard tag namespace folksonomy. Using this feedback from the folksonomy you and enhance and improve your taxonomy. But what happens if you do not start with a neatly organized taxonomy, but with a wild-west folksonomy that has been created by numerous authors and you want to bring order into the chaos?

    Actually, you are in a very good position. Starting with data first, gives you the ability to come up with a meaningful taxonomy that is relevant to your content in the first shot. Using a folksonomy as a starting point to create a taxonomy is what I (and others) call "Folksonomy Mining". As an illustration how to use my Folksonomy Mining technique, I will be using the folksonomy created by the last.fm community.

    1. Start with a folksonomy of viable size in a well-defined domain. You need at least 1000 tagged items and the domain should not be all-encompassing like "web pages on the internet". The last.fm folksonomy is certainly the right size and with music we have a domain model that is restricted enough.
    2. Get 100 most popular tags out of the folksonomy. With CQ5 tagging you have the "count" column that says you how popular a tag is. With last.fm, there is an API method for that. (100 tags)
    3. Remove obvious duplicates. "favorite", "favorites", "favourites" and "favourite" for instance need to be merged.
    4. Create dimensions for groups of similar tags. Examples that I can find in the last.fm folksonomy are: time (60s, 70s, 80s, 90s, 00s), origin (american, australian, british), mood (ambient, atmospheric, chillout), vocals (female vocalists, male vocalists, instrumental), ownership (albums i own, seen live), origin (soundtrack, covers, live, remix), season (christmas, summer), preference (amazing, awesome, beautiful)
    5. There is usually low co-occurrence between different items in the same dimension.
    6. For more complex dimensions such as genre (rock, pop, country, folk) you might want to create sub-and super-categories. For example rock-metal-death metal-brutal death metal (yes, this is part of the top 100)
    7. There is usually high co-occurrence between super- and sub-categories. And the super-category usually has more entries than the sub-category.
    8. Fill in "holes" in the taxonomy. For instance the time dimension: add 30s, 40s, 50s. In the season dimension add: spring, fall, winter
    9. For categories with many sub-categories add grouping categories where they become helpful, for instance in the origin dimension it might help to add american, european, asian, african to group origins.
    10. There will be a number of tags to remain uncategorized, just leave them this way, and leave the folksonomy open, so that new tags can be added over time

    With these ten simple rules you have managed to grow trees out of the tag cloud, added structure where needed that can be re-used in query builders and other places of the system.

    Posted by David Nuescheler APR 06, 2009

    Posted in cmis Add comment

    Dear CMIS community,

    As per the "official invitiation" ;) email below we are hosting an CMIS PlugFest in Basel. Since this is not constrained by OASIS TC membership we would like to make this as open as possible and invite other interested parties as well. Come along, bring your CMIS implementation and see if it interoperates with others.

    Please let me know if you intend to join us (david(at)day.com). If you have not been to Basel before see Roy Fielding's "Visitor's Guide to Basel".

    Regards,
    David

    ---------- Forwarded message ----------

    From: David Nuescheler
    Date: Sun, Apr 5, 2009 at 12:58 PM
    Subject: Official Open CMIS PlugFest Invitation April 29-30 in Basel, Switzerland
    To: "cmis@lists.oasis-open.org"

    Dear TC Members,

    Please find below the "official" invitation to the frequently disussed CMIS Plug Fest at the Day offices in Basel, Switzerland in April.

    We would like to invite all CMIS TC members and other interested parties to an open PlugFest at our Offices in Basel Switzerland. (http://is.gd/qPs0)

    Agenda:
    ---
    April 29-2009
    9-17h Setup and Connectivity Setup, Smoke Tests
    19h- CMIS Dinner

    April 30-2009
    9-16h Actual Testing and compliance reporting
    16h-17h Wrap-up, Next steps
    ---

    We will provide wireless access to the Internet and we will also have inbound HTTP access through a reverse proxy ready for people to do remote testing to our servers.

    For people who would like to check in remotely, we will use the following webex conference.

    ---< CMIS Plugfest >----------------------------------------------------------

    Monday, April 29, 2009, 9h00 CET, 03:00 am EST, 12:00 am PST
    Meeting Number: 709 533 911 (Password: day)
    https://day.webex.com/day/j.php?ED=119801362&UID=0&PW=50b835524b&RT=MiMyMg%3D%3D
    Dial-in: USA +1 (718) 354 1382
    More Dial-in numbers:
    https://day.webex.com/day/globalcallin.php?serviceType=MC&ED=110021337&tollFree=1

    --------------------------------------------------------------------------------------

    For planning purposes it would be great if you could let me know (either on this list or directly) by the beginning of next week if you plan to attend and if you have any further questions please feel free to ask.

    regards,

    david

    Posted by David Nuescheler APR 01, 2009

    Posted in jsr-283 Comment 1

    I am very pleased to announce that JSR-283 has reached the proposed final draft stage. The specification is now available for download.

    The most notable change from the public review stage is a very exciting one: the specification has been reorganized into two separate parts:

    • the repository model and
    • its Java bindings.

    This should allow for much simpler consumption and implementation of the spec in other language environments.

    The notable extensions of JSR-283 from JCR 1.0 have been discussed previously, see InfoQ for a summary. My personal favourites are.

    • Query extensions mainly around extended support for SQL, specifically JOINs; We also introduced Java Bindings for the Query Object model that allow for easier "query wizards" and last but not least "Prepared" queries.
    • Access Control Management to go beyond the introspection that is already specified in JCR v1.0.
    • Retention Policy & Hold Support to enable records management applications sitting on top of JCR repositories in a standardized fashion.
    • Simple versioning to provide for repositories that only support linear versioning. Versioning extensions around "Baselines" and "Activities" to cover the full configuration management spectrum.
    • Lifecycle Management to allow to easily hook content into a process engine.
    • Standardized Nodetype Registration that allow application to register and manage their nodetypes with repository.
    • New property types and new nodetypes to enhance application interoperability around common meta data.
    • Workspace Management to allow for creation and deletion of workspaces in a repository.
    • Shareable nodes that allow the tree in a content repository workspace to become a more implicit network.
    • Journalling Observation that allows offline/polling applications to find out what happend in a content repository since they last checked.

    As next steps we will implement the RI (reference implementation) and the TCK (Technology Compatibility Kit) in the open as part of the Apache Jackrabbit project.

    Please send any comments to jsr-283-comments@jcp.org

    Posted by Michael Marth APR 01, 2009

    Posted in communique, cq5 and screencast Comments 4

    One of the many totally cool features in CQ5.2 SocialCollab is that you can optionally run it in "Fully Social Mode". In this mode a number of social tweaks are performed in the underlying content infrastructure. For example:

    • In Fully Social Mode workflow tasks come to your inbox as "invitations"
    • all paragraphs are restricted to a maximum of 140 characters
    • there is an additional field "relationship status" in your user profile page

    Not conviced, yet? Have a look at the screencast.

    Update: check this post's publication date before you click ...

    Posted by Lars Trieloff APR 01, 2009

    Posted in cq5, everything is content and social Add comment

    Today, our CQ5 Digital Asset Management and CQ5 Social Collaboration become available with the launch of CQ 5.2. This is a great day for me, because my two products that I have been working on for the last one and a half years are going to market.

    Both with CQ DAM 5.2 and CQ Social Collaboration 5.2 I have been standing on the shoulders of giants, which have enabled me to implement a bold vision of Digital Asset Management and Social Collaboration integrated into Web Content Management in such a short time, following our CQ5.1 release last November. These giants are our developer team and our product marketing team who have a done a marvelous job on getting this product to countless demos, POCs, beta projects, press and analyst briefings and who have implemented one cool feature after the other.

    But standing on the shoulders of giants also means reusing a great platform to build upon. We did not have to think a single second about clustering, backup, scaling, permissions, LDAP integration, workflow, development environment, because all this is at some level provided out of the box by CRX (and its underlying Apache Jackrabbit and Apache Sling foundations) and the CQ5 Platform we share with CQ5 Web Content Management.

    I would like to take the opportunity to shed the light on two smaller features, one in CQ5 DAM and one in Social Collaboration that we typically do not include in demos, but that offer a huge potential for everyone who sees our products as a platform to realize his own ideas.

    Feature number one is the workflow launcher we are using especially for CQ5 DAM. This workflow launcher will listen for repository events at a certain part of your content repository, for example the DAM bulk upload hot zone or a Sharepoint repository we are monitoring through our connectors. Once a new file is being created here, we launch the workflow that will take care of the actual processing. For the end user this means: more flexibility in creating complex workflow-driven processing solutions for digital assets. And it means a reduction of magic, because everything that will happen to your assets is visible (in the Workflow Models tab) and the reason why it happens is visible in the workflow launcher tab. Not attempting to do magic and to appear as magician should be a goal for every software engineer.

    The second feature is even less graphic (guess why we are not demoing it), but it is one of the small pieces that makes Social Collaboration so great. We call it the 'Feed Importer', but it actually does a lot more. The idea of the feed importer is to poll a remote resource at a specified interval, to parse it and to create nodes in the content repository that represent the content of the remote resource. We are using this at two places right now - for subscribing to remote iCalendar files just like you do in Apple's iCal or Google Calendar and in the blog, where you can aggregate existing blogs in one 'planet blog' that for instance contains all bloggers of the JCR community. This auto-blogging-feature has been in the blog since Advanced Collaboration 1.1, but with Social Collaboration 5.2 there is a proper and powerful API that can be used in customer projects as well. Needless to say, in order to implement a new parser & importer all you have to do is implement one OSGi component and I expect it to be not too long till we see Twitter-mashups on CQ5-powered websites that are using the Feed Importer.

     

    So thank you very much for all the help with the 5.2 release and I am looking forward to see many CQ5-powered community websites and public asset repositories soon.