Domain: zope.org
Stories and comments across the archive that link to zope.org.
Comments · 492
-
Re:Would this be better?
And Zope supports PHP and Perl scripting
-
Re:Zope great in theory ... not so much in practic
Ummm, if you use emacs you can edit the code in emacs using ange ftp, check out this for example. Works great. Plus you can install the dtml and zpt minor modes and get all the context sensitive highlighting which is really nice.
-
Re:Examples?
-
Re:OK we need some input from the Zope heads
Is it really an Application Server and if so what services does it provide?
It is. Its services are called "products" one of them is plone - a framework built upon zope - providing everything you need for a Community website (Calendars, news, Member homepages, Picture Gallerys, Forums etc.)
I know this is more a Python thing but even mentioning an application server built in a scripting language will have me ridiculed out the door.
Stop laughing. This is running zope. Google Cache -
Zope Enterprise Objects
If you are looking for scalable OSS solutions, also look into Zope with Zope Enterprise Objects (ZEO).
-
Re:I'm a bit of a maths dunce butOh, come on kiddo. I've known Perl since the 80's. When did you first start using Perl?
If you don't realize that Perl sucks, then you don't understand it yourself.
Want to read some reasonable, cool, pleasurable Python code?
Zope: http://www.zope.org
Plone: http://www.plone.org
-Don
-
Re:We need a Dive into Zope book
Yes, The Zope Book is not that bad, but something much more practical would be nice to have.
-
Re:Joy of programming...
My language experience going back 24 years:
Basic, Fortran, Assembly (Intel and Sparc), Pascal, C, C++, Java, Lisp, shell(sh,awk,sed), Perl, and most recently Python. (roughly in that order; I saw some COBOL code once when a young programmer, but was immediately repulsed - thank heavens)
I actively use Perl and Python myself for everything now for several reasons:
1. All of the machines at my job (800+) are all preloaded with Perl - so I have to use it for automation (better than shell scripts particularly for mission critical one-off applications that have to be fault tolerant but deployed at the whim of our marketing and operations staff). If I didn't have to maintain Python myself on all of those machines, I would port everything over to Python in a heartbeat. However it took me 2 years to get management to agree to loading Perl in the first place - and there is no reason to incur the costs associated with validating a new scripting language for use in our production environment. So I live with it - and keep the footprint small.
2. For all other tasks - I use python.
Some neat things fall out of python that even as a neophyte I can appreciate:
a) clean syntax (if I only had all the time spent finding dangling semicolons in perl, I could take a sabbatical)
b) full featured web development tool (Zope - provides a framework for developing and hosting full service applications - designed to make building products to run under Zope easy - seperates the presentation from the logic using ZPT cascading style sheets and DTML for presentation, and python for the program logic [unless you are masochistic enough to depend upon DTML alone] - has a built-in database for managing Zope objects - and built-in httpd and ftpd servers - which can be further frontended using Apache as desired - can communicate with other databases [oracle, ODBC, postgreSQL, etc... many database plugins available] - has a large library of predeveloped products [modules for you perlmongers] that you can load and be up and running, or modify to your heart's content - and did I mention that its GPL'd?)
c) platform independent (just as with java and perl, python scripts can run without modification on many operating systems - keeping porting costs down to a bare minimum.
d) built-in documentation functionality - not as full featured as Perl's perldoc - but I might not have found the right product yet to do that (ideas anyone? or, is this a python project waiting for me to jump on - perhaps something that ouputs XML?)
The only drawbacks (and I use this term with trepidation - because they can seem positively refreshing after 10 years with perl) that I can see are:
A. Does not have the sheer amount of user contributed products (modules) when compared to CPAN^. Of course I wouldn't judge the quality of my carreer based on the weight of all of my program printouts either. Quantity does not equate to quality.
B. Slower than Perl and Java. Again, something I can throw hardware at to rectify. Squid goes along way to making web pages generate faster too - so you can ameliorate some of the problems without having to kill yourself.
C. Sometimes it takes longer to find resources online than with other languages because of the difference in popularity. However, the time spent needing to refer to reference material for Perl and Java is many times larger than the time spent doing the same with Python.
D. Because of my long experience with Perl, I find myself immediately jumping to a predetermined algorithm/function that is implemented differently in Python and thus create syntax errors in my code. This last is really a personal problem that time will erase.
My whole programming paradigm has changed. The advent -
Re:Almost had a heart attack!
When I hear about a site powered by Python
Here you go.
Oh yeah, and then there was this small startup, you may not have heard about them, what was it again... let me think, oh yes, something called "Google".
I expect there to be ample amounts of Spam, Vikings, Spanish Inquisitions, Black Vicars, etc.
Happy?
Dunno. Didn't notice any of those, but perhaps they all popped up at your place? -
OIO?
I agree with your observation. That's why we have been working on a free (GPL) project for the past 5 years to fill this gap.
Our project is called OIO and implemented using Zope/Python. You can either use PostgreSQL or Oracle as the DBMS backend. By creating web-forms through browser-based wizards, the OIO system builds the database tables for you. There are also data mining and report-generation modules. Screenshots [ OIO Reporting module | screenshots OIO forms editor ]
-
OIO?
I agree with your observation. That's why we have been working on a free (GPL) project for the past 5 years to fill this gap.
Our project is called OIO and implemented using Zope/Python. You can either use PostgreSQL or Oracle as the DBMS backend. By creating web-forms through browser-based wizards, the OIO system builds the database tables for you. There are also data mining and report-generation modules. Screenshots [ OIO Reporting module | screenshots OIO forms editor ]
-
OIO?
I agree with your observation. That's why we have been working on a free (GPL) project for the past 5 years to fill this gap.
Our project is called OIO and implemented using Zope/Python. You can either use PostgreSQL or Oracle as the DBMS backend. By creating web-forms through browser-based wizards, the OIO system builds the database tables for you. There are also data mining and report-generation modules. Screenshots [ OIO Reporting module | screenshots OIO forms editor ]
-
Re:Python vs Java
Although it's got a ways to go to catch up to Java, they are making fast progress over at Zope?
-
Re:FireFox
"IMO we should have a system where - say you are browsing your web site and you spot a spelling mistake on it at http://www.i-like-kibble.org/about.html you should just be able to click an edit button in your browser, be asked to supply a username and password and then have it open webdav://www.i-like-kibble.org/about.html either in a built in editor or it should ask you to select an editor (such as notepad, gedit or even MS Word). When the page is 'saved' in the editor, the changes should be uploaded to the site automatically by the browser."
Yeah, it's called Zope. I've had this for half a decade. Just tack on "/manage" to the end of the URL and bingo, you're editing it. -
Re:A strange place to follow MicrosoftOh dear, I didn't realise the term was so charged. I guess I just used it to mean "run-time type checked". Plenty of people call Python a scripting language, for example "Zope is written in Python, a highly-productive, object-oriented scripting language.".
I still think I'm right through
:-) if you're picking a language for a largish project, a good static typechecker should be on your shopping list. -
Re:Wrong, wrong, wrongBittorrent?
Zope is a much better example than Bittorrent!
The Python Bittorrent client is a bad cross platform app...
-
PHP becoming *very* interesting
I do a lot of professional web and internet developement, but never thought of PHP being the cream of software technologies. Mostly due to the fact that it is 'just' a SSI language which mangles content and code to much for my taste. And for SSI stuff, Zope's TAL extension still is the most interessting imho.
Yet me, and everyone else in the field allways has been well aware of the fact that PHP is the 400 lb. Gorilla of SSI technologies and web developement platforms. And one of those OSS technologies that lead the field in their league. Feature and library laden, performant, well documented and with something like a bazillion active Inet and www related projects using it as primary PL.
What is begining to show now is that the libs and features are growing more and more dense and specialized for tasks that are known to be the most common way of doing things right. Such as extensive use of XML for content, object orientedness in developement and optimized acceleration for the languages primary field of use.
PHP is more and more becoming a one-size-fits-all primary choice for web related stuff, finaly completely dismissing ASP.NET, JSP and Cold Fusion as mere also-ran candidates. Even for those who initially consider using them.
Even though PHP isn't by far the cleanest of modern PL's - I would even say it's somewhat ugly compared to, let's say, Python - I'm begining to expect it to become an all time classic like C or C++. -
Maybe add Zope/Plone to the list
Furthermore, we are looking at content management systems for knowledge base solutions such as TikiWiki or egroupware.
Zope and Plone require a bit of a shift in thinking but I would add them to your short list. Zope provides a rather robust framework and Plone provides a rather well tested CMF solution with plenty of add-ons available. Plus you get the benefit of an open source solution with corporate support if you need it. Note that I have no affiliation with Zope other than I'm a happy user. -
Re:yeah, look at all the forks of perl/python, etc
Enlightened script languages, I would say.
Technically, you're wrong; they're byte-compiled (except maybe tcl). But I understand what you mean. But so what? They're pretty damn enlightened! Check out, e.g., Zope before you sneer at python.
All this extra code allows the programs to be clearer, better organized.
By that logic, assembly language programs must be the clearest and best organized programs of all.
> people who usually don't have a clue what else is out there.
Maybe you?
Well, in nearly 25 years as a professional software developer, I have used (off the top of my head) assembler, basic, C, C++, forth, java, lisp, pascal, perl, python, shell and tcl, and dabbled in ADA, APL, eiffel, prolog, ruby, smalltalk, snobol and more. The biggest gap in my education is probably the functional languages like OCaml and Haskell. I think I have at least a bit of an idea what's out there. How 'bout you? -
France already uses open source
For any of those out there who were at Europython in Sweden a couple of weeks ago can testify, Nuxeo have a large presence in the French public sector. Nuxeo's product, CPS, fulfils a similar role to Plone as a CMS. Like Plone, it's based on Zope.
In fact, I hear that it's got to the point where if you're planning a CMS project in Public-Sector-France-Land and you *don't* have a Zope-based product on your shortlist, questions are asked why... Corroborations, anyone?
-
Try smoking Zope
Zope was not mentioned, WTF?
-
Well, you mentioned Perl and PHP already...here comes another language, that starts with "P".
Python has already features like a simple HTTP server or asynchronous sockets library - built-in, portable (unix, win32, MacOS - no problem).
There are a few well known HTTP serving projects in Python (like this one), but the best thing in my opinion is Twisted - the framework of your internet, which features, among others, a 100% Python implementation of web server & ssh server/client. I strongly suggest anyone, who knows Python, to have a look at Twisted - many of ideas implemented there are logic and clean, it's a good programming lesson for sure.
Have fun!
-
Re:At some point!
I can't believe that an organization would put so much time, effort, and money into a product
... only to give it away to the open source community.
It happens. -
Does everyone have to reinvent the wheel?The backend for a web site should always take the least time of your task. Just take some CMS (like WebGUI) or at least a framework (like Zope) to do your work.
Then concentrate on layout, but in the first place:
Make shure you have the fsck**g content for the site.
Then go back to refining the layout.The backend should never take two whole manmonths for a single customer.
No wonder you have bitching customers. -
Trying to predict the next 2 years...Being regular Python user/fan, each news, which features Python makes me happy. How do you think, will Python become more and more popular in the next years? I think so.
- web development: Not only Zope and Plone, there's a lot of interesting development going on with Twisted... and, well, Twisted is not only about the web, it is about networking in general;
- .NET / Java development in general: Python in Java exists already... Java gaining more and more popularity? No problem, Python is already there.
.NET/Mono taking the market away from Java? The industry will perhaps support more and more .NET techniques - with IronPython (featured recently on /.), Python is already there. No problem; - some people might wonder if you really need that stinkin'
.NET/Java stuff at all - Python is already very portable, but that's not everything - it already supports a wide range of MacOS/Unix/win32-specific functionalities. - anything else makes you wonder, if Python is a good choice at all? What about realtime applications, like a VOIP phone (GUI included, win32/unix compatible) in Python? Do you read "interpreted" as "slow", do you wonder if Python is good enough to be useful in CPU-demanding programs like games? Anything else against it? Perhaps you're worried about Python's extensibility?
- if software telephony sucks for you, perhaps you should try a real mobile phone
;) -
COREBlog - Zope Weblog Product
This was a no-brainer to get installed, and has probably the MOST configurable system (Zope) as a CMF support below it:
It runs on python and ZODB (A true OO DB)
Check it out
(The difficult part is learning to use Zope)
I've also tried out Drupal ... It seems a bit more than a common blog and can suit most needs. (Uses PHP/MySQL)
-
Re:Just goes to show...Aren't most of the scripting languages (perl, python, ruby, tcl) secure against standard buffer overflow attacks?
Considering the speed improvements in both the interpreters for these languages, and general processors, I'm suprised more network services (smtp, web, ftp) aren't being written either entirely in these languages, or with a mixture of scripting and native C modules for the areas that need better performance.
There's a few examples that I've seen out there that already do this, like Zope and Aolserver (i think). Of course, this approach may only eliminate one type of vulnerability, and still leaves other things like these that appeared for Zope at the beginning of the year.
-
There are many better alternatives to PHPA mini-language designed for one purpose will eventually become a general-purpose language (as PHP already has), and it doesn't mean it is well-designed in the first place (as my superficial familiarity with PHP tells me). That being said, there are many alternatives to PHP that work quite well.
The ones I'm most familiar with are extensions of Common Lisp. There are 3 CL web servers, each with dynamic HTML generation capability (AllegroServe, Araneida, CL-HTTP). Then there's Lisp Server Pages, Active Lisp Pages, etc., and another whole load of CGI solutions. I use (and highly recommend) AllegroServe. There is a whole big list over at Cliki (which runs on Araneida).
There are many CGI bindings for various Scheme implementations, and the PLT web server is kind of popular. I'm not very familiar with Scheme web solutions though, so I probably left something out.
There is a lot of activity with Smalltalk-based web apps. Seaside is a continuation-based framework that gets a lot of attention. There's also AIDA/Web, and an unfinished mod.Smalltalk. I am not very familiar with Smalltalk web solutions either, so I probably missed a few.
Python is a very popular option, and Zope seems to be a very popular framework. I don't know anything about web programming in Python aside from that.
Take pretty much any of the recent lightweight (in the conference meaning of the term) languages, and you're bound to find good options, almost all of them better in terms of security and speed than PHP; I can't think of a single one that has a more annoying syntax or more convoluted and limited semantics than PHP, though. Another thing that you should consider is the website we're posting on is pretty interactive, and kind of popular, and it's written in Perl.
-
No problem: Zope + Plone = Content Management
The learning curve is pretty steep for newbies, but the features, scalability, and price are hard to beat. It's not the standard Apache/MySQL/PHP approach, but there is alot to like about it.
Warning: Zope has some religious followers that make RMS look tame by comparison. Fortunately, most of the enthusiasm is justified by what the product can actually do.
http://www.zope.org
http://www.plone.org -
Re:Python's dirty little secretBTWE, here is the Scheme program that is equivalent to the Python program in the very original referenced URL:
(set! L ())
The process grows without bound, just like in every other language...just as in the original URL. Sorry to keep on about it but it annoys me when I am stomping a troll and somebody pops up with a non sequiter that confuses the issue.
(define (func) (begin (set! L (cons L () ) )
(func) ) )
(func) -
Re:Python's dirty little secret
It is clear you do not know anything about Python. You are not a long-time Python developer but rather a troll. The first hint is that you misspell Guido Van Rossum's name.
The second hint is that you cite a page from 1999. A Python developer would know that that was before Python had cyclic garbage collection. Here is an article from 2001 that describes how the issue was fixed.
The third hint is that you point to a page that describes how to avoid creating a memory leak by appending an infinite number of items to a list. Guess what: appending an infinite number of items to a list causes a memory leak in Java, C++, C, assembly, Scheme, sh, Perl and every other programming language in the world. If you ask the computer to store a continually growing list of items, it will do so...in any language.
If you think that Python can leak memory in circumstances where other languages would not, post an example program and we'll all test it out. -
Python's dirty little secretAs a long time Python developer I would like to take this opportunity to shed some light into one of the most overlooked design flaws in the language: memory leakage.
Despite all of Guido Van Sustren's claims to the contrary, Python's garbage collector just doesn't work correctly, allowing the programmer to create a circular reference which never gets resolved. This is a critical impediment to writing mission critical applications in Python, as they will eventually run out of memory and fail.
Python is an excellent beginner's language, well-suited to replace Visual Basic or possibly even Perl for many tasks. But testing about unit testing before we address a fundamental design flaw such as memory leakage is tantamount to putting the cart before the horse. Python's memory issues need to be fixed before the language can break out of its niche.
-
Advantages of Plone
We've been using Plone for a while now and for me it has a few distinct advantages:
* Plone works *out-of-the-box* and is easy to extend and configure.
* Plone provides excellent workflow support. A Workflow is the editorial chain used to manage documents. Creating new workflows is easy.
* Plone is easily extended with external components ("Products" in Zope/Plone parlance). I run Plone with Zwiki (a wiki extention) and CMFBoard (forums), making for a very rich intranet site with loads of possibilities. Check out the The Collective or the Zope website
* Plone comes with Archetypes, which is a framework which allows for the relatively easy creation of new content types (in Python)
* It runs on Zope which is a very powerfull Application Server and Content Management System. Zope has got a rather steep learning curve, but its documentation has been improved and it has got a very supportive and vibrant user community. -
Re:Merge bookmarks and history
"Non-GPL soft[ware] lets anyone make a non-free version dominant by adding significantly important features in non-free code. "
This comment seems of topic, but I want to respond to it. I am a supporter of public domain software development, exactly because of this phenomenon, not in spite of it. The non-free (proprietary, copyrighted) developers must expend enormous resources to hire the thinkers, developers and marketers that invent, code, test, and try out these new features in the marketplace. They often fail.
When new and valuable features do come from the traditional software development model, free software developers are free to re-code the features and even improve on them, merging their changes with the public code base.
This is not all conjecture. Non-free versions of the Zope web application server (BSD licensed, so nearly public domain) exist, and developers contribute to the free code base.
For a more detailed example, please this letter on my website: http://betterdifferent.com/software/zwikilicense/
And here for a letter to the Open Source Initiative: http://betterdifferent.com/software/osi
-nate
betterdifferent.comps I want to save a detailed history of my Google searches, the resulting links and the ones I visited (the actual content, not just a link!) so 50 years from now my children can research what it was like to live in 2004, and can better understand their father.
-
Python ResourcesPython is an ideal language for hacking in - I completely agree with your points about it being easy to pick up - and easy to pick up your own code again after a month or two away from it. Here's a handy list that I have prepared for whenever somebody mentions Python in a context like this one:
Python Resources
This is a list of what I consider to be the most useful Python packages. They give Python the ability to tackle almost any project.
Core packages- Python - Get the Python interpreter, base libraries from here. The default install includes the IDLE editor.
- Win32All - Windows extensions package that includes the excellent Pythonwin editor.
- wxPython - Wrapper to the cross-platform wxWindows window manager library. It's a better windowing system than the TCL/TK library that is the default Python install.
- Boa Constructor - GUI builder that uses the wxWindows library.
- Psyco - x86 runtime compiler. Transparently improves the performance of most Python code - for performance-critical apps, it's often a much better solution than a C rewrite.
- Py2Exe - Builds Python scripts into Windows executables. Perfect for distributing programs to systems that do not have Python installed. Use with Psyco for the best effect.
- PyOpenGL - Use OpenGL from within Python
- Python Image Library (PIL) - Package for easy image loading and manipulation
- PostGreSQL - Full-function SQL database. More complete and advanced than MySQL.
- PyGreSQL - Python bindings for the PostGreSQL database.
Python includes a full suite of functionality to build internet applications in the core install, but the following are frameworks for building and deploying web applications. -
Massachusetts and Open Source
-
TALQuoth the original poster:
- Some argue that template engines make applications easier to maintain and make for cleaner code. Others argue that template engines introduce unnecessary overhead and require too much additional processing power. Do the readers of Slashdot think that it is important to use templates or are they just an extra unnecessary layer?
There's no single answer. Like anything else, it depends on your application.
Templating gives you the flexibility of being able to change the look of the pages independently of the information it represents. Templating requires more planning and design, since it's part of a feedback loop that affects how the information is shaped.
For some applications, separating the presentation logic from the application logic is simply a necessity, and the pains taken to design around a template system is an investment from which you will reap the benefits later, either when you change the application logic or the presentation logic.
(Separation of application interfaces from application logic is usually equally important, not the least because it allows refactoring, ie. the continuously improvement of code without affecting interface compatibility.)
- There are dozens of PHP template engines to choose from including Smarty, phplib, and bTemplate. Which template engines do you have experience with and which ones have the best performance?
I don't know any of them, as I don't use PHP unless forced to, so no comment on that. However, I have used a lot of template systems in my time, and the best one I have had the pleasure of working with so far is TAL.
TAL (Template Attribute Language) was originally implemented for Zope. It is, however, completely general, and has been enthusiastically received by the open source community, spawning several implementations, including an implementation for PHP.
One of the core ideas of TAL is that it's valid XML, and therefore valid XHTML, and it's designed in a way to does not intrude on the original markup. You can view a TAL template in a WYSIWYG editor like Dreamweaver, and it will look fine; moreover, if the template is well-written, it may even look like a static preview of the real, dynamically generated template.
TAL is in fact just one part of a trinity that also includes TALES (TAL Expression Syntax) and METAL (Macro Extensions for TAL).
TAL specifies the template structure. TALES is a way to refer to external information. And METAL lets you define template regions that acts as reusable macros: headers, copyrights, headlines, boxes, what have you. METAL greatly aids in supporting the idea of "skinning". Represent documents as TAL templates that refer to METAL macros, and to switch your "skin", just point them to a different set of macros.
TAL, which is based on XML, is a declarative language. It will take some time -- but not much -- to get used to. For example, to iterate over a list/array/whatever:
<tr tal:repeat="person results">
<td>...</td>
</tr>This goes over the elements in the "results" list, and for each element, assigns the value to the variable "person".
<tr tal:repeat="person results">
<td tal:content="person/name">Person's name</td>
<td tal:content="person/age">Person's age</td>
</tr>Here, we use tal:content to insert the person's details into the table cells. As you can see, TAL uses a path syntax: person/name means the attribute "name" of the variable "person
-
TALQuoth the original poster:
- Some argue that template engines make applications easier to maintain and make for cleaner code. Others argue that template engines introduce unnecessary overhead and require too much additional processing power. Do the readers of Slashdot think that it is important to use templates or are they just an extra unnecessary layer?
There's no single answer. Like anything else, it depends on your application.
Templating gives you the flexibility of being able to change the look of the pages independently of the information it represents. Templating requires more planning and design, since it's part of a feedback loop that affects how the information is shaped.
For some applications, separating the presentation logic from the application logic is simply a necessity, and the pains taken to design around a template system is an investment from which you will reap the benefits later, either when you change the application logic or the presentation logic.
(Separation of application interfaces from application logic is usually equally important, not the least because it allows refactoring, ie. the continuously improvement of code without affecting interface compatibility.)
- There are dozens of PHP template engines to choose from including Smarty, phplib, and bTemplate. Which template engines do you have experience with and which ones have the best performance?
I don't know any of them, as I don't use PHP unless forced to, so no comment on that. However, I have used a lot of template systems in my time, and the best one I have had the pleasure of working with so far is TAL.
TAL (Template Attribute Language) was originally implemented for Zope. It is, however, completely general, and has been enthusiastically received by the open source community, spawning several implementations, including an implementation for PHP.
One of the core ideas of TAL is that it's valid XML, and therefore valid XHTML, and it's designed in a way to does not intrude on the original markup. You can view a TAL template in a WYSIWYG editor like Dreamweaver, and it will look fine; moreover, if the template is well-written, it may even look like a static preview of the real, dynamically generated template.
TAL is in fact just one part of a trinity that also includes TALES (TAL Expression Syntax) and METAL (Macro Extensions for TAL).
TAL specifies the template structure. TALES is a way to refer to external information. And METAL lets you define template regions that acts as reusable macros: headers, copyrights, headlines, boxes, what have you. METAL greatly aids in supporting the idea of "skinning". Represent documents as TAL templates that refer to METAL macros, and to switch your "skin", just point them to a different set of macros.
TAL, which is based on XML, is a declarative language. It will take some time -- but not much -- to get used to. For example, to iterate over a list/array/whatever:
<tr tal:repeat="person results">
<td>...</td>
</tr>This goes over the elements in the "results" list, and for each element, assigns the value to the variable "person".
<tr tal:repeat="person results">
<td tal:content="person/name">Person's name</td>
<td tal:content="person/age">Person's age</td>
</tr>Here, we use tal:content to insert the person's details into the table cells. As you can see, TAL uses a path syntax: person/name means the attribute "name" of the variable "person
-
TALQuoth the original poster:
- Some argue that template engines make applications easier to maintain and make for cleaner code. Others argue that template engines introduce unnecessary overhead and require too much additional processing power. Do the readers of Slashdot think that it is important to use templates or are they just an extra unnecessary layer?
There's no single answer. Like anything else, it depends on your application.
Templating gives you the flexibility of being able to change the look of the pages independently of the information it represents. Templating requires more planning and design, since it's part of a feedback loop that affects how the information is shaped.
For some applications, separating the presentation logic from the application logic is simply a necessity, and the pains taken to design around a template system is an investment from which you will reap the benefits later, either when you change the application logic or the presentation logic.
(Separation of application interfaces from application logic is usually equally important, not the least because it allows refactoring, ie. the continuously improvement of code without affecting interface compatibility.)
- There are dozens of PHP template engines to choose from including Smarty, phplib, and bTemplate. Which template engines do you have experience with and which ones have the best performance?
I don't know any of them, as I don't use PHP unless forced to, so no comment on that. However, I have used a lot of template systems in my time, and the best one I have had the pleasure of working with so far is TAL.
TAL (Template Attribute Language) was originally implemented for Zope. It is, however, completely general, and has been enthusiastically received by the open source community, spawning several implementations, including an implementation for PHP.
One of the core ideas of TAL is that it's valid XML, and therefore valid XHTML, and it's designed in a way to does not intrude on the original markup. You can view a TAL template in a WYSIWYG editor like Dreamweaver, and it will look fine; moreover, if the template is well-written, it may even look like a static preview of the real, dynamically generated template.
TAL is in fact just one part of a trinity that also includes TALES (TAL Expression Syntax) and METAL (Macro Extensions for TAL).
TAL specifies the template structure. TALES is a way to refer to external information. And METAL lets you define template regions that acts as reusable macros: headers, copyrights, headlines, boxes, what have you. METAL greatly aids in supporting the idea of "skinning". Represent documents as TAL templates that refer to METAL macros, and to switch your "skin", just point them to a different set of macros.
TAL, which is based on XML, is a declarative language. It will take some time -- but not much -- to get used to. For example, to iterate over a list/array/whatever:
<tr tal:repeat="person results">
<td>...</td>
</tr>This goes over the elements in the "results" list, and for each element, assigns the value to the variable "person".
<tr tal:repeat="person results">
<td tal:content="person/name">Person's name</td>
<td tal:content="person/age">Person's age</td>
</tr>Here, we use tal:content to insert the person's details into the table cells. As you can see, TAL uses a path syntax: person/name means the attribute "name" of the variable "person
-
TALQuoth the original poster:
- Some argue that template engines make applications easier to maintain and make for cleaner code. Others argue that template engines introduce unnecessary overhead and require too much additional processing power. Do the readers of Slashdot think that it is important to use templates or are they just an extra unnecessary layer?
There's no single answer. Like anything else, it depends on your application.
Templating gives you the flexibility of being able to change the look of the pages independently of the information it represents. Templating requires more planning and design, since it's part of a feedback loop that affects how the information is shaped.
For some applications, separating the presentation logic from the application logic is simply a necessity, and the pains taken to design around a template system is an investment from which you will reap the benefits later, either when you change the application logic or the presentation logic.
(Separation of application interfaces from application logic is usually equally important, not the least because it allows refactoring, ie. the continuously improvement of code without affecting interface compatibility.)
- There are dozens of PHP template engines to choose from including Smarty, phplib, and bTemplate. Which template engines do you have experience with and which ones have the best performance?
I don't know any of them, as I don't use PHP unless forced to, so no comment on that. However, I have used a lot of template systems in my time, and the best one I have had the pleasure of working with so far is TAL.
TAL (Template Attribute Language) was originally implemented for Zope. It is, however, completely general, and has been enthusiastically received by the open source community, spawning several implementations, including an implementation for PHP.
One of the core ideas of TAL is that it's valid XML, and therefore valid XHTML, and it's designed in a way to does not intrude on the original markup. You can view a TAL template in a WYSIWYG editor like Dreamweaver, and it will look fine; moreover, if the template is well-written, it may even look like a static preview of the real, dynamically generated template.
TAL is in fact just one part of a trinity that also includes TALES (TAL Expression Syntax) and METAL (Macro Extensions for TAL).
TAL specifies the template structure. TALES is a way to refer to external information. And METAL lets you define template regions that acts as reusable macros: headers, copyrights, headlines, boxes, what have you. METAL greatly aids in supporting the idea of "skinning". Represent documents as TAL templates that refer to METAL macros, and to switch your "skin", just point them to a different set of macros.
TAL, which is based on XML, is a declarative language. It will take some time -- but not much -- to get used to. For example, to iterate over a list/array/whatever:
<tr tal:repeat="person results">
<td>...</td>
</tr>This goes over the elements in the "results" list, and for each element, assigns the value to the variable "person".
<tr tal:repeat="person results">
<td tal:content="person/name">Person's name</td>
<td tal:content="person/age">Person's age</td>
</tr>Here, we use tal:content to insert the person's details into the table cells. As you can see, TAL uses a path syntax: person/name means the attribute "name" of the variable "person
-
TALQuoth the original poster:
- Some argue that template engines make applications easier to maintain and make for cleaner code. Others argue that template engines introduce unnecessary overhead and require too much additional processing power. Do the readers of Slashdot think that it is important to use templates or are they just an extra unnecessary layer?
There's no single answer. Like anything else, it depends on your application.
Templating gives you the flexibility of being able to change the look of the pages independently of the information it represents. Templating requires more planning and design, since it's part of a feedback loop that affects how the information is shaped.
For some applications, separating the presentation logic from the application logic is simply a necessity, and the pains taken to design around a template system is an investment from which you will reap the benefits later, either when you change the application logic or the presentation logic.
(Separation of application interfaces from application logic is usually equally important, not the least because it allows refactoring, ie. the continuously improvement of code without affecting interface compatibility.)
- There are dozens of PHP template engines to choose from including Smarty, phplib, and bTemplate. Which template engines do you have experience with and which ones have the best performance?
I don't know any of them, as I don't use PHP unless forced to, so no comment on that. However, I have used a lot of template systems in my time, and the best one I have had the pleasure of working with so far is TAL.
TAL (Template Attribute Language) was originally implemented for Zope. It is, however, completely general, and has been enthusiastically received by the open source community, spawning several implementations, including an implementation for PHP.
One of the core ideas of TAL is that it's valid XML, and therefore valid XHTML, and it's designed in a way to does not intrude on the original markup. You can view a TAL template in a WYSIWYG editor like Dreamweaver, and it will look fine; moreover, if the template is well-written, it may even look like a static preview of the real, dynamically generated template.
TAL is in fact just one part of a trinity that also includes TALES (TAL Expression Syntax) and METAL (Macro Extensions for TAL).
TAL specifies the template structure. TALES is a way to refer to external information. And METAL lets you define template regions that acts as reusable macros: headers, copyrights, headlines, boxes, what have you. METAL greatly aids in supporting the idea of "skinning". Represent documents as TAL templates that refer to METAL macros, and to switch your "skin", just point them to a different set of macros.
TAL, which is based on XML, is a declarative language. It will take some time -- but not much -- to get used to. For example, to iterate over a list/array/whatever:
<tr tal:repeat="person results">
<td>...</td>
</tr>This goes over the elements in the "results" list, and for each element, assigns the value to the variable "person".
<tr tal:repeat="person results">
<td tal:content="person/name">Person's name</td>
<td tal:content="person/age">Person's age</td>
</tr>Here, we use tal:content to insert the person's details into the table cells. As you can see, TAL uses a path syntax: person/name means the attribute "name" of the variable "person
-
Zope is on the list
As a MA resident and one of the developers of the upcoming Zope 3 release, I was very positively surprised to see Zope (Z Object Publishing Environment) on the list of supported projects. I know that Zope has been used by the government for a long time, but that it is being embraced in this way is even better!
Go MA and Peter Quinn!
-
Zope is on the list
As a MA resident and one of the developers of the upcoming Zope 3 release, I was very positively surprised to see Zope (Z Object Publishing Environment) on the list of supported projects. I know that Zope has been used by the government for a long time, but that it is being embraced in this way is even better!
Go MA and Peter Quinn!
-
ZODB
Seems like a perfect application for the Zope Object Database. It does all these things for you out of the box. And you get to write it all in lovely lovely python. aaaah.
-
Runs on Zope
The egovos.org site is powered by Zope. Let's see how she stands up to a Slashdotting. Any bets?
-
Re:Laughable?
They aren't competitors. Notes is a collaboration/groupware suite.
And we aren't collaborating in a group right now? People don't use Intranets and Internet email for what they would have bought Notes for in the mid-90s? I knwo for a fact that that's what happens at non-Microsoft shops. w.g. Oracle doesn't use Notes internally. It uses Internet email, web-based solutions and some collaborative addons of their own.
They aren't competitors. XML is just one of many protocols that can be used to implement CORBA. Corba is an Architecture, XML is a data transmission format.
I was talking about XML in the large: XML+SOAP+WSDL, etc. Obviously these are both pitched as enterprise integration technologies and XML-based ones have a lot more traction in business today (think
.NET and Axis) than CORBA does.You don't (if you are sane) use a scripting language to write enterprise-level apps like finance or CRM software, or secure distributed systems, or high-performance numerical software.
GNU Enterprise is finance software written in Python. Secure distribute systems in Python? How about mojo nation or ZEO, or the MEMS Exchange or BitTorrent. High performance numerical software? You'd better tell someone down at Lawrence Livermore National Labs that they are insane because they show up at every Python conference and by now have spent millions on Python code. I don't see Java or C# mentioned on their list of key languages. Java in particular is a horrible language for that sort of thing. Do a Google for "Java Floating Point".
Look: you can understimate Python just as the Unix vendors understimated Linux. In the long run it doesn't really hurt anyone, even you. It is always more comfortable to presume that things will stay in the mental boxes we've built for them in our minds.
-
Python Resources.This is a list of what I consider to be the most useful Python packages. They give Python the ability to tackle almost any project.
- Python - Get the Python interpreter, base libraries from here. The default install includes the IDLE editor.
- Win32All - Windows extensions package that includes the excellent Pythonwin editor.
- wxPython - Wrapper to the cross-platform wxWindows window manager library. It's a better windowing system than the TCL/TK library that is the default Python install.
- Boa Constructor - GUI builder that uses the wxWindows library.
- Psyco - x86 runtime compiler. Transparently improves the performance of most Python code - for performance-critical apps, it's often a much better solution than a C rewrite.
- Py2Exe - Builds Python scripts into Windows executables. Perfect for distributing programs to systems that do not have Python installed. Use with Psyco for the best effect.
- PyOpenGL - Use OpenGL from within Python
- Python Image Library (PIL) - Package for easy image loading and manipulation
- Plone - Web applications, built on top of the Zope framework.
Abandon Perl! Python is the future! -
Don't forget to check ZopeJust for a case if there are people here who don't know about Zope but who are tired from primitivenesses of PHP and who would be interesting in migrating to Zope from PHP:
There is much better alternative to PHP. It's called Zope. In fact, Zope has two similar (but very superior) markup languages: DTML and ZPT, both using Python for underlying scripting.
Just go to the site and check brief functional description - you will be surprise how far their technology has been developed for the last year.
Personally, I was developing on PHP before (like SquirelWebMail plugins, database applications), but I don't see any reason to write PHP anymore. All my current and upcoming web-projects are only Zope-based.
-
Zope3
Take a look at Zope3 it has some 5,000 unit tests:
http://cvs.zope.org/Zope3/ -
Re:Incorrect on both counts...
You're missing my point. If you want to showcase a product such as a CMS, then make your site show it's features so that users can see these features in action. Why can't a forum discussion module be built into Plone? Why can't it get a feed from GNAME and incorporate it into Plone. Show us what it can do. What this says is "It's too difficult" or "we don't consider discussion forums worthwhile". Doesn't really make sense. From a community point of view Plone.org still looks like a ghost town to me (regardless of the good people involved).
I used Zope for a site was back in 99, and a great thing about Zope was you could grab a product, just plug it in, and away you go, but it's amazing, so many of those great products never evolved much or just died. So I ask you, what is really happening there, cause I followed the discussion at the time and a lot of the developers felt frustrated that they could not really achieve what they were aiming for, but were more hopeful in Zope 3.
I think you also missed my point on resources too. Talk to someone who is a SysAdmin about Zope compared to a Perl/DBI system or PHP/SQL. Most of them wonder what's hit their box. Maybe this was because they didn't optimize it. Also, what you are saying also needs complete control of the box. Zope is one of those apps you want to dedicate a box for.
I've looked through your comments on Slashdot, and when it comes to Plone/Zope you seem to have extensive knowledge and experience. I'm sure that there are many Plone users/developers out there with similar expertise. Now all I am saying is... I take a look at the Plone book, and online docs, and all I get is a hint of what Plone is. When I look at the Cocoon docs, I get very good coverage of that product. What I am saying is the average CMS person comes along, and does not find it very helpful. The Plone book should be a lot lot better. I'm not getting much of a hint of the power and flexibility of Plone, that I get from you, from the Plone site. That's an incredible self inflicted disservice to Plone/Zope that the docs and Plone.org so poorly represent Zope/Plone.
Just say I build a site for someone. That someone wants something that is pretty easy to use, or has a great user base for learning and resolving problems. Not technical problems, just howtos. That person does not have a large budget. Now, I am probably going to use the product which I consider to have the best User documentation and the best online help forums. Now even if Plone is right up the top of the list technically, I am probably not going to use it cause I am wanting to look for something that will have a good community interface so my client is happy with the support.
I'm not really moaning about Plone. Potentially it's a great product. What I am saying is that if the Plone development community wants to engage the user community more, there are some things they need to address.