You wouldn’t think that having too many features would be a problem, but maybe it is. Somebody just asked a question about testing on the PEAK mailing list, and as part of my response, I told them about peak.ddt
, a FIT-like framework for “Document Driven Testing”. Implemented using peak.web
, peak.ddt
has a variety of tools that can be used to create tests on peak.model
domain models and peak.storage.SQL
database queries.
Of course, since it’s based on peak.web, that means it’s actually a WSGI application that can run in any of PEAK’s three WSGI runners, including its highly-configurable, very scalable pre-forking FastCGI process supervisor. Let’s not even get into the command-line apps framework, event-driven programming framework, the domain model framework, the UML processing, configuration system, extensible URL handling, and the “peak n2
” SQL/Python shell.
I could sit here all night linking to posts explaining other major features and frameworks that lurk just beneath the surface of PEAK, but you probably get the idea already. PEAK is basically to Python what J2EE is to Java, except that it’s not nearly as finished or polished, despite two years of part-time work on my part. Nonetheless, it’s already an impressive piece of work, and some have expressed surprise that it’s mostly the work of one person.
However, I wonder if its own prodigous scope will ultimately be its undoing. Will people avoid it because there’s “too much to learn”? Tutorials like the IntroToPeak probably help some, but I sense more that it’ll be an issue with “marketing”. If people hear “oh, you should use PEAK for that” for too many things, they’re likely to tune out or be turned off: obviously something that does so many things is hard to learn, right?
They’d be wrong, of course, because most frameworks in PEAK are built on top of just a few core frameworks, so once you’ve grasped a few essential concepts, you should be free to explore only the pieces you need. In practice, of course, you’ll be stopped short by the current lack of documentation apart from reference docs, the two half-finished tutorials, and the mailing list archives.
The big mistake I made before was to have the documentation reflect the structure of the system itself. That is, I tried to write tutorials that built up from fundamental concepts to more advanced ones, step by step. This resulted in documentation that was correct and detailed, but which most people hated. The IntroToPeak tutorial that R.D. Murray created shows the right way forward: examples based on simple functionality that doesn’t get in the way of showing how the architecture works.
But I’ve digressed from the marketing point, which is this: brand extension sucks. If your brand stands for everything, it stands for nothing. J2EE is a brand for managers, not developers. The developer brands in Java are called JDBC, JNDI, EJB, JSP, Servlets, and so on. PEAK lumps all the various corresponding things into subpackages, and we brand the whole thing PEAK, making it impossible to tell anybody in a sentence or two what the heck it is.
Given that PEAK exists primarily to scratch my own “Python Enterprise” development itches, I don’t suppose a lack of marketing clarity is too much of a problem. Still, it’s interesting to think about.
I’ve started to look at PEAK a few times over the last few years, but always found it inscrutable. David’s new tutorial looks better though – I’ll try again see how far I get.
Well, the documentation is somewhat abstract, so if I would
need quick results I would be a bit put off, because there is ‘too much to learn’.
On the other: there is much to learn! Which strikes me as something good.
I love Python, and know little about Java (and am wondering if I should learn more). Asside from that: Zope is a type of application framework .. how does PEAK relate to that body of work? Also, what about GNUe (http://www.gnuenterprise.org)?
Zope is an application framework focusing on content management and web services. PEAK is an all-purpose application framework focused on non-functional requirements like scalability, flexibility, extensibility, and so on, with many domain-specific frameworks for command line apps, server apps, and some folks have even extended it for GUI apps.
GNUe, on the other hand, is focused on creating various specific business applications, like accounting and such. I believe it’s CORBA-based, and it’s not trying to be a general-purpose application framework.
This comment has been removed by a blog administrator.
This comment has been removed by a blog administrator.