RV: [Long] Development in Zope (Was: Re: [Zope] data point on ease of learning Zope -- I give up.)
Hi Cees, hi Stefano, I have the very same problem. I think we would enjoy an IDE like VisualStudio or Delphi for development and deploy the results under Zope. Still this is not the case. A tighter union between ActiveState and DigiCool could give such results. ActiveState has the IDE and DigiCool has the Application Server. I still haven't seen the Komodo or the Wing packeges working. Also, the documentation for developers (say the class/package model and the function-call interfaces and semantics) is scarce, but I've read that this is now in development. This should be directly accesible by an IDE or a Documentation browser with search capabilities and so on. Of course, could be Zope, but Zope is not an IDE, and I need the docs accesible from the window where I write my source code. I can identify some more features I'm would enjoy in a development framework: * A data modeller, object oriented, with adaptors to real-world storage systems. UML-modelling would nice. I know that some of these exist but I still didn't see one working. I would like to model my (persistent) classes visually, designing the inheritance relations and the properties a class has. Also I would put modification info, such as: if attribute x of class instance y changes, change also attribute z of class instance w. This data schema would be translated to a OODMBS with some updating logic or into a RDBMS with all the referential integerity rules and triggers to maintain data cosistent. * A document-framework. This is a good way to abstract all type of real-world logic. The document framework would make it possible to search and recover document, and to update one or more class instances in one transaction, and treat any multiuser access problems. * A GUI-builder, which could work in a generic way, having some types of widgets and wich could help to build the GUI graphically. I saw this is VisualAge for Java and I liked it very much. But now, there should be local calls and remote procedure call based e.g. on XML-RPC. The interfaces could translate to Java, HTML/JavaScript and other languages. It would be like a visual modeller for the Mozilla framework which separates contents (what elements will be on the screen), behaviour (what action will perform whatever event), locales and layout (where will be put each of the elements, what colour, etc.). This should be completed with guidelines for designing GUI and integrate them with the business logic (and a document framework) running on the application server. All these ideas come from the wishes to get a higher level of abstraction. We need persistent classes, we need a data-modeller and we need a way to change data schemas in a fast and flexible manner. Also do we need to separate data-model aspects from representation on the screen, so we can make good projects dividing software departments into backend and frontend engineers (and possible these into programmers and visual designers). But frontend and backend are very related and so backend engineers should have an easy way to write documentation for the classes and their methods, and frontend engineer should have an easy way to access the necessary documentation. The power of the GUI will directly affect the successfullness of the software. It's the same as the use of natural language: If it has a lot of words which effectively describe the concepts I need (in an easy way) and I use them in the right manner, communication with other people will be very effective and efficient, the degree of communication is one of the most important factors of business success. I have a ERP solution (made with MS-Access) for small companies and want to migrate to another platform, but I don't know how to start. I would like to use standard browser technologies, but sometimes it seems not to be sufficient. Also I would like to have a O(bject)Q(uery)L(anguage) Object Store to access efficiently thousand of objects, but I still haven't found / experienced a good solution. The same thing with the data-modeller and document-framework. So I spend really a lot of time browsing through the Web. What should we do? Erny
Hello Cees
the problem you raised is exactly the same problem I am facing. Allow me to list my problems:
- I am an experienced Java programmer, as well as many other -win- languages - I want to build a big site with lots of logic - I want to have a comfortable tool - I do not want to build tons of classes from scratch.
I have been evaluating a lot of other solutions, including ColdFusion, Enhydra as app servers, PHP, ASP, and other as languages. After a lot of headaches, I came out with the idea that unfortunately there are no "all in one out of the box" solutions. From product A you get abc tools/solutions, from B you get def and so on. So at the end I decided to stick with Zope, for many reasons including:
- Perl, maybe IMHO not the best, but terribly efficient and widespread. - Python, even if I do not like it at all, but after all the important is that it does it work :)) - XML-RPC so Java for me - you can hide Zope behind Apache, so you can also use Tomcat, PHP and whatever.
In the end, a mig mix. But please tell me, where in world can you find an all in one? I did not, so at least, I will take the advantage of the great manageabilty of Zope, those tons of "speed-of-light" tools like DTML-IN and ZSQL methods, and do the rest in the tool I like most for that specific work.
I do not like it, however, because it lacks consistency, but at least I will not end up reinventing the weel that somebody has already invented, and debugged veeeery well, seen the tons of peple using Zope.
Regards Stefano
In article <000201c0ae2b$79372de0$5d60ae3e@k6> you write:
I have a ERP solution (made with MS-Access) for small companies and want to migrate to another platform, but I don't know how to start. I would like to use standard browser technologies, but sometimes it seems not to be sufficient. Also I would like to have a O(bject)Q(uery)L(anguage) Object Store to access efficiently thousand of objects, but I still haven't found / experienced a good solution. The same thing with the data-modeller and document-framework. So I spend really a lot of time browsing through the Web.
You may want to check out Smalltalk. Especially for an ERP solution I would not use Zope - ERP is lots of business logic, and I have tried three different ways of doing lots of business logic with Zope, and no one is satisfying. <sidestep> My first attempt was to do everything through-the-web. Needless to say, this isn't exactly a way to get great code - the web browser sits in the way of refactoring, getting a birds-eye view of your code, quick browsing, etcetera. So, I binned version 0.0.1 and write 0.1.0, which was completely in Python - the domain model neatly separated out from the application model, which was a Zope product. This was better, but still sucks because the DTML is all on the filesystem (so a TTW webdesigner can't access it and make it better looking) and you are constantly restarting Zope. Therefore, I'm converting it into what I think should become 1.0.0 which still has all the code in Python form on the filesystem, but the DTML is pulled "up" into the ZODB and the one big product has been refactored in four small products, for more Zope-level flexibility. It still sucks because you're constantly restarting Zope, but at least my webdesigner can hack around. </sidestep> For lots of business logic, if you want to stick with Python, I would recommend WebWare which has a more "classical" setup, with Python Server Pages and Servlets serving your users (PSP being the "View" and Servlets often acting as the "Controller"), and raw Python code containing the logic (the "Model" part of the picture). It has lots of bells and whistles in the latest version, among others an object-relational mapping layer (no OQL though). If you're not married to Python, I'd seriously consider Smalltalk. It's even more effective than Python, but one caveat is that certainly in the beginning you probably want an experienced Smalltalk "coach" on your team. Coupling Smalltalk to eXtreme Programming practices will probably result in an ERP that easily outperforms SAP R/3 on most fronts ;-) (ok, I'm exagerating...) -- Cees de Groot http://www.cdegroot.com <cg@cdegroot.com> GnuPG 1024D/E0989E8B 0016 F679 F38D 5946 4ECD 1986 F303 937F E098 9E8B
On Sat, Mar 17, 2001 at 12:05:40AM +0100, Cees de Groot wrote:
My first attempt was to do everything through-the-web. Needless to say, this isn't exactly a way to get great code - the web browser sits in the way of refactoring, getting a birds-eye view of your code, quick browsing, etcetera.
So, I binned version 0.0.1 and write 0.1.0, which was completely in Python - the domain model neatly separated out from the application model, which was a Zope product. This was better, but still sucks because the DTML is all on the filesystem (so a TTW webdesigner can't access it and make it better looking) and you are constantly restarting Zope.
Therefore, I'm converting it into what I think should become 1.0.0 which still has all the code in Python form on the filesystem, but the DTML is pulled "up" into the ZODB and the one big product has been refactored in four small products, for more Zope-level flexibility. It still sucks because you're constantly restarting Zope, but at least my webdesigner can hack around.
Note that: a) If Zope is running in debug mode, file-based DTML loaded into HTMLFile or DTMLFile objects will be reloaded if the disk-version has changed. b) If you use Shane Hathaway's Refresh product, you can have your Zope Products reloaded, either manually or automatically when changed: http://www.zope.org/Members/hathawsh/Refresh Using both tricks will significantly speed up your development cycle; you normally will only have to restart Zope if you make changes to the Zope core itself or when adding new Products. -- Martijn Pieters | Software Engineer mailto:mj@digicool.com | Digital Creations http://www.digicool.com/ | Creators of Zope http://www.zope.org/ ---------------------------------------------
Learning Zope is sometimes not really funny! Ok, here's another question of mine: In a form I give users the possibility to upload a file with the following tag: <input type=file name="file"> In the next dtml method which is called from here I want to test, if the user has selected a file or not. If the input field is empty, I don't want to do anything, but how could i test? I tried it with: <dtml-if REQUEST.form['file']<>''> ... but without succes! Perhaps some can explain HOW and WHY, please!!! Best Regards, ... Marc
Here is a DTML method called 'upLoad': <form action="testForm" METHOD="POST"> <input type="FILE" name="file"> <input type="submit"> </form> Here is the DTML method called 'testForm': <dtml-var REQUEST> <dtml-if "REQUEST.form['file'] == ''"> Empty <dtml-else> Not Empty </dtml-if> Have a nice weekend Arno On Sat, 17 Mar 2001, Marc Fischer wrote:
Learning Zope is sometimes not really funny! Ok, here's another question of mine:
In a form I give users the possibility to upload a file with the following tag:
<input type=file name="file">
In the next dtml method which is called from here I want to test, if the user has selected a file or not. If the input field is empty, I don't want to do anything, but how could i test?
I tried it with: <dtml-if REQUEST.form['file']<>''> ... but without succes!
Perhaps some can explain HOW and WHY, please!!!
Best Regards, ... Marc
_______________________________________________ Zope maillist - Zope@zope.org http://lists.zope.org/mailman/listinfo/zope ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope-dev )
That does not work, because "REQUEST.form['file'] has always the following value: <ZPublischer.HTTPRequest.FileUpload instance at 1454e90> It is never equal with ''
-----Ursprüngliche Nachricht----- Von: Arno Gross [mailto:arno.gross@consotec.de] Gesendet: Samstag, 17. März 2001 19:30 An: Marc Fischer; zope@zope.org Betreff: Re: [Zope] File upload
Here is a DTML method called 'upLoad':
<form action="testForm" METHOD="POST"> <input type="FILE" name="file"> <input type="submit"> </form>
Here is the DTML method called 'testForm': <dtml-var REQUEST> <dtml-if "REQUEST.form['file'] == ''"> Empty <dtml-else> Not Empty </dtml-if>
Have a nice weekend Arno
On Sat, 17 Mar 2001, Marc Fischer wrote:
Learning Zope is sometimes not really funny! Ok, here's another question of mine:
In a form I give users the possibility to upload a file with the following tag:
<input type=file name="file">
In the next dtml method which is called from here I want to test, if the user has selected a file or not. If the input field is empty, I don't want to do anything, but how could i test?
I tried it with: <dtml-if REQUEST.form['file']<>''> ... but without succes!
Perhaps some can explain HOW and WHY, please!!!
Best Regards, ... Marc
_______________________________________________ Zope maillist - Zope@zope.org http://lists.zope.org/mailman/listinfo/zope ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope-dev )
Therefore, I'm converting it into what I think should become 1.0.0 which still has all the code in Python form on the filesystem, but the DTML is pulled "up" into the ZODB and the one big product has been refactored in four small products, for more Zope-level flexibility. It still sucks because you're constantly restarting Zope, but at least my webdesigner can hack around. </sidestep>
FYI - you should probably check out Shane Hathaway's Refresh product: http://www.zope.org/Members/hathawsh/Refresh ...which largely or completely avoids the restart hassles. It will likely become a part of Zope at some point. Brian Lloyd brian@digicool.com Software Engineer 540.371.6909 Digital Creations http://www.digicool.com
brian@digicool.com said:
FYI - you should probably check out Shane Hathaway's Refresh product: http://www.zope.org/Members/hathawsh/Refresh ....which largely or completely avoids the restart hassles. It will likely become a part of Zope at some point.
I know it and I use it. It's a decent crutch (with some problems: among others, you need to have yet another browser window open, if you're working on multiple products you need to navigate to that correct button, and if you keep your domain model outside Zope, for example because you need to use it in all sorts of batch jobs, etcetera, the refresh product won't work). But it is still a crutch. It's not a solution. A solution would be a Zope IDE. It's a pity that I'm so bad at writing GUI's, because I would probably have earned back the money invested into building my own IDE by now. It could be so simple: take IDLE and plug it on top of Zope. I'm not sure whether I sent the attached stuff before to the list, but for an idea I send it again. Take it, plug the Python editor in and teach it HTML/DTML syntax highlighting, build management forms for the basic things (SQL, Python, DTML objects), and disable security checks on code entered this way so you don't need to revert to Python code outside Zope if you want to do things like setting attributes on objects. Now that would be a big step towards a solution. begin 644 zidle.zip M4$L#!!0````(``N;@2D;"PL9F@(``%T'```,`!4`9&)B<F]W<V5R+G!Y550) M``/5["<Z]?,G.E5X!`!H`&0`I551:]LP$'[WKQ!^DL&8]C7,A77)1J#-"@WD MH2NJ;9UKK8HD)*5I]NLGV8YCQVY7F,%@3G??=_?=G5QJN45K#;!A]!DL8ELE MM:TM*TDAKK^6%K8QNB^TY!SHMTR\9B8H?>2&"2KW-\QTD?X;Z%HJ#J_`@]9Z M=[BO@/,@*'AF#)KGUUKN#>A9$"#W4"@1(4PP2P@VP,L8T5PX_FA6G_O'FY/& MBM+V>'CHXW%T0BRX--#"N62$35=2C""M5`D%8[4\](-K,.\PX>_XAV7BMKZD MY,Z>:"EM-&916EI92([#S2V9+VX6ZP79+%?SGYLP;KSJC"<B<R<S#K\L3)$I MN/K(VX"US'+`$RBE+':&.(_^8>&*&786'P-BE#^GX;YB%AQEQ9XK[EYK*U:\ M"#`FO8@[G*G'9B]0<Z:7?<*DU-D6$I45+QC>5"9H>AFCDG&>AKFT57AR=LQ; MEU^=D!?5]_R\LG8@CA.+'4%1UQ$CW^ZX!IF(27:*9G82+FG2ZH]#I^L[(Y'L MMZ1Q".?7J)WN<*()SH\54@@GP9EKQ]55>L:EP>ZT."W/<35Q;S6BT8IU7L>/ MZ'^7KHO^`78-;Z,UL?HP&PQ&FW@/+*FU(DYDPFBO!?!6@+*3T4^]\*=!#DNG MY\KK^:\\6#G(@9D[S43!%,N^2TY!,U/-1A/=TH=E[1(.SH$;>#]"'6PE1?B9 MXCK??EWWN]Q?,Z.1V^7^EG']>'CLC*74B+E+:U"@S']#89?4X&C(VD(DF5+@ MYOS#B7I@CU%T/H,MP"G=I5G4.Y/EXQWYS#Q,]0+].I?6$2`.`H^+O,T4CB)T MA2X^(_=%$/BDMQD31VGJW]D?1CD<_V1?E:I/.G6PLS1*!,ROCM]A0E":HI`0 MCT5(V(`UP,%?4$L#!!0````(`+">@2FS"74Z^````-$!```(`!4`>FED;&4N M<'E55`D``ZSS)SK*\R<Z57@$`&@`9`!54<%JQ"`0O><KAKUH()7MK11R:#9= MV-,6]K9+$9.ZJ6`T1"FD7]]1$^IZ&'C/>6_>:*'NP+D1H^0<ZAIVG(]"&<YW MKP7@N<]VA.O[&=0XV=G#02MI_,7;60PRZSBWS=;2-AEO)_DO%<X=18_:)78, MVG9"P]LTY?!@C<EQVQ41NC03ZL<,[`%12D@%+_O]<UE&5=NAH&WHJMY(YJ3/ M\]`<L!PD10@5C#J&"QF:2`P>TN`5FZWUM+P1I+3JA5?6D,^4>]W^8[E\2ZTK M<(M+^RR.B7GX08M;"$V>?*C7TY>6$?:AQE?\5<AM1CBBBD-Q0/!9C5GX-@SV M!U!+`P04````"`#Q>H$IC,@KJ(\```!?`0``!0`5`'II9&QE550)``-FM"<Z MOO,G.E5X!`!H`&0`4]9/RLS3+\[@"H@,\?#W\_#W=;75SR\HT:_*+TC53RXM M*DK-*^%*K2C(+RI10*B!*@]P#/&`*"^H+,G(S]//3,E)U370,T665T&PK52P M&X%#B7Y.9A+49&)4NU:4I.859^;G%1.C.BHXM:@LM4@_-S6EM#B1!!VHH0%2 MQ:5?6EP$#DB(8Q6J0.&@5U#)!0!02P$"%P,4````"``+FX$I&PL+&9H"``!= M!P``#``-```````!````I($`````9&)B<F]W<V5R+G!Y550%``/5["<Z57@` M`%!+`0(7`Q0````(`+">@2FS"74Z^````-$!```(``T```````$```"D@=D" M``!Z:61L92YP>554!0`#K/,G.E5X``!02P$"%P,4````"`#Q>H$IC,@KJ(\` M``!?`0``!0`-```````!````[8$,!```>FED;&555`4``V:T)SI5>```4$L% 3!@`````#``,`R@```-,$```````` ` end --==_Exmh_16091387310 Content-Type: text/plain; charset=us-ascii Cees de Groot http://www.cdegroot.com <cg@cdegroot.com> GnuPG 1024D/E0989E8B 0016 F679 F38D 5946 4ECD 1986 F303 937F E098 9E8B
Hi Cees,
You may want to check out Smalltalk. Especially for an ERP solution I would not use Zope - ERP is lots of business logic, and I have tried three different ways of doing lots of business logic with Zope, and no one is satisfying. What about the GUI? Does it user standard browser technology or some client software? Is there any tool that assist the creation of GUI screens/pages? What's about Web publishing / applications server? What's about the object store?
For lots of business logic, if you want to stick with Python, I would recommend WebWare which has a more "classical" setup, with Python Server Pages and Servlets serving your users (PSP being the "View" and Servlets often acting as the "Controller"), and raw Python code containing the logic (the "Model" part of the picture). It has lots of bells and whistles in the latest version, among others an object-relational mapping layer (no OQL though).
I should have a look soon.
If you're not married to Python, I'd seriously consider Smalltalk. It's even more effective than Python, but one caveat is that certainly in the beginning you probably want an experienced Smalltalk "coach" on your team. Coupling Smalltalk to eXtreme Programming practices will probably result in an ERP that easily outperforms SAP R/3 on most fronts ;-)
Still I'm not married to Python. But I like the language. I really don't know much about SAP R/3, but I found that it is very expensive to have a good SAP installation / configuration. The guys which customize it earn well. Also I found that we can compete easily with SAP in smaller business, e.g. 5-30 workstations. (We have some companies here which are not very satisfied with SAP, but this seems to be responsability of the company which is installing, configuring and customizing it.) Good abstractions make the code modular and the application feasable. Also we have about 130 tables, using good class abstraction could reduce them to the half. We have about 90 code-modules and more than tha half are libs (reusable for other projects), a lot very generic functions. I did all the programming and the most of the GUI designing myself. It took about 2 years, everything included. Out app is running at 12 customers. And it is the same application for everyone. Only print reports (invoice form, orders, etc.) are customized. There are really a lot features demanded by all customers, such that the possibility to attach whatever other document to standard documents handled in the app (invoice, delivery note, project, etc.) and incidence tracking (to study cost-benefit, you only have to track what activity (=article) have you done for which customer/project). I would like to write an Open Source ERP whith all the standard thinks (Selling (Orders, deliveries / invoices) / Buying (same)/ Accountig / Stock / Incident tracking and some workflow/approvement cycles). Also I think that business models in Europe are very similar. I would like to know something about TransWarp from Phillip Eby. Will this help developing apps faster?
(ok, I'm exagerating...) Perhaps not.... ;-)
Cees de Groot http://www.cdegroot.com <cg@cdegroot.com> Erny
aerd@retemail.es said:
What about the GUI? Does it user standard browser technology or some client software?
Yes on both accounts. Smalltalk was invented in order to support development work on the first GUI back in the '70s at Xerox PARC, so it has always been coupled to GUI's. All Smalltalk vendors nowadays give you various ways to work with browsers, ranging from custom plugins that run full-fledged Smalltalk GUI's to JSP/Servlet-style programming. But we should probably take my Smalltalk advocacy off-list, lest a language flamewar arises :-)
I would like to write an Open Source ERP whith all the standard thinks (Selling (Orders, deliveries / invoices) / Buying (same)/ Accountig / Stock / Incident tracking and some workflow/approvement cycles). Also I think that business models in Europe are very similar.
There's a German company doing something like that in Java, IIRC. -- Cees de Groot http://www.cdegroot.com <cg@cdegroot.com> GnuPG 1024D/E0989E8B 0016 F679 F38D 5946 4ECD 1986 F303 937F E098 9E8B
participants (7)
-
Arno Gross -
Brian Lloyd -
Cees de Groot -
cg@cdegroot.com -
Ernesto Revilla -
Marc Fischer -
Martijn Pieters