[Zope] ArsDigita .. request for comments

glyph@twistedmatrix.com glyph@twistedmatrix.com
Mon, 6 Mar 2000 15:18:23 -0500 (EST)


On  6 Mar, Andrew M. Kuchling wrote:

>      Your development technology doesn't matter.

Despite your following (very good) points, this is not true.  It leads
to conclusions like "Perl is just as readable as Python", "Let's just
use C, it can be made as portable as Java", "We should use Lisp for
this 3D first-person shooter, we just need a better algorythm than
previous C implementations."

A better way to phrase this is:

	Your development technology is only one piece in a larger
	puzzle.

I've recently switched a rather large project from Java to Python --
throwing out nearly 2 years of work in the process -- and I have
noticed an immediate increase in development speed.  Changing
development technologies was a GREAT idea; but only because it was
considered within the framework of the developers we had, the skills
they had, and the relative advantages of both frameworks.

The project had a high dependence on lists and hashes.  Changing to
python increased performance (all these data-types are native in C, in
python; profiling our code shows that it spends most of its time
inside java.util.Hashtable), scalability (Java has lots of hard limits;
a max of a few thousand interned strings, 32M of RAM per process unless
you start diddling command-line arguments, and GC gets unbelievably
slow if you do that), reliability (the JVM on Linux is buggy; python is
pretty robust if you're not using any crazy native modules ^_^), and
last but not least, we get the source to our tools so we can improve
them ourselves.

> I wish more managers knew this.  You can build interesting
> applications in Zope.  You can build them using Java servlets, or CGI,
> or WebObjects.  No tool is going to magically solve all your problems,
> and solving them will require familiarity with your tools, hard work
> and careful effort, no matter what you use.

Certainly, nothing is a magic bullet or a panacea that will make all
your development problems go away, and I doubt that anyone reading this
list believes that.

Coincidentally, if you are, and you do, I have a GREAT WAY to MAKE
MONEY FAST with NO INVESTMENT!!! It is NOT MLM!! ;-)

> We had a manager here who was quite enamored of Java, and early on we
> wrote some stuff in Java servlets.  He viewed our Zope work as just
> stopgaps on the way to Java code that would carry us into the
> long-term, but every time I asked "What problem would be solved by
> rewriting all our Python code into Java?", there was no clear answer.
> Unfortunately, far too many people in business computing follow
> a similar management-by-white-paper-and-press-release style.

This is a great point.  Considering the technology within a coherent
whole is EXTREMELY important, and the view of some managers that
something is just going to be a panacea that resolves everything is
depressing.  It's not limited to development technologies though -- it's
"employee empowerment", it's "diversity training", "thinking out of the
box"... bad management transcends the boundaries of space and time =)

> Similarly, Greenspun argues that you shouldn't re-invent databases; it
> would require a tremendous amount of work to add to your home-grown
> system all the features that existing databases have -- fancy query
> optimization; storage across several devices; on-line backups;
> federated operation; etc...  So use an existing system; Greenspun's
> preference is Oracle, but he doesn't argue it like a law of nature.

In my experience (I admittedly haven't read this particular article)
Greenspun's advocacy of Oracle and WebDB is near-rabid and biased
toward extremely high-end applications for people with lots and lots of
money.

What you're referring to as "re-invent"ing, by the way, is referred to
by some as 'innovation'.  However, I will agree that the time to do
that is not necessarily when a large project is nearing a deadline...

Finally, I think Zope is a great tool, and for some applications (making
a Slashdot clone, for example) it DOES have the kind of killer advantage
that can make it worthwhile to switch lots of work in another system to.
 It all depends on what's appropriate though -- if, for example, your
site needs to have access to AdaBase, I don't know if Zope is the best
way to go.

I have actually seen projects for which CGIs written in C++ were
unquestionably the best choice.  Examples like that are rare, but they
do exist.

-- 
                      ______      __   __  _____  _     _
                     |  ____ |      \_/   |_____] |_____|
                     |_____| |_____  |    |       |     |
                     @ t w i s t e d m a t r i x  . c o m
                     http://www.twistedmatrix.com/~glyph/