You are viewing a plain text version of this content. The canonical link for it is here.
Posted to general@jakarta.apache.org by "Howard M. Lewis Ship" <hl...@comcast.net> on 2004/03/01 18:49:16 UTC

Proposal: Jakarta HiveMind Project

Proposal for Jakarta HiveMind Project

(0) Rationale

HiveMind is a simple framework for creating pluggable, configurable, reusable services. 

Simple: HiveMind is a way to create a network of services in terms of Java interfaces and classes;
it cherry picks the most useful ideas from Service Oriented Architectures such as J2EE, JMX and
SOAP, but removes the aspects that are typically overkill for most applications, such as service
remoteability and language neutrality. HiveMind creates a natural network of related services and
configuration data, all operating within a single JVM.

Pluggable: HiveMind enforces a complete separation of service definition and implementation. This is
manifested by a division of services into an interface definition and a service implementation as
well as a split between defining a service (as part of a HiveMind module) and providing the
implementation of that service (potentially, in a different module).

Configurable: HiveMind integrates a service oriented architecture to a sophisticated configuration
architecture; the configuration architecture is adapted from the Eclipse plug-in model, wherein
modules may define configuration extension points and multiple modules may provide contributions to
those extension points.

Reusable: HiveMind is a framework and container, but not an application. The HiveMind framework and
the services it provides may be easily combined with application-specific services and
configurations for use in disparate applications.

The API for HiveMind allows thread-safe, easy access to services and configurations with a minimal
amount of code. The value-add for HiveMind is not just runtime flexibility: it is overall developer
productivity. HiveMind systems will entail less code; key functionality that is frequently an
after-thought, such as parsing of XML configuration files, logging of method invocations, and lazy
creation of services, is handled by the HiveMind framework in a consistent, robust, and
well-documented manner.

HiveMind fits into an area that partially overlaps the Apache Avalon project, with significant
differences. HiveMind's concept of a distributed configuration is unique among the available service
microkernels (Avalon, Keel, Spring, PicoContainer, etc.). Avalon is firmly rooted in a Service
Lookup pattern (whereby collaborating services must explicitly, in code, resolve dependencies
between each other using a lookup pattern similar to JNDI). HiveMind uses the Dependency Injection
pattern, whereby the framework (acting as container) creates connections between services by setting
properties of the services (property injection) or making use of particular constructors for the
services (constructor injection).

