Zend Framework
There's a lot of speculation flying around about the Zend Framework; some positive, some not so positive. I'm getting a little bit sick of hearing people spread misinformation about it; I know that official news on the framework is pretty sparse, and that the speculation is mostly as a result of that lack of information, so I'm going to say a few words to try to improve the situation.
So, why yet-another-framework? Clearly, it's useful to have a standard library of components that you can drop into your applications. Why is Zend getting behind this? One of the major reasons is that, as PHP attracts larger and larger businesses, there is a greater need for such a component library. One big problem for big business is that it's pretty much impossible for them to determine just how "legal" the existing libraries are.
What do I mean by this? When you have an anyone-can-commit-or-submit policy, you have no idea where the newly contributed code has come from. How do you know for sure that it wasn't stolen from someone's place of work, or taken from an application without respecting its license? (eg: "borrowing" some code from a GPL app and shoving it into a BSDish framework, without changing the BSDish code to GPL).
It makes a lot of sense to control the repository and build-in accountability as part of the submission process. By having contributors sign an agreement that forces them to take responsibility for the code they commit, the framework and its users are now insulated from any potential legal recourse that might arise. And because the people committing the code are aware of that liability, they'll take greater pains to ensure that their code is legally allowed to be contributed. The end result is "Clean IP", and is immediately much more appealing to anyone that takes their business seriously.
Of course, you need some kind of accountable body to take care of the paperwork for the submission process, both in terms of processing new contributors and to be there in case of some kind of audit. If you're a business that takes legal matters seriously, are you going to trust a bunch of guys that probably haven't even met each other in real-life to maintain clean IP, or a company backed by other PHP related businesses?
Aside from clean IP, there are also questions of code reliability an stability; is the code any good, is the API going to be subject to wild changes between releases, what kind of testing and QA procedures are in place? Can you trust that they'll be adhered to?
So, there are a lot of business reasons behind the decision to create the Zend Framework, what about technical merit? Contrary to some of the hot air that's been blowing around the blogs, there is code already, and it's actually pretty good. Here's a directory listing from my CVS checkout, to give you a taste of what's already implemented:
% ls CVS ZDBAdapter ZLog ZTemplate ZActiveRecord ZException.php ZPageController ZUri ZController ZInputFilter ZSearch
There are plans for AJAX, SMTP, and web services components, among others. As you can probably deduce from the names, the components already implemented include the ActiveRecord pattern, some glue for MVC, flexible logging and templating and a security related input filtering class are also present. ZSearch provides document indexing capabilities, to make it easy to implement custom search engines for arbitrary documents stored in arbitrary storage containers.
One of the goals for the project is to keep every clear and simple to use, without forcing you to adopt the entire framework throughout your application; it doesn't impose itself on your app, and doesn't require any configuration files to deploy and use.
I'm not going to reveal any more about the code than this right now; one of the reasons that the code isn't open at the moment is to keep the initial work manageable and focused--too many cooks spoil the broth, as we they say.
So there were have a bit of a sneak peek and some background on the Zend Framework. It's undergoing active development, with multiple code and documentation commits going in daily. I can't give you any more detail on the schedule, you'll just have to stay tuned.
Would you like to work
with me?
I have positions open for server/infrastructure software development (C) and QA.

