Product Creation Comments
Hi there, For a while now I've been wrestling with product creation. I have as yet have to finish a product. I've read the 'Approaching the Zope Product API' tutorial, and while I understand it fine (I think), and it explains things just fine, I still find the product creation process too cumbersome for my tastes. This may be me, but perhaps it may help the Zope community if I utter my frustration; at a minimum it'll help me. Also note that as a whole I think Zope is just brilliant. Here are my comments: In Python, testing new code is easy; this is one of the advantages of interpreted languages. It also helps that Python is elegant and gives good error messages. The Emacs python-mode is also very useful. Zope for the most part also displays some of this elegance. Making new web pages is easy; you see results directly. Acquisition combined with DTML is a very powerful system. It's also trivial to add external methods in Python. Zope may however be too big, have too many interesting parts, for a single human to grok it quickly; this may be why we speak of 'Zope Zen'. I think this inevitable as Zope also does a lot. And better documentation may always help. The Product API is an exception; I keep stumbling. It's *not* easy to test new products, or if it is nobody has told me how. I want to know if I'm doing it right while I'm developing a product, and at a certain point there seems to be a looong gap in development where you simply can't test (or I don't know how to). I'll attempt to describe the biggest gap for me; the gap I haven't crossed yet. You can write a Python class that is to be the product. We'll take the poll as an example. First we test it in Python with a test() function. So far so good. That's just regular Python. Then we add the user interface with DTML. After some initial learning with DTML, this step is easy too. It's just a question of importing DocumentTemplate and adding a single attribute to the class (index_html). Minor stumbling block is that the non Zope python doesn't have the Zope modules on its module search path. Adding them resolves this; I'm not sure however if I fixed it completely (insert completely vague failures and complaints here :). You can test the generated HTML easily in a python test function, then. Minor step. Then we have a publishable object. We can test it with a test_poll.py file that creates the object to be published. We can call the Zope debugger to see if it all comes out okay. No problem. Now we try to make the leap from publishable object to Zope product. The tutorial says there is a long way between these two; and there is! The big gap trouble starts here. Suddenly, we don't import DocumentTemplate anymore, instead we do a 'from globals import HTMLFile' for general DTML support. We also import a number of other things. Suddenly I can't test anything anymore - not with a python test function or with the zope debugger, it seems. I get an error message that complains about the variable 'trueself' that was omitted from the request. So after this I can't test things anymore. I still need to make a creation form and a product installation method. In the tutorial it mentions the process of turning publishable product into product is a bit tedious and that in the future there will perhaps be a more streamlined process. I hope this future arrives soon, as after this, still without apparant ability to test, I need to add a producting editing form, a product editing method, define Zope permissions, management tabs, a meta type, and a product icon. The system gives no feedback on any of these. Then finally, I can install the poll and test it. This is too big a bound for me, somehow. I am able to do all the steps, but I keep getting bogged down, starting over, knowing I can't test anything yet. It breaks the quick Python development cycle; it's even slower than my C++ development cycle. There are too many steps that don't seem to fit into my short term memory. Part of the program design I do during prototyping. I can't seem to do this with products. A way to resolve this would be: * A lot more practice by me. I'm doing this. :) * A way to test each step somewhat better. Feedback from Zope telling you if you're still on the right course. * A more automated process of poll creation. I'm starting to think about what this should look like. I can probably eventually help with design/implementation, if I keep butting my head at product creation enough. * I'm missing something. "Martijn, when I create a product I do so and then so and it's really easy and quick." * products are beyond Martijn's feeble mind and he just should give up. :) I want to see more products for Zope. I want to *make* products for Zope. If it were easier somehow, there would be more products for Zope, which would be good for everybody. Enough of my lament. I hope it helps somebody else; otherwise ignore all as frustration relief. And again, I do like Zope. Regards, Martijn
Martijn Faassen writes: --fantastic voyage log deleted-- BTW, product modification (after original installation) appears broken in 1.10. All of the product info appears to be cached somewhere -- and is never updated -- even if all products are removed from the product folder (the init file is required, however). Any ideas as to what silliness I may have done to arrive at this state. (My old 1.9 setup works fine). MAM
participants (2)
-
Mark Millikan -
Martijn Faassen