HiveMind represents a generous donation of code to the ASF by WebCT (http://www.webct.com). HiveMind
originated from internal requirements for a flexible, loosely-coupled configuration management and
services framework for WebCT's industry-leading flagship enterprise e-learning product, Vista.
Several individuals in WebCT's research and development team in addition to Mr. Howard Lewis Ship
contributed to the requirements and concepts behind HiveMind's current set of functionality
including Martin Bayly, Diane Bennett, Bill Bilic, Michael Kerr, Prashant Nayak, Bill Richard and
Ajay Sharda. HiveMind is already in use as a significant part of Vista.

(1) Scope of the package

The package shall entail a core framework JAR (containing essential classes and services), a
standard library JAR (containing generically useful services), along with ancillary artifacts such
as Ant tasks and/or Maven plug-ins and, of course, documentation, all distributed under the Apache
Software License.

(1.1) Interaction with other packages

HiveMind has dependencies on several standard commons packages, including commons-lang and
commons-logging.

HiveMind makes use of the Javassist bytecode generation library, which is available under the MPL
(Mozilla public license).

(2) Identify the initial source for the package

The initial code base has been developed by Howard M. Lewis Ship within the Jakarta Commons
incubator.

http://jakarta.apache.org/commons/sandbox/hivemind

Note: HiveMind was originally considered for inclusion as part of Jakarta commons. Subsequent
research has shown that HiveMind is not a suitable candidate for the commons, and is more
appropriate for a top-level Jakarta project.

(2.1) Identify the base name for the package

org.apache.hivemind

(2.2) Identify the coding conventions for this package

The code follows a modified version of Sun's standard coding conventions, with the following
stylistic changes:
- instance variables are prefixed with an underscore
- a newline is inserted before all braces

(3) Identify any Jakarta resources to be created

(3.1) mailing lists

hivemind-user@jakarta.apache.org -- User discussions
hivemind-dev@jakarta.apache.org -- Developer discussions and CVS update notifications

(3.2) CVS repositories

The package shall use a root branch of the jakarta-hivemind CVS repository.
 
(3.3) Jira

The package shall be listed as top level project, "Jakarta HiveMind", within the "Jakarta" category.
It shall use the key "HIVEMIND".

(3.4) Wiki

A moinmoin wiki shall be created, as http://wiki.apache.org/jakarta-hivemind

(4) Identify the initial set of committers to be listed in the Status File.

Howard M. Lewis Ship <hl...@apache.org>
Prashant Nayak <pr...@webct.com>
Harish Krishnaswamy <hk...@comcast.net>
Knut Wannheden <kn...@paranor.ch>
Erik Hatcher <er...@ehatchersolutions.com>

This list represents the most active HiveMind participants within WebCT and on the Jakarta Commons
Developer mailing list. Notably, Mr.s Krishnaswamy and Wannheden, among others, have already been
actively mentoring other interested users on the commons-dev mailing list in how to use HiveMind as
well as contributing design ideas and patches to the framework itself.




--
Howard M. Lewis Ship
Independent J2EE / Open-Source Java Consultant
Creator, Tapestry: Java Web Components 
http://howardlewisship.com


---------------------------------------------------------------------
To unsubscribe, e-mail: general-unsubscribe@jakarta.apache.org
For additional commands, e-mail: general-help@jakarta.apache.org


RE: Proposal: Jakarta HiveMind Project

Posted by "Noel J. Bergman" <no...@devtech.com>.
> Whether the source is stored in SVN or CVS should be a decision up to 
> Howard and the relevant committers on the project.

Agreed.  Note that I simply asked.

	--- Noel

---------------------------------------------------------------------
To unsubscribe, e-mail: general-unsubscribe@jakarta.apache.org
For additional commands, e-mail: general-help@jakarta.apache.org


Re: Proposal: Jakarta HiveMind Project

Posted by Tim O'Brien <to...@discursive.com>.
I'm +1 on this proposal, I think it makes sense for HiveMind to be a 
subproject of Jakarta and not a Jakarta Commons project.

Whether the source is stored in SVN or CVS should be a decision up to 
Howard and the relevant committers on the project.

Tim O'Brien


Howard M. Lewis Ship wrote:
> Proposal for Jakarta HiveMind Project
> 
> (0) Rationale
> 
> HiveMind is a simple framework for creating pluggable, configurable, reusable services. 
> 
> Simple: HiveMind is a way to create a network of services in terms of Java interfaces and classes;
> it cherry picks the most useful ideas from Service Oriented Architectures such as J2EE, JMX and
> SOAP, but removes the aspects that are typically overkill for most applications, such as service
> remoteability and language neutrality. HiveMind creates a natural network of related services and
> configuration data, all operating within a single JVM.
> 
> Pluggable: HiveMind enforces a complete separation of service definition and implementation. This is
> manifested by a division of services into an interface definition and a service implementation as
> well as a split between defining a service (as part of a HiveMind module) and providing the
> implementation of that service (potentially, in a different module).
> 
> Configurable: HiveMind integrates a service oriented architecture to a sophisticated configuration
> architecture; the configuration architecture is adapted from the Eclipse plug-in model, wherein
> modules may define configuration extension points and multiple modules may provide contributions to
> those extension points.
> 
> Reusable: HiveMind is a framework and container, but not an application. The HiveMind framework and
> the services it provides may be easily combined with application-specific services and
> configurations for use in disparate applications.
> 
> The API for HiveMind allows thread-safe, easy access to services and configurations with a minimal
> amount of code. The value-add for HiveMind is not just runtime flexibility: it is overall developer
> productivity. HiveMind systems will entail less code; key functionality that is frequently an
> after-thought, such as parsing of XML configuration files, logging of method invocations, and lazy
> creation of services, is handled by the HiveMind framework in a consistent, robust, and
> well-documented manner.
> 
> HiveMind fits into an area that partially overlaps the Apache Avalon project, with significant
> differences. HiveMind's concept of a distributed configuration is unique among the available service
> microkernels (Avalon, Keel, Spring, PicoContainer, etc.). Avalon is firmly rooted in a Service
> Lookup pattern (whereby collaborating services must explicitly, in code, resolve dependencies
> between each other using a lookup pattern similar to JNDI). HiveMind uses the Dependency Injection
> pattern, whereby the framework (acting as container) creates connections between services by setting
> properties of the services (property injection) or making use of particular constructors for the
> services (constructor injection).
> 
> HiveMind represents a generous donation of code to the ASF by WebCT (http://www.webct.com). HiveMind
> originated from internal requirements for a flexible, loosely-coupled configuration management and
> services framework for WebCT's industry-leading flagship enterprise e-learning product, Vista.
> Several individuals in WebCT's research and development team in addition to Mr. Howard Lewis Ship
> contributed to the requirements and concepts behind HiveMind's current set of functionality
> including Martin Bayly, Diane Bennett, Bill Bilic, Michael Kerr, Prashant Nayak, Bill Richard and
> Ajay Sharda. HiveMind is already in use as a significant part of Vista.
> 
> (1) Scope of the package
> 
> The package shall entail a core framework JAR (containing essential classes and services), a
> standard library JAR (containing generically useful services), along with ancillary artifacts such
> as Ant tasks and/or Maven plug-ins and, of course, documentation, all distributed under the Apache
> Software License.
> 
> (1.1) Interaction with other packages
> 
> HiveMind has dependencies on several standard commons packages, including commons-lang and
> commons-logging.
> 
> HiveMind makes use of the Javassist bytecode generation library, which is available under the MPL
> (Mozilla public license).
> 
> (2) Identify the initial source for the package
> 
> The initial code base has been developed by Howard M. Lewis Ship within the Jakarta Commons
> incubator.
> 
> http://jakarta.apache.org/commons/sandbox/hivemind
> 
> Note: HiveMind was originally considered for inclusion as part of Jakarta commons. Subsequent
> research has shown that HiveMind is not a suitable candidate for the commons, and is more
> appropriate for a top-level Jakarta project.
> 
> (2.1) Identify the base name for the package
> 
> org.apache.hivemind
> 
> (2.2) Identify the coding conventions for this package
> 
> The code follows a modified version of Sun's standard coding conventions, with the following
> stylistic changes:
> - instance variables are prefixed with an underscore
> - a newline is inserted before all braces
> 
> (3) Identify any Jakarta resources to be created
> 
> (3.1) mailing lists
> 
> hivemind-user@jakarta.apache.org -- User discussions
> hivemind-dev@jakarta.apache.org -- Developer discussions and CVS update notifications
> 
> (3.2) CVS repositories
> 
> The package shall use a root branch of the jakarta-hivemind CVS repository.
>  
> (3.3) Jira
> 
> The package shall be listed as top level project, "Jakarta HiveMind", within the "Jakarta" category.
> It shall use the key "HIVEMIND".
> 
> (3.4) Wiki
> 
> A moinmoin wiki shall be created, as http://wiki.apache.org/jakarta-hivemind
> 
> (4) Identify the initial set of committers to be listed in the Status File.
> 
> Howard M. Lewis Ship <hl...@apache.org>
> Prashant Nayak <pr...@webct.com>
> Harish Krishnaswamy <hk...@comcast.net>
> Knut Wannheden <kn...@paranor.ch>
> Erik Hatcher <er...@ehatchersolutions.com>
> 
> This list represents the most active HiveMind participants within WebCT and on the Jakarta Commons
> Developer mailing list. Notably, Mr.s Krishnaswamy and Wannheden, among others, have already been
> actively mentoring other interested users on the commons-dev mailing list in how to use HiveMind as
> well as contributing design ideas and patches to the framework itself.
> 
> 
> 
> 
> --
> Howard M. Lewis Ship
> Independent J2EE / Open-Source Java Consultant
> Creator, Tapestry: Java Web Components 
> http://howardlewisship.com
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: general-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: general-help@jakarta.apache.org
> 
> 
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: general-unsubscribe@jakarta.apache.org
For additional commands, e-mail: general-help@jakarta.apache.org


Re: Proposal: Jakarta HiveMind Project

Posted by Stephen McConnell <mc...@apache.org>.
Howard M. Lewis Ship wrote:

> HiveMind fits into an area that partially overlaps the Apache Avalon project, with significant
> differences. HiveMind's concept of a distributed configuration is unique among the available service
> microkernels (Avalon, Keel, Spring, PicoContainer, etc.). Avalon is firmly rooted in a Service
> Lookup pattern (whereby collaborating services must explicitly, in code, resolve dependencies
> between each other using a lookup pattern similar to JNDI). HiveMind uses the Dependency Injection
> pattern, whereby the framework (acting as container) creates connections between services by setting
> properties of the services (property injection) or making use of particular constructors for the
> services (constructor injection).

Howard:

Just for reference - the Avalon container implementation supports 
dependency injection via either constructor or the classic framework 
interface style.

Stephen.


-- 

|------------------------------------------------|
| Magic by Merlin                                |
| Production by Avalon                           |
|                                                |
| http://avalon.apache.org/merlin                |
| http://dpml.net/merlin/distributions/latest    |
|------------------------------------------------|

---------------------------------------------------------------------
To unsubscribe, e-mail: general-unsubscribe@jakarta.apache.org
For additional commands, e-mail: general-help@jakarta.apache.org


RE: Proposal: Jakarta HiveMind Project

Posted by Henri Yandell <ba...@generationjava.com>.

On Thu, 4 Mar 2004, Zenaan Harkness wrote:

> On Wed, 2004-03-03 at 12:13, Noel J. Bergman wrote:
> > > > > (3.2) CVS repositories
> > > > > The package shall use a root branch of the jakarta-hivemind CVS
> > > > > repository.
> > > > Not Subversion?
> > > Is there a pressing reason to go subversion?
> >
> > Well, this is a new module, and will be migrating this year anyway.  Is
> > there a reason to not use Subversion?
>
> Is arch/tla an option for Apache projects?

Not as far as I know. Mainly due to trying to keep the infrastructure on
just one solution, ie) I think someday cvs will not be an option too.

Hen


---------------------------------------------------------------------
To unsubscribe, e-mail: general-unsubscribe@jakarta.apache.org
For additional commands, e-mail: general-help@jakarta.apache.org


RE: Proposal: Jakarta HiveMind Project

Posted by "Noel J. Bergman" <no...@devtech.com>.
> Is arch/tla an option for Apache projects?

No.

CVS is what we've been using, Subversion is the intended migration path.

	--- Noel

---------------------------------------------------------------------
To unsubscribe, e-mail: general-unsubscribe@jakarta.apache.org
For additional commands, e-mail: general-help@jakarta.apache.org


RE: Proposal: Jakarta HiveMind Project

Posted by Zenaan Harkness <ze...@freedbms.net>.
On Wed, 2004-03-03 at 12:13, Noel J. Bergman wrote:
> > > > (3.2) CVS repositories
> > > > The package shall use a root branch of the jakarta-hivemind CVS
> > > > repository.
> > > Not Subversion?
> > Is there a pressing reason to go subversion?
> 
> Well, this is a new module, and will be migrating this year anyway.  Is
> there a reason to not use Subversion?

Is arch/tla an option for Apache projects?

ta
zen

-- 
* Debian Enterprise: http://debian-enterprise.org/
* Homepage: http://soulsound.net/
* PGP Key: http://soulsound.net/zen.asc
* Please respect the confidentiality of this email as sensibly warranted.

---------------------------------------------------------------------
To unsubscribe, e-mail: general-unsubscribe@jakarta.apache.org
For additional commands, e-mail: general-help@jakarta.apache.org


RE: Proposal: Jakarta HiveMind Project

Posted by "Noel J. Bergman" <no...@devtech.com>.
> > > (3.2) CVS repositories
> > > The package shall use a root branch of the jakarta-hivemind CVS
> > > repository.
> > Not Subversion?
> Is there a pressing reason to go subversion?

Well, this is a new module, and will be migrating this year anyway.  Is
there a reason to not use Subversion?

> Are we svn 1.0 capable at this point?

We're still running a development version, I believe.  I just put in an
inquiry asking about the update.

> From what I can tell the IDE tools (e.g. subclipse) haven't been updated
> for the 1.0 release yet.

emacs works just fine.  What more do you need?  ;-)

