惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 三生石上(FineUI控件)
博客园 - Franky
GbyAI
GbyAI
B
Blog
WordPress大学
WordPress大学
D
Docker
小众软件
小众软件
月光博客
月光博客
博客园 - 【当耐特】
T
The Blog of Author Tim Ferriss
IT之家
IT之家
腾讯CDC
Engineering at Meta
Engineering at Meta
Vercel News
Vercel News
H
Help Net Security
M
MIT News - Artificial intelligence
L
LangChain Blog
云风的 BLOG
云风的 BLOG
S
SegmentFault 最新的问题
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
美团技术团队
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
V
V2EX
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻

Secret Weblog

Becoming More Xee: A Modern XPath and XSLT Engine in Rust Looking for new challenges! Repeat Yourself, A Bit The Curious Case of Quentell The Humble For Loop in Rust The Humble For Loop in JavaScript Don Question Best Practices I Was a 1980s Teenage Programmer Part 5: Achieving Assembly I Was a 1980s Teenage Programmer Part 4: The Call of Assembly The Tooling Shift I Was a 1980s Teenage Programmer Part 3: MSX-2 JavaScript: when you need two ways to do it! Empowering Programming Languages Bloat and Retrofuturism Refreshing my Blog Again Random Rust Impressions Apilar: An Alife System I Was a 1980s Teenage Programmer Part 2: Olivetti M24 I Was a 1980s Teenage Programmer: the Alphatronic SolidJS fits my brain Is premature optimization the root of all evil? Framework Patterns: JavaScript edition Roll Your Own Frameworks Framework Patterns Secret Weblog Highlights Refactoring to Multiple Exit Points mstform: a form library for mobx-state-tree Seven Years: A Very Personal History of the Web
Grok Status Update Part 1
Martijn Faassen · 2008-06-02 · via Secret Weblog

Time for a Grok status report. I thought the Grokkerdam sprint was very successful. It is now a few weeks behind us. A fun time was had by the participants and we got a lot of work done. What's more we've had followup on many of the projects started there - people have continued the work started at the sprint.

Meanwhile our release mill is churning along: last week Grok 0.12.1, a bugfix release, was released!

Here is an overview of some of the recent interesting developments in Grok-land. There is really too much to mention, so forgive me if I don't mention your favorite topic. This is part 1. I'll be posting another blog entry soon which continues the update.

megrok.rdb

At the sprint, we started the megrok.rdb project to integrate Grok into SQLAlchemy. We had a long discussion on how to best do this, and got a lot of valuable input from Christian Theune. After this Christian Theune, Christian Klinger, Jasper Spaans and myself worked on the implementation. We now have a sketchy implementation that does have many of the features we discussed, albeit in unpolished form:

  • we use SQLAlchemy's declarative extension for defining classes and tables.
  • we have a megrok.rdb.Model and a megrok.rdb.Container, analogous to the ZODB-backed Model and Container in Grok core.
  • we can traverse a SQLAlchemy generated ORM mapping, both objects and through relations (which act like containers).

The current example code using SQLAlchemy with Grok looks like this:

http://svn.zope.org/grokapps/rdbexample/trunk/src/rdbexample/app.py?&view=markup

We definitely will be cleaning this up further and will make many changes, but it already looks pretty clean.

After the sprint the work continued. One important development was the creation of the zope.sqlalchemy package by Laurence Rowe, which is intended to become the universal foundation to the other SQLAlchemy projects in the Zope world. It provides transaction integration between Zope and SQLAlchemy. I have also been extensive discussion with Laurence and others on how to best implement a multi-application multi-database setup with SQLAlchemy. Zope, and Grok, support the pattern of having multiple separate applications in a single server, and when you are using a database, multiple databases. We need to convince SQLAlchemy to do the right thing there while preserving ease of use.

grok.traversable

During the relational database integration discussion at the Sprint we discovered a common traversal pattern we decided to codify. Thanks to the work done by Reinout van Rees and Jasper Spaans we now have a grok.traversable() directive. This makes it trivial to make an attribute of an object traversable and thus part of URL space.

This directive will be available in the next feature release of Grok (Grok 0.13).

Grok on Zope 3.4 (KGS)

Grok had pinned down the versions of its dependencies to "whatever worked" back at the Neanderthal sprint. Since then, Stephan Richter developed and maintains KGS, a package index for Zope 3 packages. Versions of these packages are tested together.

At the sprint, Maurits van Rees and Tim Terlegård updated the versions.cfg list of Grok to the KGS-based versions. We continue to maintain our own versions list, but at least Grok depends on the same versions again as a typical Zope 3.4 install.

After the sprint, we've checked that Windows binary versions are available of all the eggs currently in KGS. Jim Fulton kindly compiled them for us and made them available on the Python Package Index, so Grok 0.13 will be windows compatible.

Sphinx for Grok

Uli Fouquet did a lot of work before the sprint in integrating the Sphinx documentation utility for Grok's documentation. Jan-Wijbrand Kolman and Uli spent a lot of time polishing this off and landing this support in the Grok trunk. We intend to start publishing some of the SVN managed documents for Grok with this. We will also continue to publish documents using our Plone website, but some documents are better suited to being maintained within SVN instead.

Now we only need to start adding this to our documentation workflow; we've started discussions on how to do this, so hopefully this will land our website soon.

Documentation

A lot of work was done on documentation during the sprint. The website was reviewed and suggestions for improvements were made. Kamon Ayeva and Godefroid Chapelle also offered to help maintain the Grok Plone site. Since the sprint we've set up a grok-web mailing list. This is a welcome release for our hard-pressed website hero, Kevin Teague. More documentation has been written since the sprint, and the documentation section of our website is starting to look quite nice.