Adobe Systems, Inc.

Contributing to AMG

Overview

We are very excited to allow other developers the opportunity to work on the Adobe Media Gallery with us. Here we will discuss the general guidelines we will use to manage the development and release of the Adobe Media Gallery.
This process is in place to acccomplish the following goals:
  • That no malicious, illegal, or third-party code will be submitted to mission-critical code in the depots.
    • That more than one AMG developer has a chance to look at the design of code being submitted to AMG.
    • That there is always a stable, working copy of the most current code in the code repository.

License Guidelines

All code contributions must be under the MIT license and copyright of the Adobe opensource project. By contributing code you agree that we can distribute the contribution under the terms of the MIT license, that it can be distributed without any royalties, copyright, trademark, patent or other legal lock ups. Open source means no discrimination against any group or individual that may wish to use the code.
The following boilerplate licensing information must be the first lines of any source file(s) submitted to opensource.adobe.com (where {year} and {name} are substituted with appropriate values):
/*
    Copyright 2006-{year} {name}
    Distributed under the MIT License (see accompanying file LICENSE_1_0_0.txt
    or a copy at http://opensource.adobe.com/licenses.html)
*/

/*************************************************************************************************/

Submission Guidelines

The fundamental philosophy by which we will manage development and contributions to the AMG is by a sandbox-review method.

The AMG release Depot

The //amg/release depot is the official source release of the Adobe Media Gallery. It is updated every release cycle by one of Adobe's opensource.adobe.com developers.

The AMG submission Depot

The //amg/submission depot is the current, stable, working release depot. Changes are committed to this depot by an authorized AMG developer pending a review (see below).

The AMG sandbox Depot

The //amg/sandbox depot is the main location for hacking. Branches should be made into this depot from //amg/submission to allow for developers to code against the current (stable) development state. Developers are encouraged to collaborate with other developers on code and branching of the sandboxes is also acceptable. All branches should reside in the sandbox depot under a top-level user directory.

The Review Process

All developers need to work out of sandboxes created by branching //amg/submission into the //amg/sandbox depot.
Creating a new branch under the //amg/sandbox depot for multiple-developer work is fine, but it should still reside inside a user's folder to avoid too many folders at the top level.
When you are ready to have code reviewed, please post a description of what you have done to amg-devel at lists dot sourceforge dot net list with a review request. An approved review developer will contact you when reviewers are ready and it is ok to go ahead and overwrite the review depot with your working sources.
An approved AMG review developer then engages in a review process with the developer(s) over the contents of the //amg/review depot. The review may or may not succeed, or may succeed pending requested changes that must be made back in the sandbox.
When a chunk of code passes review, the approved AMG review developer will integrate the //amg/review depot into //amg/submission.

Other Enforced Policies

Code formatting is a highly-debated issue between programmers. Adobe is no stranger to many seasoned developers having widely differing formatting styles and preferences. Please try to keep the format of submitted code in line with the rest of the project. We request code submissions to have as close to the same format as what is already present in the code base.
All source files (code and documentation) should be named only with lowercase, 7-bit ASCII alphanumeric characters and the underscore ('_') character ([0-9a-z_]). This is to ensure maximum cross-platform, cross-locale compatibility.
For legal reasons, no third-party code is allowed in any opensource.adobe.com depot. Only code intended for submission to the Adobe Media Gallery is permitted.

Example Client Setup

Client Mapping Specification (clientspec)

The following might be an example of a developer's client specification set up by executing p4 client on the developer's machine. Note that one must first have a development account on the opensource.adobe.com:10666 Perforce depot.
# A Perforce Client Specification.

Client:	trbrown

Owner:	trbrown

Description:
	This is the client specification for Trent Brown's primary development machine.

Root:	C:\Code\amg

Options:	noallwrite noclobber compress unlocked nomodtime normdir

LineEnd:	local

View:
	//amg/release/... //trbrown/release/...
	//amg/review/... //trbrown/review/...
	//amg/sandbox/trbrown/... //trbrown/sandbox/trbrown/...
	//amg/submission/... //trbrown/submission/...
Note in the above that the 'compress' flag is set. This will generally speed up transactions between your computer and the opensource.adobe.com Perforce depot.

Sandbox Branch Specification (branchspec)

A branchspec is used to map the submission depot to your personal working sandbox. You create a branchspec with the p4 branch {name}_sandbox command, where {name} is your account name on the opensource.adobe.com Perforce server.
Updates made to the submission depot can then be integrated with the p4 integrate -1 -d -i -t -b {name}_sandbox command (followed by a p4 resolve to merge potential conflicts).
Integrating your sandbox to the review depot is as simple as executing p4 integrate //amg/sandbox/{name}/sandbox... //amg/review/.... Note that you should purge the contents of the review with a p4 delete //amg/review/... first (once you are OK'd to do so by the AMG review developer).
Below is a sample branchspec to map submission to a user's sandbox. Note that the map goes to a sandbox directory within the user's directory to allow for other directories in the sandbox (including other sandboxes):
# A Perforce Branch Specification.

Branch:	trbrown_sandbox

Owner:	trbrown

Description:
	Maps submission to Trent Brown's working sandbox.

Options:	locked

View:
	//amg/submission/... //amg/sandbox/trbrown/sandbox/...
Note in the above that the 'locked' flag is set.

Conclusion

Hopefully this results in an environment in which people are comfortable working, ultimately resulting in the best code we can produce as a community. Please let us know if you have any questions or comments- we would love to hear them. Thank you again for the interest you have expressed in the Adobe Media Gallery and the contributions you have made thus far!

Copyright © 2006 Adobe Systems Incorporated.

Use of this website signifies your agreement to the Terms of Use and Online Privacy Policy.