Ok, for the humor impaired, see: http://scm.tigris.org.  Not all of the
client code appears to be updated, yet.  I don't know if there were any
critical changes between 0.37 (linked with Subclipse) and 1.0 that would
prevent Subclipse from working.

	--- Noel


---------------------------------------------------------------------
To unsubscribe, e-mail: general-unsubscribe@jakarta.apache.org
For additional commands, e-mail: general-help@jakarta.apache.org


RE: Proposal: Jakarta HiveMind Project

Posted by di...@multitask.com.au.
"Noel J. Bergman" <no...@devtech.com> wrote on 03/03/2004 10:50:44 AM:

> Howard,
> 
> To be clear, this is a proposal to move HiveMind out of Commons Sandbox 
into
> Jakarta proper?  Correct?
> 
> Just to address some of the infrastructure questions that will come up 
if
> this is approved:
> 
> > HiveMind represents a generous donation of code to the ASF by WebCT
> 
> > (3) Identify any Jakarta resources to be created
> > (3.1) mailing lists
> >   hivemind-user@jakarta.apache.org
> >   hivemind-dev@jakarta.apache.org
> 
> Pretty standard fare.  We'll need some additional information, such as
> moderators, etc.  See 
http://www.apache.org/dev/project-creation-form.txt.
> 
> > (3.2) CVS repositories
> > The package shall use a root branch of the jakarta-hivemind CVS
> repository.
> 
> Not Subversion?

