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

推荐订阅源

cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
P
Privacy International News Feed
D
Darknet – Hacking Tools, Hacker News & Cyber Security
C
CXSECURITY Database RSS Feed - CXSecurity.com
Cisco Talos Blog
Cisco Talos Blog
S
Schneier on Security
Project Zero
Project Zero
T
Threatpost
Spread Privacy
Spread Privacy
阮一峰的网络日志
阮一峰的网络日志
C
Cybersecurity and Infrastructure Security Agency CISA
AWS News Blog
AWS News Blog
H
Heimdal Security Blog
V
Visual Studio Blog
Google DeepMind News
Google DeepMind News
P
Privacy & Cybersecurity Law Blog
J
Java Code Geeks
罗磊的独立博客
博客园 - Franky
博客园 - 叶小钗
S
Security Affairs
月光博客
月光博客
Application and Cybersecurity Blog
Application and Cybersecurity Blog
The Last Watchdog
The Last Watchdog
WordPress大学
WordPress大学
人人都是产品经理
人人都是产品经理
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
A
Arctic Wolf
Cloudbric
Cloudbric
www.infosecurity-magazine.com
www.infosecurity-magazine.com
V2EX - 技术
V2EX - 技术
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
L
LINUX DO - 最新话题
Y
Y Combinator Blog
宝玉的分享
宝玉的分享
酷 壳 – CoolShell
酷 壳 – CoolShell
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
N
News | PayPal Newsroom
Hugging Face - Blog
Hugging Face - Blog
美团技术团队
W
WeLiveSecurity
云风的 BLOG
云风的 BLOG
The Register - Security
The Register - Security
I
InfoQ
F
Fortinet All Blogs
T
The Exploit Database - CXSecurity.com
S
SegmentFault 最新的问题
Recent Announcements
Recent Announcements
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
L
Lohrmann on Cybersecurity

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 Morepath 0.16 released! Is Morepath Fast Yet? Introducing Bob Strongpinion Punctuated Equilibrium in Software Morepath 0.15 released! Impressions of React Europe 2016 Morepath 0.14 released! Morepath 0.13 now with Dectate Dectate: advanced configuration for Python code JavaScript Dependencies Revisited: An Example Project The Incredible Drifting Cyber A Brief History of Reselect The Emerging GraphQL Python stack Thoughts about React Europe Build a better batching UI with Morepath and Jinja2 GraphQL and REST Server Templating in Morepath 0.10 10 reasons to check out the Morepath web framework in 2015 A Review of the Web and how Morepath fits in Morepath 0.9 released! Better REST with Morepath 0.8 Morepath 0.7: new inter-app linking They say something I don Life at the Boundaries: Conversion and Validation BowerStatic 0.4 released! Morepath 0.6 released! Morepath 0.5(.1) and friends released! New HTTP 1.1 RFCs versus WSGI Against On Naming In Open Source My visit to EuroPython 2014 Morepath 0.4.1 released (with Python 3 fixes) Morepath 0.4 and breaking changes Announcing BowerStatic Morepath 0.3 released! Morepath 0.2 Morepath Python 3 support The Call of Python 2.8 Morepath 0.1 released! WebOb and Werkzeug compared Morepath: from Werkzeug to WebOb Racing the Morepath: SQLAlchemy Integration The Centre Cannot Hold Breaking Morepath Changes Morepath Update How to do REST with Morepath Morepath Security the Gravity of Python 2 #python2.8 discussion channel on freenode Alex Gaynor on Python 3 Morepath Documentation Starting to Take Shape Back to the Center Morepath App Reuse Implementing Grok Grok: the Idea Why Linux Works for Me On the Morepath Reg, Now With More Generic! The New Zope as a Web Framework Renewing Zope Object Publishing The Weirdness of Zope The Rise of Zope My Exit from Zope Reg: Component Architecture Reimagined JSConf EU 2013 impressions Obviel 1.0! JS Dependency Tools Redux Obviel 1.0rc1 released! Succinct data structures
Jim Fulton, Zope Architect
Martijn Faassen · 2013-10-25 · via Secret Weblog

Introduction

