bmule's posterous

Pluggable Persistance layer using Akku

Based the project Akku http://akkasource.org/ - my interest is in the pluggable persistence layer 

Transactors http://doc.akkasource.org/transactors ... "Scala Actors are poor for managing shared state"

Tutorial http://debasishg.blogspot.com/2009/10/pluggable-persistent-transactors-with.html

See MongoDB - document centric DB, compare to couchdb. Includes mapreduce

Java, Groovy, Scala to Prolog

 

  • J2P Java to Prolog Bridge - inference engines via tuProlog 
"J2P acts as a stub generator that generates Java wrappers for Prolog
theories and handle the marshialing and unmarshialing of Prolog terms
translating Java Objects into Prolog terms and viceversa."
http://motonacciu.50webs.com/projects/j2p/index.html

  • tuProlog directly with Groovy

http://gavingrover.blogspot.com/2007/06/using-prolog-with-groovy.html

*IPL

Resources

Groovy http://groovy.codehaus.org/


tuProlog - its both flexible and convenient to build inference
engines using JVM based languages - not too much info on performance.
http://www.alice.unibo.it/xwiki/bin/view/Tuprolog/

Distributed SCM - Source Code Management

We have many potential community members and a core team of developers. Additionally, some developers tend not to commit code immedicately to the core trunk, but might like to maintain separate branches until ready. How do we manage it all (committers) without stifling the community process? A restrictive model for inviting committers to the core team is not necessary if we use hybrid SCM approach that allows a central repository for a team plus associated personal branches from both team and non-team members. The latter approach is supported by Bazaar - a distributed SCM that provides for a central repository like subversion. See below for more explanation on the flavors of the central repository.

Distributed SCM:

Mercurial  & Subversion SCM         googlecode
Bazaar SCM                               Launchpad  https://launchpad.net/

About Bazaar and Mecurial
http://www.javaworld.com/javaworld/jw-09-2007/jw-09-versioncontrol.html?page=4

IDE development tool plugins:
http://bazaar-vcs.org/BzrEclipse
http://www.vectrace.com/mercurialeclipse/

Why Launchpad? http://launchpad.net

  • Based on Bazaar - a distributed SCM source code management solution
  • Distributed and/or central repository support. Bazaar can be used with a central repository like the Subversion
  • Bazaar can connect to other repositories in Git, Subversion, Mercurial - which means that we could support distributed
    source repositories one day that moved elsewhere  http://blog.launchpad.net/bazaar/accessing-git-subversion-and-mercurial-from-bazaar For example, Launchpad is in sync with Drupal.
  • Support team and community contributions reqardless if they are TEAM members. This could alleviate administration nightmares regarding the process of accepting new code committers,etc.
    • "Drive by contributions" - anyone can add separate branches that can be reviewed by a core IKS Team. Team or non-team members can have personal branches that can be  reviewed by team for potential integration into the team branch
    • anyone can contribute without being a team member but their contributions become a separate branch that can be reviewed. This means less work to grow and trust new team members - the committers. It's not clear if google offers this with the Mercurial option...
    • supports team branches and personal branches which can be merged later to the main team branch. Branches from non-project members (Drive by Contributions) can be merged if desired by the team using code review features.
    • Team or central repository options - quoted from lauchpad:
      • Centralised: also called lock-step, this is how Subversion and CVS work. Everyone makes commits direct to the central branch.
      • Centralised with local commits: similar to centralised, except that when developers are making a series of changes they use "commit --local", or unbind their checkout, then commit their work to the shared main line when it is complete.

      • Decentralised with shared main line: each developer has their own branch or branches, plus commit rights to the main branch. They do their work in their personal branch, then merge it into the main line when it is read

  • Bug tracking and Code review and voting...  the collaboration and review is very granular unlike google groups option (code.google.com)
    • Link code to bugs and Feature planning 
  • Linking/importing of other SCM repositories. If subcomponents move to Apache or other SCM, we could link/import. However, the bug reports and collaboration materials is likely not linked ?
  • Collaboration support for specific components, sources - not one big group email! Granularity - Can review code and vote..


