GROK

Grok: now even cavemen can use Zope 3

Grok is a web application framework for Python developers. It is aimed at both beginners and very experienced web developers. Grok has an emphasis on agile development. Grok is easy and powerful.

Grok: Experience, Expertise, Extensibility

You will likely have heard about many different web frameworks for Python as well as other languages. Why you should you consider Grok?

  • Grok offers a lot of building blocks for your web application.
  • Grok is informed by a lot of hard-earned wisdom.

Grok accomplishes this by being based on Zope 3, an advanced object-oriented web framework. While Grok is based on Zope 3, and benefits a lot from it, you do not need to know Zope at all in order to get productive with Grok.

Grok is agile

Grok doesn't require you to edit cryptic configuration files. Instead you just program in Python and create HTML templates. Beyond this, Grok also offers a wide range of built-in features at your fingertips, from automated form generation to an object database. This way, Grok gives you both power and quick satisfaction during development. Grok is fun.

Grok has an extensive tutorial that helps you to get started. And thanks to grokproject, you'll be able to create your first web app with Grok in no time.

Grok offers a very wide range of features

Through Zope 3, Grok offers a very wide range of building blocks for your web application. What's more, Zope 3 components are typically rock-solid due to extensive unit-testing and well-specified API documentation.

Grok is grounded in a deep experience with web development

Grok, through Zope 3, is informed by hard-earned wisdom. Zope 3 is a powerful and flexible web application framework for Python that has been under continuous development since 2001. Zope 3's design in turn is based on experience with the Zope 2 platform, which has been under continuous development (starting with Bobo, Principia and then Zope 1) since 1997. The Zope community is supported by an independent foundation, the Zope Foundation.

The Zope community has been around for a while. We've built a lot and learned a lot. We are in this for the long run.

Grok for the future

Successful web applications aren't built for a day - such an application will need to be maintained, extended, evolved, over a period of many years. Zope developers really know this. Grok, through Zope 3, offers an architecture that enables your application to grow over time.

Grok: Zope 3 for cavemen

Grok stands on a giant's shoulder. That giant is Zope 3.

Zope 3 is an advanced object oriented web framework. Zope 3 features a large amount of API documentation and aims for reliability. It has a very large automatic test coverage (many thousands of tests). It has a large set of core features, and sports an enormous range of plug-in components.

The Grok developers think Zope 3 is great. Zope 3, unfortunately, also has some problems: its power raises the entry barrier for developers to get up to speed with it. Even after you've learned it, Zope 3's emphasis on explicit configuration and specification of interfaces can slow down development.

Grok aims to remedy these problems. Grok aims to make Zope 3 easier to learn, and more agile to work with, while retaining the power of Zope 3.

Grok appeals to the caveman or woman in all of us. Cavemen, like us programmers, want powerful and flexible tools. Cavemen are great at tools after all; they invented the whole concept of them. But cavemen, and we, also want our tools to be simple and effective.

Cavemen want tools like clubs: a club is powerful, flexible (you can bash in anything, mash potatoes too) and also simple and effective. Zope 3 is already powerful and flexible. Grok aims to make it simpler and more effective, for beginners and experienced developers alike. Grok: now even cavemen can use Zope 3.

Grok from the Zope 3 perspective

Zope 3 allows you to combine different components in an explicit, flexible way. You can hook up a view to a model, an event handler to an event, and a new API to an existing object. The process of doing this is called configuration. In a technical sense, Grok can be understood as an alternate configuration mechanism for Zope 3.

Zope 3 without Grok uses ZCML for hooking up objects together. ZCML is an XML-based configuration language. ZCML statements are stored in their own file, next to the code. While using ZCML has the benefit of being explicit and flexible, it can also make code harder to read as there are more files to consult in order to understand what is going on.

Grok does away with ZCML. Instead it analyzes your Python code for the use of certain special base classes and directives, and then "groks" it. This grokking process results in the same configuration as it would have if you used the equivalent ZCML. We believe that having all configuration along with your Python code makes the code easier to follow and more fun to develop.

Grok has been designed so that if you organize your code in a certain way, you can even leave out most of the explicit directives in your Python code. This makes code written for Grok look clean and uniform. You still have all the power of explicit configuration available should you need it, however.

During the development of Grok we have taken a careful look at common patterns in Zope 3 code and configuration. Grok aims to make these patterns more easy to use and succinct.