Skip to content
Skip to breadcrumbs
Skip to header menu
Skip to action menu
Skip to quick search
Quick Search
Browse
Pages
Blog
Labels
Attachments
Mail
Advanced
What’s New
Space Directory
Feed Builder
Keyboard Shortcuts
Confluence Gadgets
Log In
Sign Up
Dashboard
Maven User
Copy Page
You are not logged in. Any changes you make will be marked as
anonymous
. You may want to
Log In
if you already have an account. You can also
Sign Up
for a new account.
This page is being edited by
.
Paragraph
Paragraph
Heading 1
Heading 2
Heading 3
Heading 4
Heading 5
Heading 6
Preformatted
Quote
Bold
Italic
Underline
More colours
Strikethrough
Subscript
Superscript
Monospace
Clear Formatting
Bullet list
Numbered list
Outdent
Indent
Align left
Align center
Align right
Link
Table
Insert
Insert Content
Image
Link
Attachment
Symbol
Emoticon
Wiki Markup
Horizontal rule
tinymce.confluence.insert_menu.macro_desc
Info
JIRA Issue
Status
Gallery
Tasklist
Table of Contents
Other Macros
Page Layout
No Layout
Two column (simple)
Two column (simple, left sidebar)
Two column (simple, right sidebar)
Three column (simple)
Two column
Two column (left sidebar)
Two column (right sidebar)
Three column
Three column (left and right sidebars)
Undo
Redo
Find/Replace
Keyboard Shortcuts Help
<p><strong>Why Enterprise needs unified build platform?</strong></p> <p>Sooner or later every single company that builds their own software comes to implementing some kind of generalized build & deploy system. While meeting the need, such a system does not add any competitive advantage to the core business. It is like if each company will start creating their own programming languages: it could be made highly optimized for a particular busines, but maintaining one sucks in more money that it generates. And don't forget the people around it: how much expertize is preserved when developers rotate or simply resign? What kind of support does such a system gets?</p> <p> This paragraph may evolve into a huge discussion, but in my opinion - creating and maintaining commodity software only makes sense if it is the primary business of an institution, in all other cases (we are discussing commercial enterprises) obtaining commodity software is preferable and saves a lot of money. Especially clear this becomes when the primary business changes: grows, modifies requirements.</p> <p>This may sound trivial, but a community can achieve more that any single entity. And if 10 entities manage to invest 1 unit of work into a community project, the return is 10-fold right away. Provided that the direction of development is agreed upon by all 10 <img class="emoticon emoticon-smile" data-emoticon-name="smile" border="0" src="/s/en_GB/3278/15/_/images/icons/emoticons/smile.png" alt="(smile)" title="(smile)" /></p> <p>I think it' the right time to get together and discuss all that. The upcoming ApacheCon in Austin, TX Oct 9-13 2006 seems to be reasonably good opportunity to do that.</p> <p><strong>What is different for Maven in the Enterprise</strong> </p> <p>In my understanding Maven for Enterprise has a set of unique characteristics. Most of these characteristics are common sense options for almost all projects, but in the enterprise environment they sease being options and become requirements.</p> <p>As a build platform, Maven is expected to deliver:</p> <ul> <li>Speed</li> <li>Reliability</li> <li>Scalability</li> <li>Documentation</li> <li>Training</li> <li>Support</li> <li>Stable Community - <em>this comes from being successful OSS project</em></li> </ul> <p><strong>Versioning support</strong><br /> A very interesting challenge is version maintance: if I have a thousand developers working on 500 projects - keeping versions in sync is a hustle. Some of it may be addressed by the release plugin, but that one is very limited in terms of project structure support. I think we are coming to a more fundmental requirement here: dependency graph manipulation tool, which supports:</p> <ul> <li><strong>snapshot creation</strong> operation: a project is being modified, it needs to be marked as a snapshot</li> <li><strong>snapshot promotion</strong> operation: project is approved into production - all dependents (not dependencies) should be modified as well</li> <li>operations are <strong>SCM aware</strong>: we should be able to control whether operation should affect all (some?) active branches and non checked out dependents</li> </ul> <p><strong>Licensing support </strong></p> <p>In the enterprise it is very important to know and quickly access the license of any project. Licence may have a version, it may be just another, specially designated dependency that resolves into either a predefined set of known licenses or a new URI for the license?</p> <p>A clean separation "internal project" vs. "external dependency" might be desirable. We can do it by, say, groupId. Is there a need in more granular project attributes?</p> <p><strong>Enterprise Development cycle</strong><br /> Maybe we should define a reference "enterprise software development cycle" and brainstorm how well Maven supports various aspects of it? Normally we always stopped at unit tests, completly ignoring QA/regression testing, saying: OK - it may happen behind the seen and then - by miracle - project is released; version may or may not change. Well - this is not going to fly if you try to sell it to a big company's software development management; first question will be: how does it support <strong>my</strong> real cycle?</p> <p>Here is an attempt to define coarse cycle phases we can refine and generalize:</p> <ul> <li>initiation: a new project is either created in or checked out of SCM</li> <li>development - iterative process that includes unit and maybe integration testing <ul> <li>development includes remote builds when intermediate code is checked into SCM, built by a "build server" - Continuum and results shipped back to the developer</li> <li>intermediate product maybe be deployed into QA environment and tested by developer(s) as part of development</li> </ul> </li> <li>QA deployment & acceptance <ul> <li>may result in firing a separate test battery: code coverage, PMD - etc.</li> </ul> </li> <li>QA - iterative process resulting in the next bullet.</li> <li>Promotion - project is switched from snapshot to a version</li> <li>Production deployment (release?)</li> <li>Cycle repeats</li> </ul> <p>I fully realize that this is an over simplified description, but we need to start with something and grow the meat.</p>
Please type the word appearing in the picture.
Attachments
Labels
Location
Watch this page
< Edit
Preview >
Loading…
Save
Cancel
Next hint
search
attachments
weblink
advanced