I hope to have shown that Zope in 1998 was massively creative: traversal based object publishing, a web UI, a pluggable architecture, a NoSQL object database and acquisition were all in the original Zope. When Zope renewed itself in the early 2000s we added a component system, an explicit configuration system, and many other things.

Much of the credit for all this innovation goes to the chief architect of Zope, Jim Fulton. Many other people contributed, of course, but that doesn't take away from Jim's creativity -- he helped others be creative too. Creativity is very important to me in my life as a developer, and I respect it immensely in him.

Meeting Jim

In the year 2000 I went to the International Python Conference in Washington DC. This was the first time I'd been to any Python conference. Python was a smaller community then. People knew each other. They even knew me, even though I hadn't done much yet; my main contribution to Python were some silly posts on the Python newsgroup, and some activity surrounding Zope.

That's also where I met Jim for the first time. Zope was a big happening thing in the Python community at the time; the attendance to the Python conference had grown enormously thanks to Zope. Many people wanted to talk to Jim as a result. Still it was easy to have a chat with him.

The first time I really got to work with Jim was over the phone. I had created a form library for Zope called Formulator, and he phoned me to talk about how we could reimagine this for the new Zope. It felt special to have someone so central to Zope to call me.

Out these conversations eventually came the Python schema system zope.schema and the various form libraries built on top of it. I only contributed a little bit of code to these at best -- Jim wrote much of it. Still I was proud that some of my ideas were taken up and put in the new Zope, thanks to Jim.

Jim at Sprints

The new Zope in the heady days of the early 2000s was developed using sprints. A sprint was a few days when people would come together somewhere with a laptop and an internet connection and work on things together that are less immediately pressing than the urgent needs of the business day. A time to take a step back, enjoy each other's company, have fun and be creative. I've sprinted at conference locations and in offices, but also in a castle, in a cabin in the forest, and on a snow-covered mountain, and at home. Tres Seaver wrote an article on the origin of sprinting that is worth a read.

The first time I got to work with Jim was in Berlin at tiny sprint (just 4 or 5 people) before a Zope meeting there, in 2001. I forgot what we worked on - I think we discussed forms again too.

Jim was everywhere during those days. I saw him at many sprints and conferences and had the pleasure of working with him often. He was friendly, smart, and engaging. He helped channel lots of people's creativity energies into the new Zope project. I learned a lot from my interactions with Jim, and enjoyed them tremendously.

Jim and me

In the years afterwards Zope was moving less quickly. Jim had less time for Zope, as there are of course still customer projects to work on. Jim's reduced presence on the Zope project was sorely felt; he was missed.

I still saw Jim on occassion at conferences, and worked with him for a while when we were both board members of the Zope Foundation.

Jim is an inspiration to me, and a massive influence on the way I think about software. We learned from each other -- me more from him, as he was the more experienced developer, but he also listened to me. Thank you, Jim.

We didn't always agree -- I wanted more automatic XML-free configuration in Grok, Jim liked the original explicit ZCML; Jim prefers widgets that hide HTML on the client-side, I like client-side HTML template languages. And so on. So sometimes we argued, but we respected each other.

After Zope

In 2010 Jim and I last saw each other at the Zope Summit. At the end, we had a stupid fight about a stupid thing -- a result primarily, I think, of my frustrations with Zope, which didn't help my mood. I'm a passionate software developer, and seeing one of my passions in trouble made me gloomy. I was hurt by that fight. I think we both got hurt.

We didn't have a chance to work it out then. I had to rush for the train back home and looked for Jim to say goodbye, but missed him. Then we found ourselves on different continents again.

Afterwards, Jim tried to contact me to talk on the phone, but we didn't get around to it. Perhaps I wasn't ready for it. We both emailed each other again several times afterwards, but we still didn't get to talk. Life is distracting. I blame myself for not trying harder.

I'll try to call him tonight. I will keep on trying this time.

This blog entry is a part of a series on Zope and my involvement with it. Previous. Next.

Johannes Raggam

you've all built great software, which i still love. thanks for that!

edeadlk

Regardless of the outcome of that phone call, please continue writing the series! You're sharing a wonderful (and important) piece of history here

Martijn Faassen

Thank you. I still have some more material, though I'm getting closer to the end now.

Jim and I had a nice phone call earlier today. I think we'll be staying in touch more closely from now on.