views:

731

answers:

5

I read the following sentence in the Fluent NHibernate wiki:

...; however, for most greenfield applications (and quite a few brownfield ones too) auto mapping will be more than capable.

What are greenfield and brownfield applications?

+1  A: 

I think it might be related to the urban planning terms "greenfield land" and "brownfield land". Greenfield land is undeveloped land - agricultural, landscaping, or natural. Brownfield land is developed land.

A brownfield application is an existing application, while a greenfield application is one that is not yet made or is in very early stages of development.

Thomas Owens
Makes a lot of sense at least. But how would you get a brownfield application? Isn't applications built from scratch originally? When does it become brownfield?
Svish
A brownfield application usually refers to a major upgrade, or a redevelopment of an existing application where there are issues backwards compatibility to existing file formats, interfaces, modules, etc. Sometimes a brownfield application will be made greenfield by deciding to ignore all considerations of backwards compatiblity and start fresh.
jbourque
Brownfield would be a major enhancement or less-than complete rewrite of an existing live application. In other words, legacy code.
APC
A: 

I would guess it's an analogy to building

  • a greenfield site is virgin ground - i.e. a new project, starting a new software project from scratch
  • a brownfield site is one where existing structures need to dismantled first, i.e. building within an existing software project
Paul Dixon
+1  A: 

Greenfield apps: new development, no prior work done that poses constraints on your solution. I think the term comes from un "unplowed, green" field.

Brownfield: existing application, lots of existing stuff to consider, etc.

See this post.

tijmenvdk
+6  A: 

Fortunately Google was not down for me so I was able to find the following definitions within mere seconds.

Greenfield

in other disciplines like software engineering, a greenfield is also a project which lacks any constraints imposed by prior work. The analogy is to that of construction on greenfield land where there is no need to remodel or demolish an existing structure.

(from http://en.wikipedia.org/wiki/Greenfield_project)

Brownfield

Brownfield development is a term commonly used in the IT industry to describe problem spaces needing the development and deployment of new software systems in the immediate presence of existing (legacy) software applications/systems. This implies that any new software architecture must take into account and coexist with live software already in situ.

(from http://en.wikipedia.org/wiki/Brownfield_(software_development))

Bombe
"Fortunately Google was not down for me so I was able to find the following definitions within mere seconds." - Exactly why is this statement needed? I can sort of understand your being annoyed by a 'simple' question and adding this out of frustration or something, but why add the statement back after it's been removed?
AgentConundrum
A: 

Based on what I know of James Gregory (the guy behind Fluent NHibernate), I think the Wikipedia entry for brownfield is a little on the theoretical side. In Brownfield Application Development, we define it as:

a project, or codebase, that was previously created and may be contaminated by poor practices, structure, and design but has the potential to be revived through comprehensive and directed refactoring

Short version: An existing project that needs work but is still actively developed (unlike most legacy systems).