#
I hadn't considered the "clean IP" angle on things. Do you know how businesses handle open source projects such as PHP itself? I remember all the brouhaha surrounding Linux and SCO, but I never heard anything very conclusive about this particular issue.
unit tests?
Hi
The first thing I'm looking for in a new piece of code are unit & etc tests. Will this be a feature of the new Zend framework?
Also, it sounds like it's going to be all OOP - is that correct?
On another note, if licensing issues were used to pitch the Zend framework I don't think I'd be too comfortable with that. It wouldn't be fair to imply that other, competing open source libraries are flawed in that respect (although you would be justified in naming specific examples where you believe this to be a problem). That may not have been your intention.
License?
Could you shed some light on whether the license will be PHPL-ish, which the faq implies, or something that is GPL-compatible (PHPL is NOT GPL compatible), like perhaps the BSDL?
Thanks for the further info.
Clean IP
In response to Chris, there is a difference between using PHP the language, which is typically used un-modified, and integrating PHP scripts into your own code. It's pretty clear that PHP is free and is going to be around for a while, regardless of which specific FOSS license its published under. It's much less clear what the implications of "linking" to some 3rd-party code might be and how that might taint your own application code.
Don't take this "Clean IP" angle to imply that all other code has dubious legal origins, I definitely didn't say that, and that message isn't part of the "pitch".
IP Concerns are very real; I've had a couple of customers bring them up in the past. It boils down to trust; It doesn't matter if you and a thriving community have written the best code in the world; without someone to vouch that all proper measures were taken, there is an increased risk associated with your project.
That risk might seem tiny, but the whole SCO/linux thing shows that it can come at you from out of the blue.
I don't want to make too big a deal out of "Clean IP", it's just something that we, as FOSS developers, don't tend to think about.
OOP and testing and stuff
Yes, the Zend Framework is PHP 5 OOP based, with unit testing. There's also documentation (quoting Andi: "Documentation is key").
I don't know the exact licensing that will be used, but the intention is to provide clean, integration friendly components. It definitely won't be viral, and will most likely be something BSDish with some kind of patent attribution clause and contributor license agreement.
Contributing
Hi Wez,
Do you have any tips on how one could contribute to the project? Is this going to be open (once a developer is known and has agreed to IP stipulations etc)?
Might be jumping the gun, but we have just decided to halt work on a framework that supplies (just by looking at the package names in your post) similar functionality for PHP5.1/PDO. No point duplicating...
OOP and testing and stuff
Hi
Thanks for your reply. Will be looking forward to the Zend release.
Noel
Ruby on Rails for PHP
Seeing the filenames, I immediately thought 'Ruby on Rails for PHP'. This was inforced by your mention of 'smtp support'. One of the three focus points Ruby on Rails mentions on its site is the smtp engine (which I find funny, to me smtp is just a technology that you might use for some feature, not a core framework target thing)
But if this is indeed 'php on rails' then why not support a project like Cake which is already more than halfway there? (or any of the other ror clones)
Where is the difference...
Between this and PEAR? I did not see anything that is not already available there. Could anyone give me some valid reason why I should move from Smarty to ztemplate? Or from PEAR::DB to ZDBadapter? Or is this just another hype Zend is trying to create to get more bussines?
The difference...
I would hope that ZTemplate has a better design then Smarty, and like wise for ZDBAdapter and PEAR::DB. One would hope the difference in design would be enough to make the change, otherwise, yes, it would be a waste of time. One of the goals for the project is to keep every clear and simple to use, without forcing you to adopt the entire framework throughout your application Of course, it sounds like the plan is to keep dependancies to a minimum, and it will probably be the case that if you want to use Smarty instead of ZTemplate, go ahead. You can pick and choose the controllers/components/libraries/whatever you want to use, and mix and match external ones.
Better, faster, higher, hope you have a parachute...
Ryan got the idea, Hope. In my oppinion this is hopeless and slighty respectless to the people who actually brought PHP where it is now, like Horde, PEAR for the components repository, or other projects like EZ or Typo3 (and all other you like to put here ;).
Whether we like those projects or not, they provide quality packages (I do not say that all are good), this framework/component library/whatever attempt is everything you want but a sign that the community is the target or the source.
This is the only problem here, as it was already the case in nearly all marketing actions from Zend, giving wrong informations (in this case, nothing is good outthere and only them know what to do and how to do it).
Anyway, have fun with it :)
Release date?
When can we expect a first release to the public?
Respect?
Zend collaborating on a framework with other businesses is no more disrespectful of other frameworks like PEAR, Horde etc. than any of those frameworks are to each other.
Let's pick a random example; Davey has been working on his own framework, with a view to making money out of it in some way. Is he being disrespectful to PEAR, Horde etc? How is that different from the ZF, which is intended to be used for free?
RE: Respect?
It is not the fact that Zend is working on a new better faster framework that is respectless but the argumentation used in the announcements and the website.
It is only the same way that was used in the past, huge marketing, announcements and PR to disinform non technical people.
Zend has a much more larger communication force than any real OS projects, they use it in a way I completelly disagree (and I'm not alone with this view), and I'm pretty sure you (at least partially) agree with me here.
Notice already the naming difference between the announcement and the current page, PCP, PHP Community Project to Zend Framework. That only confirms the initial idea I got from the announcement.
Now, about the idea of a Zend Framework, it is all benefits for PHP, choices and fair fights between projects are good.
What is a framework?
"a standard library of components that you can drop into your application" is not a framework, it's a library of components.
So, what constitutes a framework?
:Clay
Integrity is the key!
Zend Framework
I am all for the Framework thingie <- (my word) as long as it is based on it's own design. Not just calling something (AJAX) some other name when it has a real name already. Also any Framework is only as good as the integrity of the company or developer(s) that design it. As for the PHP Group, I feel the developers have done a awesome job keeping the community involved with everything happening in PHP, I think PHP is better because of this. As for Zend the company, I as a developer have limited trust. When one invests in something that is advertised to protect their intellectual property and it doesn't anymore and the company does nothing for a long time to show you that they will fix the problem then you to will have issues of trusting said company with anything that they might develop in the future!
Like anything related to computing, including creating software, web services, operating systems or a new framework. The item developed must prove to be stabile, never infringe on any copyright, do what it is advertised to do and be secure. That is the simple part, the hard part which accounts for 80% or more is the servicing that you provide for your developed item. If you don't provide good services you will never make it in a corporate environment!
Take Care, Wez! As always thanks for all your hard work...
Sonia
Zend Framework
HEre's from http://blog.enargi.com/programming/php/zend-framework/
ItÂs great that there will be standardized framework in php. But why write framework in php itself? They program Zend engine, why not include that into C code or php engine itself.
Apart from standardization thereÂs no advantages in Zend framework. ItÂs great that they are doing it, but they still should implement framework at the engine level.
OSS cooperation
So in terms of clean IP this means that you guys will not draw from any other open source code at all? Do you guys foresee there be some open source code that is clean in terms of IP and draw from that in that case?
Or will you require your developers to work from scratch in a clean room environment?
Pitch
Eehm. As I read it the 'Clean IP' thing is the main pitch for this Zend Framework. There only seem to be two 'advantages' to using the Zend Framework instead of something like CakePHP. This 'Clean IP' thing (which sounds very FUD-ish to me) and the fact that Zend is behind it (which can be both an advantage and a disadvantage).
It looks like SCO has destroyed quite a bit in the last couple of years. SCO combined with the completely out of whack legal system in the US :) All very, very unproductive :\ I guess we'll have to learn to live with that.
Anyway. Bottomline is that it's not fair to use this 'clean IP' thing (which implies that it's dangerous to use anything else) as a marketing pitch. It's nice for the big boys that have lots of scared lawyers (that would like to keep their job). It's something extra for the enterprise class customers, 'market' the framework on it's other (technical) merits to the rest of the world.
How is it different than php on trax?
how is Zend specifically different than PHP on Trax Warning: Missing argument 2 for wiki_restricted_markup_link() in /Users/wez/Sites/netevil/include/wiki.php on line 86 (ttp://phpontrax.com). I see that trax has yet to get testing functionality built into it, but i think they are considering using an existing PEAR library unit testing tool to handle that.
It seems to be very similar to Zend otherwise; much more similar than other php mvc frameworks out there. currently i think it is only a couple hundred Kb in total size. it is very close to Rails.
BC
I hope Zend framework 1.0 will be compatible with 1.1 on so on. :P
If it follows the PHP core BC rules, it will go nowhere.
I hope I will not have to change tons of code over and over again, due to "litle changes between versions".
Major benefits of Zend Framework
I see a wide array of benefits to using the Zend Framework:
1. Free license
2. Entire framework created from scratch - no obsolete code over-head hanging around for backward compatibility
3. Support and insistence of PHP 5
4. Extreme simplicity - easy to learn/use
5. Light weight - so it can be used on very large websites
6. Free from IP infringement issues - very important!
7. Use only what you need in your logic. This feature used to be called serviced-based architecture (SBA) - instantiate only what you want on a need-to-use basis. I worked on SBA on PowerBuilder/PFC before and can say it is the most optimal architecture. This keeps the performance at its peak (can be used even on large websites) as we don't need to load/instantiate unnecessary classes into memory. If in doubt, try defining a couple of classes inside a single file, include it in another PHP file and run the debugger - you would notice it pre-loads each and every class found in the file into memory although class definitions themselves are not executable unless invoked/instantiated.
I only hope they don't restrict us from using templating engines such as Smarty, Savant...
Shekar
Agency
I accept nothing less than the latest features to take advantage of any performance gain I can, and I believe that the Zend Framework has the right idea to only support newer versions of PHP.
I believe that this is exactly what the PHP community needs. Sure there are lots of PHP frameworks that exist but many of them are bloated or don't take full advantage of the latest PHP features. And I can't stand installing PEAR, it just doesn't meet my performance requirements.
I have developed and been using several classes that are very similar to what Zend Framework is providing but perfecting my code is an ongoing process. If Zend is willing to manage such I task then I welcome it. This will only allow me to be more efficient while writing PHP applications.
As a note for anyone who like their current PHP framework, keep using it. You're not going to wake up one morning with cops at your door just because you're not using Zend Framework. It's just another option that you may consider. The final choice is still up to you. And thankfully the opensource community is all about choices.