On 28/09/09 11:30 PM, David Pollak wrote:
> Indrajit,
>
> Excellent work!
>
> My thoughts inline.
Thank you :-) My response inlined too.
/Indrajit
>
> On Sun, Sep 27, 2009 at 1:44 PM, Indrajit Raychaudhuri
> <[email protected] <mailto:[email protected]>> wrote:
>
>
> Folks,
>
> As followup to the proposed goal of "Keeping lift-core neat and
> small", here is the first iteration of the revised structure of Lift
> codebase.
>
>
> liftweb
>
> - lift-core [10]
>
>
> lift-core currently means "everything Lift." I think we need another
> name, but none is jumping out at me.
Firstly, just realized there is a stupid typo. [10] should read [01].
Indeed, lift-core has a different connotation already. Moreover, with
the proposed member modules, a more apt name would help.
>
> - lift-base [02]
> - lift-actor
> - lift-util
> - lift-json [03]
> - lift-webkit [04]
> - lift-testkit [05]
>
> - lift-persistence [06]
> - lift-mapper
> - lift-record
> - lift-jpa
>
> - lift-modules [07]
> - lift-osgi
> - lift-wizard [08]
> - lift-widgets [09]
> - lift-machine
> - lift-textile
> - lift-facebook
> - lift-amqp
> - lift-xmpp
> - lift-openid
> - lift-oauth
> - lift-paypal
> - lift-jta
>
> - lift-archetypes
> - ...
>
> - lift-examples
> - ...
>
> - lift-site [10]
>
> - lift-resources [lift-varia, lift-infra ?] [11]
> - lift-root-model [12]
> - lift-site-skin
> - lift-installer
> - misc config resources (scaladoc, javadoc etc.)
>
> General notes (including some obvious ones):
>
> [A] lift-* prefix looks superfluous, but it's best to have one for all
> artifacts that generate jar (<packaging>jar</packaging>). Also Maven
> reactor feels happier when artifactId == directory_name (site
> generation, scm extrapolation etc., situation might have improved
> now).
>
> [B] The top level project categories (lift-core, lift-persistence,
> lift-modules etc.) are simple multi-module models at the moment and
> not meant to create anything other than pom. Therefore, lift-* prefix
> can go away. But they'll have to come back if we plan to generate 'one
> jar' in assembly mode per category (lift-core-all.jar, lift-
> persistence-all.jar etc.). This could be useful for 'get me
> everything, I don't care about size' people. But is it necessary? The
> alternative is to have empty 'meta modules' that pull up the necessary
> dependencies and can be included by the users in their project (quite
> similar to what lift-core does now).
>
> [C] The members in a project category (lift-mapper, lift-record etc.)
> would inherit the category model (lift-persistence in case of lift-
> mapper, lift-record). Related modules clubbed together helps similar
> configuration pulled up to the parent pom (improves DRY-ness). Added
> benefit: modules can be developed even outside Lift codebase with the
> given parent pom (available in global repo) and the developer won't
> have to worry about most of the infra related boilerplate
> configurations (couple of config still would need change though).
>
> [D] Presentations and other materials aren't really source code for
> inclusion in source repository. Can this go in wiki? (immediate
> problem: github doesn't take attachment). Has this been discussed
> earlier? They can go as a separate github project too.
>
>
> From an administrative perspective, having two repositories represents
> twice the work for me, so I'd rather everything from Lift committers
> stays in one repository. With that being said and with our new focus on
> not merging anything into Master without a review-board cycle, I propose
> that we have a "presentations" branch and people put their presos on
> this branch. Whenever someone merges their review-boarded code into
> master, they also merge in the presentations branch.
Ok, so as Heiko suggested, we can have a separate location (not part of
maven build reactor) for this.
>
>
> [E] The categorization is mostly based on my interpretation as a late
> entrant. If there is a different structure that fits the philosophy
> better (quite likely), this would get regrouped. (Tim ?)
>
> [F] The modules in a category can be further sub-grouped, but with
> caution. Basically, need the right mix between 'flat'-ness and deep
> nesting. Thoughts on this?
>
> [G] Each category can eventually be split up into separate projects
> and have their own release schedules (less frequent for core, more
> frequent for modules etc.). This might be little overkill at the
> moment. Just mentioned to enable us mind the long term perspective :)
>
> [H] Other points on the draft hierarchy (see the # in brackets above):
>
> [01] With these members, if lift-core doesn't sound as the right name,
> we need the right name. Provided the grouping is right that is.
>
> [02] Base interfaces for Lift (currently present in dpp_wip_actorized)
>
> [03] Doesn't really have to be part of Lift core in current form, but
> this is eventually meant to be part of Lift's JS infrastructure (thus
> kept here at the moment)
>
> [04] Candidate for decomposition. But kept intact at the moment. Would
> be taken up in next pass once the top level reaches steady state. This
> could either become a category of its own or a module with submodules.
>
> [05] Little unsure about it's intent and purpose, I could be
> completely mis-interpreting this. Thoughts from somebody with more
> understanding please :)
>
>
> The lift-testkit is supposed to be a set of tools to generate
> integration tests against the application. I would put it in a separate
> high-level package (perhaps lift-modules). It is used during testing,
> but should not, in my opinion, be part of a deployed WAR.
Taken. So lift-testkit could be under lift-modules. And applications
would typically use it under 'test' scope.
>
>
> [06] Doesn't have to be part of lift-core. Lift applications not using
> persistence doesn't have to need this.
>
> [07] Extra stuff, necessary iff one needs. Right now, I am putting
> 'everything else' here for lack of better place, but I see a scaling
> up issue there. This can turn out to be a place for all the 'nowhere
> else to go' modules. But we can take it up in next pass. Suggestions?
>
> [08][09] See #04 above. Can be subpackage of lift-webkit eventually
>
> [10] The website! The intent is to bring liftweb.net
> <http://liftweb.net> codebase into the
> streamlines structure. Can be deferred if this is not a burning need.
>
> [11] Recommendation for a good name?
>
> [12] The top level pom for Lift project. All models (the categories)
> are expected to inherit this. These categories doesn't necessarily
> have to belong to the same git repo.
>
>
> Let the discussion/debate begin!
>
> Cheers, Indrajit
>
>
>
>
>
> --
> Lift, the simply functional web framework http://liftweb.net
> Beginning Scala http://www.apress.com/book/view/1430219890
> Follow me: http://twitter.com/dpp
> Surf the harmonics
>
> >
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Lift" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/liftweb?hl=en
-~----------~----~----~----~------~----~------~--~---