Is there a pressing reason to go subversion?

Are we svn 1.0 capable at this point? 

>From what I can tell the IDE tools (e.g. subclipse) haven't been updated 
for the 1.0 release yet.
--
dIon Gillard, Multitask Consulting

RE: Proposal: Jakarta HiveMind Project

Posted by "Noel J. Bergman" <no...@devtech.com>.
Howard,

To be clear, this is a proposal to move HiveMind out of Commons Sandbox into
Jakarta proper?  Correct?

Just to address some of the infrastructure questions that will come up if
this is approved:

> HiveMind represents a generous donation of code to the ASF by WebCT

> (3) Identify any Jakarta resources to be created
> (3.1) mailing lists
>   hivemind-user@jakarta.apache.org
>   hivemind-dev@jakarta.apache.org

Pretty standard fare.  We'll need some additional information, such as
moderators, etc.  See http://www.apache.org/dev/project-creation-form.txt.

> (3.2) CVS repositories
> The package shall use a root branch of the jakarta-hivemind CVS
repository.

Not Subversion?

> (3.3) Jira
> The package shall be listed as top level project, "Jakarta HiveMind",
> within the "Jakarta" category.  It shall use the key "HIVEMIND".

Anything in bugzilla that we need to migrate?

> (3.4) Wiki
> A moinmoin wiki shall be created, as
http://wiki.apache.org/jakarta-hivemind

Anything that you need migrated from the UseMod:Wiki instance?

> (4) Identify the initial set of committers to be listed in the Status
File.
> Howard M. Lewis Ship <hl...@apache.org>
> Prashant Nayak <pr...@webct.com>
> Harish Krishnaswamy <hk...@comcast.net>
> Knut Wannheden <kn...@paranor.ch>
> Erik Hatcher <er...@ehatchersolutions.com>

You, Harish, and Erik are fine, as far as I can see.  If the project is
accepted by the PMC, Knut Wannheden can certainly be voted karma, but a
signed CLA needs to be recorded before access is granted.  In the case of
Prashant Nayak, I believe that we will need two CLAs for him: an individual
CLA and a corporate CLA from WebCT to authorize the contributions of WebCT
employees.

	--- Noel


---------------------------------------------------------------------
To unsubscribe, e-mail: general-unsubscribe@jakarta.apache.org
For additional commands, e-mail: general-help@jakarta.apache.org