incubator-cvs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Apache Wiki <wikidi...@apache.org>
Subject [Incubator Wiki] Update of "IsisProposal" by RobertMatthews
Date Sun, 22 Aug 2010 21:00:57 GMT
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Incubator Wiki" for change notification.

The "IsisProposal" page has been changed by RobertMatthews.
http://wiki.apache.org/incubator/IsisProposal?action=diff&rev1=6&rev2=7

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

  The following presents the proposal for creating a new project within the Apache Software
Foundation called Isis.
  
  == Abstract ==
- Isis will be a pojo-based framework to rapidly develop and deploy domain-driven (DDD) applications.
+ Isis will be a pojo-based framework to rapidly develop and enterprise level deploy domain-driven
(DDD) applications.
  
  == Proposal ==
- The Isis project will bring together a collection of open source projects that collectively
support the rapid development of domain-driven applications.  The heart of Isis is the Naked
Objects Framework, an open source project that has been around since 2002.  In addition, it
will incorporate a number of sister projects that build on Naked Objects' pluggable architecture,
which extend the reach of Naked Objects in several key areas.
+ The Isis project will bring together a collection of open source projects that collectively
support the rapid development of domain-driven applications.  The heart of Isis is the Naked
Objects Framework, an established open source project that has been around since 2002.  In
addition, it will incorporate a number of sister projects that build on Naked Objects' pluggable
architecture, which extend the reach of Naked Objects in several key areas.
  
- In addition, the project will aim to make it easy for new contributors to develop their
own plugins, thereby further extending the reach of the framework to other complementary open
source frameworks (either within Apache or outside of it).
+ In addition, the project will reorganise the existing projects to logically separate out
the components and so improve the development process, make it easier for new contributors
to develop their own plugins, thereby further extending the reach of the framework to other
complementary open source frameworks (either within Apache or outside of it).
  
  == Background ==
  Naked Objects is an open source Java framework that was originally developed to explore
the idea of enterprise systems that treat the user as a "problem solver, not a process follower".
 Conceived by Richard Pawson, the first version of the framework was written by Robert Matthews
(2002).  Richard and Rob also wrote a book, Naked Objects (Wiley, 2002), to explain the idea.
  
- More generally, Naked Objects is an implementation of the naked objects architectural pattern.
 In its purest form, "all" the developer has to do is develop their domain model as pojos;
Naked Objects takes care of rendering those pojos in a UI, generated reflectively at runtime.
 You can think of it as analogous to Hibernate and other ORMs, but rather than reflecting
the pojo into the persistence layer, they are reflected into the presentation layer.  A number
of other open source frameworks cite it as their inspiration, including JMatter, OpenXava,
and Trails.
+ More generally, Naked Objects is an implementation of the naked objects architectural pattern.
 In its purest form, "all" the developer has to do is develop their domain model as pojos;
Naked Objects then provides: a user interface by rendering those pojos; persistence by extracting
the content of the pojos; security by wrapping access to the pojos; remoting by turning local
calls into remote ones; and localisation by adapting all the names used in the metamodel.
 All of this is done reflectively at runtime so that the developer can concentrate on the
most important aspect - the application itself.  You can think UI generation as analogous
to Hibernate and other ORMs, but rather than reflecting the pojo into the persistence layer,
they are reflected into the presentation layer.  A number of other open source frameworks
cite it as their inspiration, including JMatter, OpenXava, and Trails.
  
  Over this time Naked Objects has attracted a fair degree of attention among the early adopter
crowd, generally splitting opinion as either a very good idea or a very bad one.  A common
misconception is that naked objects is only appropriate for simple CRUD based applications.
 While developing CRUD applications is indeed trivial, an important innovation is that the
UI generated by NO also renders the pojo's commands/behaviors (we call them actions).  Simply
stated: any public method that does not represent a property or collection is rendered so
it can be invoked, eg with a button, a menu item or a hyperlink.  We characterize entities
with such behaviors as "behaviorally complete".  It's OO as your mother taught it to you.
  
@@ -62, +62 @@

  === 3. Standardize package names ===
  Naked Objects package names are currently:
  
+  * org.nakedobjects.applib.* and org.nakedobjects.service.* for the applib and domain services
   * org.nakedobjects.core.* for the  core
   * org.nakedobjects.plugins.xxx for each plugin
  
- These should move to org.apache.isis.core.* and org.apache.isis.plugins.xxx
+ These should move to org.apache.isis.application.*, org.apache.isis.core.* and org.apache.isis.plugins.xxx
  
  The sister projects package names are currently:
  
@@ -93, +94 @@

  
  == Initial Goals ==
  The following outlines some of the goals we have set ourselves during incubation.  Of course,
these may change as we proceed and learn more.
- 
- [ co-authors, please edit ... ]
  
   * Prepare ground by defining the 3 area of Isis: Application; Framework; and Plugin.
   * v 0.1 - source code combination and rationalization (as per above); all tickets from