Lauchpad hosts Ubuntu and does has more specific tools for Ubuntu sources.

Hosting services (lightweight):
Bazaar (can access Git,Subversion, Mercurial from Bazaar)
  https://launchpad.net/

Mercurial
  http://bitbucket.org/

Mercurial, Git, Subversion
  http://kenai.com/

Kenai is great if using the Netbeans IDE

subversion, Mercurial
 googlecode

Overview
http://www.javaworld.com/javaworld/jw-09-2007/jw-09-versioncontrol.html?page=4

Filed under  //   source-code-management  

Notes on CMIS... and JCR

CMIS is "Content Management Interoperability Services"

CMIS Specification document
http://docs.oasis-open.org/cmis/CMIS/v1.0/cd04/cmis-spec-v1.0.pdf

Comparison: CMIS and JCR
http://dev.day.com/microsling/content/blogs/main/jcrcmiscomparison.html

Apache Chemistry

http://incubator.apache.org/chemistry/

Is Apache Chemistry the followup of Jackrabbit CMIS sandbox? A requirement is that the CMS be JCR compliant (version?)

 


JCR loves CMIS presentation (Day Software) See Jackrabbit CMIS sandbox!

JCR Jackrabbit CMIS sandbox (images are similar to above slide presentation)

http://wiki.apache.org/jackrabbit/SandboxCMIS

http://www.day.com/o.file/cmis-impl-jrsandbox.pdf?get=b445d210537cf544123a6f6...

CMIS/JCR Server Architecture

Media_httpwikiapacheorgjackrabbitsandboxcmisactionattachfiledogettargetcmisarchserverpng_pbqzvqodywddayo

Proposed CMIS Client Architecture

Media_httpwikiapacheorgjackrabbitsandboxcmisactionattachfiledogettargetcmisarchclientpng_jmyxjfeafdjizgt

QUESTION: can we see SDO (Service Domain Objects) in this architecture? What are pro/cons of option 1 and 2?

  1. Use JCR binding or  SDO binding
  2. or Use SDO to bind to heterogenous data sources included JCR repositories

 

CMIS Implementations (JCR + CMIS, CMIS and ?)


Open question: where does SDO (Service Description Objects) fit? SDO + CMIS?

Anti-JCR

JCR IST TOT, ES LEBE CMIS?
http://www.saperionblog.com/2008/10/jcr-ist-tot-es-lebe-cmis-da-schaun-mer-mal/

ECM Standards War: Bye Bye JSR170, Hello CMIS! (Tap dancing on the grave of JSR170 standard...)
http://bexhuff.com/2008/09/ecm-standards-war-bye-bye-jsr170-hello-cmis

Trend article from a few years ago ... does the hype tell us anything?
http://www.cmswatch.com/Trends/1361-CMIS---the-new-Lingua-Franca-of-ECM

SDO - Service Data Objects

SDO (Service Data Objects)

SOA and SDO: What is SDO?
http://soa.sys-con.com/node/313547

from http://tuscany.apache.org/sdo-overview.html
Service Data Object(SDO), provides a very simple programming model that
addresses this issue. The key high level advantages of SDO are:

* Uniform access to data from heterogeneous sources which could be
XML, RDB, POJO, SOAP, etc.
* SDO provides both a static (or strongly typed) programming model
and a dynamic (or loosely typed) programming model. This provides
a simple programming model without sacrificing the dynamic model
needed by tools and frameworks.
* Provides Meta-data for easy introspection of data types
* Supports a disconnected model, whereby data can be retrieved from
a data source via Data Access Service
. The data
can be modified by a client with change tracking, and applied back
to the data source.
* SDO programming model is language neutral

  • * TODO - look for Uniform access to: JCR sources, ____? Or is JCR an alternative to SDO depending on needs? SDO at the enterprise level uses tools to map to existing datastructures, would JCR offer same?


* SDO - is based on disconnected graph architecture
Supporting data READ/WRITE - change history/tracking

* SDO like solution is especially needed for our READ /WRITE requirement
on existing CMS data.

