Why not improve existing tools like Trac, Redmine or Bugzilla?
---------------------------------------------------------------------

One word.  Scalability.

Ok, two words.  Scalability and Performance

Ok, three words:  Scalability, Performance, and Flexibility

Seriously though, we didn't think that any of the existing systems have
actually hit the right usability, scalability, or flexibility targets that
we needed to hit, and we knew that it would be a **lot** of work to get
any of them to do what we needed.

But we knew e-mail integration was going to be a big deal to our forge,
so we did take a long look at Roundup, which is a very well designed
system build from the ground up around the idea of e-mail integration.

If you were so inspired by Roundup, why not just use it?
---------------------------------------------------------------------

We liked the flexible schema system provided by Roundup's HyperTable layer,
but thought that native MongoDB bindings were both cleaner, faster, and
ultimately more powerful.

Sure we sacrifice the flexibility of Roundup's
backend, but our main goal is to make usable, high performance system,
not to maximize the number of backend storages systems supported.

Why create all the apps as plugins?
---------------------------------------------------------------------

We know that some projects are going to want more locked down
access controls in their bug trackers, or more workflow based
processes.  These things are inevitable, and we really do want
to support them, but at the same time they are going to conflict
with the way many other projects want to work.

Building a plugin (tool in Allura terms) system, and standard
integration points makes it possible to serve everybody in one
way or another.

Why not just allow web-based extensions?
---------------------------------------------------------------------

We talked about this quite a bit, and decided that we could write local
native tools more quickly and easily, and that we could build a
local app tool that proxied out to an external webapp, and that
we could provide a lot more flexibility by allowing custom
external webapp proxies -- which brought us right back to local
tools.
