What is release engineering? What is build engineering?
When I started working as a release engineer my boss described RE as being "the hub of the wheel," the go-between among disparate groups: program management, software development, installer engineering, marketing, QA, manufacturing. I think of <b>build engineering</b> as relating to building/assembling bits (usually by compiling source code into binaries). <b>Release engineering</b>, by my definition, is more concerned with packaging those bits (tarring, zipping, copying, creating ISOs, burning CDs/DVDs, publishing bits to the web) and/or delivering them to the customer.
Some people see release engineering as simply burning CDs & DVDs for manufacturing or distribution. For others it can involve participation in the development schedule, designing the build harness, running manual and/or automated daily & milestone builds, smoketesting, delivering bits, and archiving the build environment.
Here's the wikipedia definition of Release Engineering: http://en.wikipedia.org/wiki/Release_engineering
I'd be interested to hear others' definitions/ideas about build & release engineering.
Jim Warhol, Software Tools Build & Release Engineering, Sun Microsystems, Inc.
[1246 byte] By [
JRWa] at [2007-11-26 20:08:09]

# 2
Hi Jim!
I think the Wikipedia entry sums it up well on this line:
"Release engineering attempts to bring consistency, reproducibility, and verifiability to the build and release cycle."
By providing a centralized function, we don't just provide consistency between releases of a product. We also ensure that products originating from different development teams have a consistent look to them. They provide the raw materials (binaries or packages), and we organize them into products that have a similar structure and layout. It helps our customers (internal and external) when they receive products in a consistent format.
-- Alan Steinberg
Software Release Engineering
Sun Microsystems, Inc.
# 3
Personally, I break the field up into three subfields, although the tend to merge back together when i think of the big picture. The first is configuration management, as Serge says. Without knowing what your environment is and controlling it (and documenting it!), it's really hard to end up with a robust and repeatable process.
I generally think of build engineering as all of the steps that convert the raw materials from source and binary repositories into a usable output. Since many of the different teams that consume build output have different needs, the builds need to be flexible and extendable.
Release engineering has always been the "fuzziest" part of the business to me.It can cover anything from just uploading build product to a web site for downloading to creating physical media to managing test/production deployment areas.
In some ways, I really think of the work in terms of what it provides. The key is that "release engineering" is really just a collection of services that are provided to customers (even/especially when those 'customers' are internal consumers working for the same company). What I mean by that is that in most cases, successful RE work should make other teams in the software organization be more effective and efficient.
For example, providing a fast and easy build harness so that developers can test their changes before they check in reduces disruptions to everyone. Promoting only validated builds to QA means that they don't start testing a bad build and waste a bunch of time. All of the aspects of configuration, build, and release engineering are really just a general approach to providing a clean, robust, reliable process to collect data, assemble/compile it in a stable way, and deliver the output to people who need to consume it.
# 4
Good point Alan, about Wikipedia!
When we're talking about build engineering then, accordingly to Wikipedia, we're talking about build automation. So, build automation instead of build engineering, configuration management & change management instead of configuration engineering... Right?
I don't remember who told me that discussion between professionals always goes to discussion about term definition...
Serge Burlyga
Build & Infrastructure Engineering
Sun Microsystems, Inc.
# 5
Some more info -->
Release engineering is frequently abbreviated as "releng".
Release engineer is one who tracks changes in a configuration management system or revision control system.
Here is a good article about "Release Engineering" on the WikiPedia -->
http://en.wikipedia.org/wiki/Release_engineering