* In SOA based architecture - best to work with a common data access
solution - we discussed JCR, but an SDO like solution seems compatible.

http://tuscany.apache.org/sdo-overview.html
http://en.wikipedia.org/wiki/Service_Data_Objects


* Specifications www.osoa.org Open SOA collaboration
http://www.osoa.org/display/Main/Service+Data+Objects+Home
http://www.osoa.org/display/Main/Service+Data+Objects+Specifications

* Implementations
see wiki above and Apache Tuscany

* Combining SOA/SCA (Service Component Architecture) and SDO
* SDO complements SCA; both serve to simplify the development of SOA based systems.
* SCA focus: simplify the composition of service networks
* SDO focus: simplify data handling

MOF and OMG Model Driven Architecture (MDA); and Eclipse EMF/MDA

The MOF and OMG's Model Driven Architecture (MDA)

http://en.wikipedia.org/wiki/Meta-Object_Facility
http://www.omg.org/spec/MOF/2.0/

I have experience with Eclipse RCP + Eclipse Modeling Framework (EMF), ... MDA + MOF like metamodel (ecore).
Ecore is described as being closer to MOF 2.0 EMOF -Essential MOF then MOF. http://www.eclipsecon.org

/2004/EclipseCon_2004_TechnicalTrackPresentations/40_Frankel.pdf
The use of OCL Object contraint language is used to annotate the ecore based domain model to associate business logic (methods described in the model for example) during the automated generation of code.
* OCL http://de.wikipedia.org/wiki/Object_Constraint_Language

*  Discover the Eclipse Modeling Framework (EMF) and Its Dynamic Capabilities http://www.devx.com/Java/Article/29093

SOA/SCA via Apache Tuscany

Apache Tuscany - A framework to help build  SOA based applications

SCA concepts.


Quoted from site: "SCA is a standard programming model for abstracting business functions as components and using them as building blocks to assemble business solutions. An SCA component offers services and depends on functions that are called references. It also has an implementation associated it with it which is the business logic that can be implemented in any technology.

SCA provides a declarative way to describe how the services in an assembly interact with one another and what quality of services (security, transaction, etc) is applied to the interaction. Since service interaction and quality of service is declarative, solution developers remain focus on business logic and therefore development cycle is simplified and shortened. This also promotes the development of reusable services that can be used in different contexts. For example, a shopping cart service can be used in a retail application or a travel application without changing. Services can interact with one another synchronously or asynchronously and can be implemented in any technology.

SCA also brings flexibility to deployment. A solution assembled with SCA is deployed as a unit and can be distributed over one or more nodes in the network and can be reconfigured without programming changes
Applications that adopt SCA programming model can interact with non-SCA applications. Meaning non-SCA application can call into SCA enabled applications and SCA enabled applications can call out into non-SCA enabled application
he basic building block for SCA is a component. It is the abstraction of a given business function. A component is described with the following attributes:

  • Service: Describes the functions that this type of component provides. A component can offer one ore more services. A service is an interface.
  • Reference: This describes the dependencies this type of component has in order to function. A reference is an interface.
  • Property: This defines configuration parameters that can controls how the business function can behave. For example, what currency to use for an account component.
  • Intent policies: This describes assumptions on how the component will behave. There are two types of policies.
    • Implementation policy- Impact the behavior of an implementation. For example, transaction, monitor and logging
    • Interaction policy - defines how the components behave with one another. For example, security.
  • Implementation: Every component has some implementation associated with it. This can be a new business logic or an existing one that is now being used in the assembly. A business logic can handle different operations and some of which are exposed externally as callable services. Component implementation can be in any technology, for example for example BPEL for business processes or XSL-T for transformations or Ruby for scripting or pure Java. How the services, references, properties and intents are defined for an implementation is specific to that particular implementation type.

This is demonstrated below.

Component

The implementation of a component can be in any language that is suitable for the user, for example BPEL for business processes or XSL-T for transformations or Ruby for scripting or pure Java. How the services, references, properties and intents are defined for an implementation is specific to that particular implementation type."