Packaging Best Practices - Modularity

> Producing and Maintaining Packages

Overview

...

Best Practices

# Title Description
1. ... ...

Further Details

  • Minimize Upstream Impact: Avoid upstream design and build system impact to the distributions.
    • There will be cases where the package design efforts help identify modest layout and build improvements, but generally the resulting packages should not impose significant impact on the distribution's design and build system.
  • Reuse Existing Build Output: Wherever feasible, reuse as much of the existing binaries from the projects' build output. Ideally, the packaging process should feed directly off the results of the distribution's existing build facility.
  • Retain Existing Filesystem Layout: Strive to retain the existing filesystem layout of the distribution where one already exists. Doing so will help minimize the switching costs for users who have already used the unpackaged zip form of a distribution.
    • At the same time, use the package design efforts to identify improvements to filesystem layout and out-of-the-box user experience.
  • Different Packages Based on Usage: Provide separate packages for those parts of a distribution that are often downloaded and/or used at different times and potentially by differently people. Consider:
    • Likelihood of components being used separately
    • Embedding scenarios
    • Cases where distributions may want to obtain packages for their own build process
    • Shear size of a component
  • Err Toward Coarse Grained Packages: Avoid gratuitous packages. If several components are usually used together, then consider including them in the same package.
  • Accept Existing Deployment Archives as is: Avoid trying to break up deployment-ready archives such as WAR files. Although WAR files typically contain libraries of external dependencies, don't try to represent all of those external dependencies in their own packages. Only do so when the distributions already deliver the external dependencies outside of such archives.
  • Avoid Private Copies of Binaries: Where feasible, avoid packaging private copies of binaries. Apart from the deployment-ready archives considerations mentioned above, identify opportunities to establish package level dependencies on external dependencies and plan to deliver those external dependencies in package form such that the process of delivering updates to those external dependencies can be streamlined.

Example

...















Confluence User's Guide
Plugins Available

Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.

Sign up or Log in to add a comment or watch this page.


The individuals who post here are part of the extended Sun Microsystems community and they might not be employed or in any way formally affiliated with Sun Microsystems. The opinions expressed here are their own, are not necessarily reviewed in advance by anyone but the individual authors, and neither Sun nor any other party necessarily agrees with them.

Copyright 1994-2009 Sun Microsystems, Inc.
Powered by Atlassian Confluence
Sun Guidelines on Public Discourse Privacy Policy Terms of Use Trademarks Site Map Employment Investor Relations Contact