Prerequisites for a desktop IDE, or any desktop app w/ Zope
The recent IDE thread has sort of got me thinking about my ideal vision of what Zope could do for and be to developers in the future, so perhaps my quirky visions here seem a bit ambitious, so take what I'm saying with a grain of salt (or a Tablespoon if you prefer)... So perhaps this message's subject might be best written as: Sean's Crazy Zope Wishlist... here are some random thoughts re: IDE for Zope... this message is long, so here is a summary: 1. create generalized toolkit/class library for desktop access to Zope; use wxPython... Work should be used for basis for IDE and a whole new generation of cross-platform desktop applications using Zope as a middleware core, expanding what Zope is used for, and the market opportunities associated with it for developers and vendors... 2. IDE should have ability to checkin/out stuff from server Products dir via FTP, as well as ODB; code should be synced from IDE/workstation to CVS, and also to Zope server for testing snapshots. 3. IDE should allow for unit testing of python classes using local python installation, and also facilitate debugging using python on server after a sync of code. 4. I'm not sure I would pay for an IDE versus using traditional tools, but I WOULD PAY FOR CASE TOOL INTEGRATION. I want forward/reverse engineering from UML; this would require the ability to have the CASE tool plugin cooperate with changes/evolution in Zope and any "standard" IDE, which means there is a sale-plus-subscription business model for this (for DC or another vendor to sell to ISVs?). Do this, and watch to "Enterprise Java" folks be converted - they really want to code in python, they just don't know it yet. ;) Anyways, if you aren't already bored to tears, read on... ------ Zope, via XML-RPC, could be a very good platform for creating an extensible toolkit for desktop access to Zope, wrapping XML-RPC calls to Zope machinery to do certain tasks. Such an abstract toolkit might provide a decent foundation for an IDE, but would also serve the purpose of allowing folks to write "desktop" (really: client/server) programs that interface with the Zope/ODB rather transparently by using the some prebuilt toolkit classes and basic-auth-wrapped python XML-RPC library. I could imagine having prebuilt library functions for Zope access (a desktop application that has a concept of a user-login and session, a URL, etc), admin (pack db, restart, backup/export object hierarchies to a local file), development (ftp checkin/checkout of code from Products directory on server, source/property editing of TTW objects), and general use (bound data controls - widgets like text boxes that are bound to a particular class definition, and represent members of instances of those classes, for example a widget has an associated get and set method within a class that it gets its text from and sets upon changes). Perhaps I'm dreaming here, but I really want to extend what I am doing in Zope in the future into cross-platform desktop development efforts. The rationale for desktop apps to be built with Zope is exists because: 1 - Data Entry: TTW editing is not always ideal; if I was building a content-system, for example, like a newspaper library system, Zope is an ideal platform for an asset-management system/content repository. But that task also involves a lot of editing, and the librarian will want to have hot-keys to modify content and navigate an entry-screen, it would make sense to make this a desktop app, as that kind of flexibility is not afforded by a browser and html forms. 2 - Current Desktop Client/Server apps are stale: Isn't the idea of ODB integration with desktop apps more exciting than standard 2-tier RDB apps? Wouldn't middleware based on lightweight, commodity technologies (http, xml-rpc, open source server software) like Zope make sense for the new "web services" paradigm? 3 - Zope has potential as an enterprise data-center mainstay, not just as a web-only application. This expands the market for Zope and vendors working with Zope, as well as expands the Zope community. 4 - Commodity internet technologies, especially with open-source cores, provide what might just be the core for the next generation of enterprise applications (both web-based and desktop c/s), especially in heterogeneous content environments (like publishing/media companies using something like this for the database core for print and online production systems). 5 - There is a market justification for vendors to sell more integration services to 2 market vectors (enterprise and web development), in both content-management and other verticals for which Zope might excel as a good development platform for a back end. In the newspaper editorial and asset-management systems business (I used to work for a vendor in this industry), for example, there is a great deal of talk about convergence and formatting-neutral content storage databases at the center of web and desktop apps; a lot of app & services sales within these markets are 6 to 7 figure sales to media companies, so there is opportunity, not in just this industry, but other content-heavy industries (medical, legal, etc) as well - for the same types of "integrated" solutions with a single commidity-web-based core, with desktop and web apps surrounding it. I'm currently doing a bit of playing around with wxPython, which reminds me a lot of my days programming with the Borland OWL class libraries, so I might be partial to such a solution using wxPython instead of tkinter (tcl interpreter - blech! motif-style widgets - yuck!). An IDE built with a decent (modern) widget set / UI class library, with extended toolkit functions, like data-bound controls, might make for an interesting user-extensible means of creating custom-tweaked IDEs, not to mention other desktop software that accesses Zope... I guess what I am saying is that we might as well have a toolkit for building desktop apps and kill two birds with one stone here if there ends up being any sort of IDE project. I also think that choosing to use a modern cross-platform desktop class library like wxWindows with wxPython might be a better choice than mozilla/XPCOM or tkinter... In addition to remote object/method calls, ability to sync local code done in the IDE with both a CVS server (whenever), and with the Zope server (on production/snapshot releases) via FTP would be good. The IDE should allow unit-testing and debugging using a python shell and a local python. The IDE should also automate the ability to telnet to the Zope server to do integration testing and verification using the python on the Zope server. I do this now with Idle on the Zope server via a remote X-Session (not entirely graceful, but it works). In addition to an IDE, I want to be able to have some good guidelines and documentation for standardized UML in Zope, so that when I share designs with colleagues, I don't have to use a ridiculous amount of my own flavor of stereotypes, just because I don't know any better. Once I have that, I want CASE->CODE->CASE tools with an existing tool (even if it is a Visio extension hacked with VBscript), but perhaps I am pushing my luck there. I just think that provided the ability to use standard editing tools, I would feel good to have the ability to do forward/reverse engineering from UML models. Such a tool might get some Java developers to jump ship. I might not pay for an IDE, but I WOULD PAY $$$ for a plugin that does forward/reverse engineering with an existing CASE tools (ObjectDomain, Rational Rose, Visio2k, etc). These are high-end tools that would likely only be used by a smaller group of folks than Zope's general audience, which, I assume makes this more ideal for a standard commercial software paradigm. Such a product would need to be able to change with changes/evolution in Zope, which means that a buy-once, buy a support contract for free updates would be a good model for anyone creating such a tool. Also, you keep the barrier to entry low for development in open-source projects built on Zope because you can always have folks without these tools submit patches, participate in development, and view a PDF or JPG of the UML diagrams if they so please... Sean ========================= Sean Upton Senior Programmer/Analyst SignOnSanDiego.com The San Diego Union-Tribune 619.718.5241 sean.upton@uniontrib.com =========================
sean.upton@uniontrib.com wrote:
The recent IDE thread has sort of got me thinking about my ideal vision of what Zope could do for and be to developers in the future, so perhaps my
...
I'm currently doing a bit of playing around with wxPython, which reminds me a lot of my days programming with the Borland OWL class libraries, so I might be partial to such a solution using wxPython instead of tkinter (tcl interpreter - blech! motif-style widgets - yuck!). An IDE built with a decent (modern) widget set / UI class library, with extended toolkit functions, like data-bound controls, might make for an interesting user-extensible means of creating custom-tweaked IDEs, not to mention other desktop software that accesses Zope...
Sean, I am on my way out and do not have time to fully read everything you have here. But I did want to let you (and other interested members) know that we have committed to a GUI for FreePM. In taht vein, I can commit us to contributing to this project to help build that infrastucture. It sounds like we have a lot of the same ideas. Why don't you head this up and start coordination? I'll get back with you later this week. Cheers, -- Tim Cook, President - FreePM,Inc. http://www.FreePM.com Office: (731) 884-4126 ONLINE DEMO: http://www.freepm.org:8080/FreePM
On Mon, 21 May 2001 sean.upton@uniontrib.com wrote:
4. I'm not sure I would pay for an IDE versus using traditional tools, but I WOULD PAY FOR CASE TOOL INTEGRATION. I want forward/reverse engineering from UML; this would require the ability to have the CASE tool plugin
I'm not sure how important a J-together like IDE would pay off in this respect, but I would love to see a UML-ish like visualization tool that is totally isomorphic to python. The object's under the hood are all python, the visualization is just a 'view', no need to go back and forth. Changing the code or run time object model changes the visualization immediately.
Zope, via XML-RPC, could be a very good platform for creating an extensible toolkit for desktop access to Zope, wrapping XML-RPC calls to Zope machinery to do certain tasks.
XMLRPC could do this, but I'm afraid it would be seriously limited. XMLRPC is very useful, but it does not map as well as it could onto the python object model. I would prefer to see a GUI client running in the same process space as a ZEO client, this way the GUI client could do everything that Zope could do and re-use alot of the existing interfaces (like security, acquisition, script objects, etc). The upshot of xmlrpc is that you could write front-ends in various languages and platforms.
I'm currently doing a bit of playing around with wxPython, which reminds me a lot of my days programming with the Borland OWL class libraries, so I might be partial to such a solution using wxPython instead of tkinter (tcl interpreter - blech! motif-style widgets - yuck!). An IDE built with a decent (modern) widget set / UI class library, with extended toolkit functions, like data-bound controls, might make for an interesting user-extensible means of creating custom-tweaked IDEs, not to mention other desktop software that accesses Zope...
wxPython is indeed very cool.
In addition to an IDE, I want to be able to have some good guidelines and documentation for standardized UML in Zope, so that when I share designs with colleagues, I don't have to use a ridiculous amount of my own flavor of stereotypes, just because I don't know any better. Once I have that, I want CASE->CODE->CASE tools with an existing tool (even if it is a Visio extension hacked with VBscript),
blech. it would take you just as long to hack one up with xwPython and have a real object model underneath and it would be x-platform. -Michel
Michel Pelletier wrote: ...
I'm currently doing a bit of playing around with wxPython, which reminds me a lot of my days programming with the Borland OWL class libraries, so I might be partial to such a solution using wxPython instead of tkinter (tcl interpreter - blech! motif-style widgets - yuck!). An IDE built with a decent (modern) widget set / UI class library, with extended toolkit functions, like data-bound controls, might make for an interesting user-extensible means of creating custom-tweaked IDEs, not to mention other desktop software that accesses Zope...
wxPython is indeed very cool.
Kylix would probably be even cooler. Unfortunately Kylix is no free software.
In addition to an IDE, I want to be able to have some good guidelines and documentation for standardized UML in Zope, so that when I share designs with colleagues, I don't have to use a ridiculous amount of my own flavor of stereotypes, just because I don't know any better. Once I have that, I want CASE->CODE->CASE tools with an existing tool (even if it is a Visio extension hacked with VBscript),
blech. it would take you just as long to hack one up with xwPython and have a real object model underneath and it would be x-platform.
Do you think Delphi/Kylix is considerable? At the moment, I'm considering this for a GUI for FreePM. I had some very good experience with PythonForDelphi, it integrates very well with Python. You have both worlds: Python's scripting power, and Delphi with its IDE. Doing the same thing under Linux using Kylix might be a promising path. ciao - chris -- Christian Tismer :^) <mailto:tismer@tismer.com> Mission Impossible 5oftware : Have a break! Take a ride on Python's Kaunstr. 26 : *Starship* http://starship.python.net/ 14163 Berlin : PGP key -> http://wwwkeys.pgp.net/ PGP Fingerprint E182 71C7 1A9D 66E9 9D15 D3CC D4D7 93E2 1FAE F6DF where do you want to jump today? http://www.stackless.com/
participants (4)
-
Christian Tismer -
Michel Pelletier -
sean.upton@uniontrib.com -
Tim Cook