Naked Objects TRAC wiki addressed or transferred.
   * v 0.2 - ensure existing documentation (of which there is a reasonable amount) is correctly
related to each project now that the documentation has been separated out.
-  * v 0.3 - replace bootstrapping with Guice/JSR-330 support; use JSR-299 internally (if
appropriate); use META-INF/Services to locate components
+  * v 0.3 - replace bootstrapping with Guice/JSR-330 support; use JSR-299 internally (if
appropriate); use META-INF/Services to locate component.
+  * v 0.4 - Scimpi web application release. Introduce dynamic view design into the DND viewer.
-  * v 0.4 - Wicket viewer release, NOSQL release (using Couchd, MongoDB and BerkeleyDB).
+  * v 0.5 - Wicket viewer release, NOSQL release (using Couchd, MongoDB and BerkeleyDB).
-  * v 0.5 - SQL persistor release, CLI viewer release.
+  * v 0.6 - SQL persistor release, CLI viewer release.
-  * v 0.6 - porting to Apache implementations: JPA persistor ported from Hibernate to Apache
OpenJPA; restful objects ported from resteasy to either Apache Wink and/or Apache CXF.
+  * v 0.7 - porting to Apache implementations: JPA persistor ported from Hibernate to Apache
OpenJPA; restful objects ported from resteasy to either Apache Wink and/or Apache CXF.
-  * v 0.7 - manageability: integrate with JMX for runtime management; provide profiling of
client/server and webapps (eg serialization vs domain logic vs domain services vs object store
timings)
+  * v 0.8 - manageability: integrate with JMX for runtime management; provide profiling of
client/server and webapps (eg serialization vs domain logic vs domain services vs object store
timings)
-  * v 0.8 - Portal integration: Examine and implement support for compatible portals. Under
consideration: [[http://www-01.ibm.com/software/websphere/portal/|WebSphere Portal Server]].
+  * v 0.9 - Portal integration: Examine and implement support for compatible portals. Under
consideration: [[http://www-01.ibm.com/software/websphere/portal/|WebSphere Portal Server]].
-  * v 0.9 - contract tests for all major plugin APIs (object stores, authentication, authorization,
remoting).
+  * v 1.0 - contract tests for all major plugin APIs (object stores, authentication, authorization,
remoting).
-  * v 1.0 -
  
  We also have a number of overarching goals:
  
-  * steadily ratchet up the code coverage
+  * steadily improve the code coverage
   * clean up the APIs. Our original requirement was to recompile as J# code so some of the
code is prior to generics and the use of functional libraries.
-  * steadily reduce the amount of proprietary code and just the code size in general.
+  * steadily reduce the amount of proprietary code, and the code size in general.
  
  == Current Status ==
- Naked Objects 4.0.0 was released at the end of 2009, broadly corresponding to the release
of Dan's book.  These are released into the Maven central repo, along with an application
archetype for quick-start.  The three sister projects mentioned in Dan's book (restful, tested,
jpa) are at 1.0-beta-3, but not formally released into the Maven central repo.  The remaining
sister projects are in alpha status.
+ Naked Objects 4.0.0 was released at the end of 2009, broadly corresponding to the release
of Dan's book.This is released into the Maven central repo, along with an application archetype
for quick-start.  The three sister projects mentioned in Dan's book (restful, tested, jpa)
are at 1.0-beta-3, but not formally released into the Maven central repo.  The remaining sister
projects are in alpha status.
  
- The main committers for the codebases to date have been Robert Matthews and Dan Haywood.
 Both Rob and Dan work on the NOF core, and each work independently (reflecting their individual
interests) on their respective plugins.  Much work was done on the core by both Rob and Dan
leading up to the release of NOF 4.0.0, and we are now reasonably happy with it.  Much work
remains (see above) in the area of plugins.
+ The main committers for the codebases to date have been Robert Matthews and Dan Haywood.
 Both Rob and Dan work on the NOF core, and each also works independently (reflecting their
individual interests) on their respective plugins.  Much work was done on the core by both
Rob and Dan leading up to the release of NOF 4.0.0, and we are now reasonably happy with it.
 Much work remains (see above) in the area of plugins; there is work to complete and improve
the existing ones and many opportunities to develop new ones.
  
  We readily support users on the NO forum (on SourceForge) and also on the forum for Dan's
book (on pragprog.com).  As a consequence of Dan's book, a GWT-based viewer (non open source)
has been developed separately, and we have provided support for this (and hope it will be
contributed back to the framework in the future).
  
- Over the years we have received some patches for the framework, which we have incorporated,
but not many.  Part of the reason for this, we believe, is that until NOF 4.0.0 the architecture
of the codebase was not particular clean, making it difficult for would-be contributors to
provide small patches.  We think that NOF 4.0.0 addresses this issue, but we need to explain
the architecture better (see current goals) to bring up participation.
+ Over the years we have received some patches for the framework, which we have incorporated,
but not many.  Part of the reason for this, we believe, is that until NOF 4.0.0 it had a monolithic
architecture, making it difficult for would-be contributors to provide small patches.  We
think that NOF 4.0.0 addresses this issue, but we need to explain the architecture better
(see current goals) to bring up participation.
  
  == Community ==
  We recognize that the lack of a large (or at least, vocal) user community is the weakest
part of our proposal.  That said, we do have a steady trickle of queries on both the Naked
Objects forum, and on the forum for Dan's book.  Getting NOF 4.0.0 released has rekindled
interest in at least one long-time user who is helping Rob to test one of the object store
plugins, while we've also picked up commitment to help with this Apache proposal from a couple
of people via the book forum.
@@ -145, +144 @@

  
   * Kevin Meyer, South Africa-based freelance developer and business analyst.  Kevin has
been working primarily in a testing role, both on the SQL Object Store with Rob and on the
Wicket viewer with Dan.  Kevin has recently started contributing fixes to both.
  
-  * Dave Slaughter, US-based developer/consultant who is the Lead of the Software and Specialty
Engineering group at SM&A.  Dave has spent his career in the development of enterprise
applications for companies such as Siemens, Sprint and Lockheed Martin.  He has started porting
on the DnD viewer to SWT, and has also started improving code coverage of the XML persistor.
+  * Dave Slaughter, US-based developer/consultant who is the Lead of the Software and Specialty
Engineering group at SM&A.  Dave has spent his career in the development of enterprise
applications for companies such as Siemens, Sprint and Lockheed Martin.  He has started a
SWT viewer and has also started improving code coverage of the XML persistor.
  
  As a result of a correspondence on the incubator mailing list, we have also had interest
from:
  
@@ -165, +164 @@

  There are no Apache projects that we are aware of that compete with Naked Objects.  At its
heart, NO is (a) a metamodel, and (b) a container that acts as an abstraction over a persistence
layer, using the identity map pattern.
  
  == Known Risks ==
- The biggest risk is that we fail to build a diverse community during incubation, leaving
a risk that the project could be orphaned.
+ The biggest risk is that we fail to build a diverse community during incubation, opening
up the possibility that the project could be orphaned.
  
- That said, there is little risk that either Rob or Dan will move onto other interests; we
are both independent consultants and have the resources and inclination to continue working
on the codebase.  Indeed, with Rob now working only on the Java and not .NET version and Dan
having finished his book, we have more resources now than at any time in the last couple of
years.
+ That said, there is little risk that either Rob or Dan will move onto other interests; we
are both independent consultants and have the resources and inclination to continue working
on the codebase.  Indeed, with Rob now working only on the Java version (and not the .NET
one) and Dan having finished his book, we have more resources now than at any time in the
last couple of years.
  
  == Inexperience with Open Source ==
- Although Naked Objects is an open source project, because the number of committers is so
small then we cannot claim great experience with open source.  Neither Rob nor Dan are committers
to any other open source project, though both have submitted occasional patches to the various
open source projects that we use.
+ Although Naked Objects is an open source project, the number of committers is so small then
we cannot claim great experience with open source.  Neither Rob nor Dan are committers to
any other open source project, though both have submitted occasional patches to the various
open source projects that we use.
  
  We are, however, comfortable users of open source projects.  We also appreciate that there
are lots of open source projects out there and that most developers will form an impression
of a project without necessarily ever trying it out.  This is one of the reasons why we feel
we need to bring the two different codebases together, and create a standard message about
what Apache Isis is about ("rapid development", "domain-driven design", "pluggable architecture",
"customizable UIs").
  
@@ -194, +193 @@

   * [[http://starobjects.org|starobjects.org]] - parent to Dan Haywood's sister projects;
references the various SF websites for the sister projects
  
  == Source and IP Submission Plan ==
- As mentioned earlier, the NO framework is ASLv2 but copyright Naked Objects Group Ltd. 
NOGL would be happy to donate the relevant rights to Apache, while Dan is also happy to donate
the various sister projects that he has written.   Having a single legal entity - ASF - owning
the copyright of all this software would be very desirable.
+ As mentioned earlier, the NO framework is ASLv2 but copyright belongs to Naked Objects Group
Ltd.  NOGL is happy to donate the relevant rights to Apache, while Dan is also happy to donate
the various sister projects that he has written.   Having a single legal entity - ASF - owning
the copyright of all this software would be very desirable.
  
  == External Dependencies ==
  Other than the Apache dependencies, all other open source projects used all have ASL v2.0
(eg Google Collections, cglib, objenesis),  BSD (eg Hamcrest, ASM), MPL (eg javassist) or
similarly permissive licenses.  We do also have a soft dependency on an LGPL-licensed library
(Hibernate) but during migration would look to migrate to the Apache equivalent (OpenJPA).

---------------------------------------------------------------------
To unsubscribe, e-mail: cvs-unsubscribe@incubator.apache.org
For additional commands, e-mail: cvs-help@incubator.apache.org


Mime
View raw message