I need your help winning a major battle for Codeigniter

#1
[eluser]usmc[/eluser]
I just started working as a consultant for a major publicly traded company using iSeries servers as their DB/web server solution (don't get me started on that). For the last few months IBM has been pushing Zend Platform with the Zend Framework (without really mentioning the fact that it uses PHP) like a crack dealer to RPG programmers as their "web development platform". Now I don't mind Zend core (and it is necessary to easily interface with iSeries servers) but the Zend framework is one of the worst frameworks out there right now. I mean it is monumentally bad. If you have a framework that absolutely needs internal caching to function you have a serious problem.

Basically there are three of us "consultants" teaching the 35+ web developers (who were RPG programmers last month) basic web development concepts ... like why in-line styling leads to a maintainability nightmare (not to mention the fact that the page loads slower etc.). Most of these concepts seem very simple to grasp but the battles are piling up. Perhaps there are those out there who think storing images in binary form in the database is a good idea but I am not one of them. I am certain that we will get there but I would rather not use Zend framework for a year until it is inevitably ripped out and thrown away which would also harm the perception of PHP as a viable option for this company too.

Where does that leave this post. Well I need your help. I need the help of the CI community now. If we lose this battle it will "embolden" (thank you Bush) the Zend/IBM machine and will allow them to continue pushing the falsehoods of Zend using this company as yet another "success" story. If the Zend framework did anything right I would use it but as it stands now I feel dirty touching it. Its everything a framework shouldn't be.

I need any success stories, best practices etc. that you have with CI in an IBM environment (hopefully iSeries i5 etc.).

I need any code snippets that you have that are specific to the iSeries.

I am more than willing to reimburse any member for serious help.

Help Me CI Community you are my only hope.

#2
[eluser]elvix[/eluser]
Well, the only thing I can offer is how easily Zend integrates with CI. I've done it before in the past, it allows you to easily extend CI's functionality with whatever Zend functionality you need. Not sure if that meets your needs, argument-wise, but it might help.

Not sure of latest best-practice for integration with 1.7, but a google search turns up several results.

#3
[eluser]ralphschindler[/eluser]
[quote author="usmc" date="1247953307"]worst frameworks out there right now. I mean it is monumentally bad. If you have a framework that absolutely needs internal caching to function you have a serious problem.[/quote]

What kind of "internal caching" are you referring to? Are you talking about byte-code caching? Are you talking about application layer caching?

If its byte-code caching, I would say that 100% of PHP applications benefit from adding something like Zend Optimizer or APC regardless of their size and scope. Zend Framework has a lot of components that solve a lot of problems. The solutions are generally very configurable and always use-at-will. These tenants tend to lead to framework that has a large amount of code. The benefit here is that as a result, you have an immense library of tried and tested solutions that should ultimately save you hours upon hours of development time. Getting back to the byte-code cache, PHP is a runtime compile and execute language. As such, you can only be doing a service to yourself by introducing a byte-code cache (eliminating the compilation stage) to your stack.

[quote author="usmc" date="1247953307"]Basically there are three of us "consultants" teaching the 35+ web developers (who were RPG programmers last month) basic web development concepts ... like why in-line styling leads to a maintainability nightmare (not to mention the fact that the page loads slower etc.).[/quote]

Cheers to you for fighting the good fight. I have had the pleasure of working in the i5 environment, and know first hand that this is no easy task (I have done and am continually doing testing for ZF on iSeries servers). The developers you are teaching most familiar with two words that should send shivers down the spine of anyone that have spent most of their days in the modern web: "green screen".

[quote author="usmc" date="1247953307"]idea but I am not one of them. I am certain that we will get there but I would rather not use Zend framework for a year until it is inevitably ripped out and thrown away which would also harm the perception of PHP as a viable option for this company too.[/quote]

If your initial perception is that a certain technology would be "inevitably" ripped out after a year, you'd certainly be doing your client a disservice by using said technology in the first place. No one should go into the software business expecting to re-write a project from the ground up each and every year. That seems, to say the least, most unproductive.

But that said, I am curious why you would think it would be ripped out after 1 year in the first place. Zend Framework is a completely use-at-will architecture. You are free to use at little or as much as you'd like, thus solving the problem in the most efficient, effective, AND most maintainable way possible. We are dedicated to the long term viability of Zend Framework, and that in turn should give your client some comfort and satisfaction. Similarly, from what I know of EllisLabs, they too are also heavily invested in the long term viability of Code Ignitor as a development platform for PHP. That said, either direction you choose to go in, you would be doing a good service to your client.

[quote author="usmc" date="1247953307"]Where does that leave this post. Well I need your help. I need the help of the CI community now. If we lose this battle it will "embolden" (thank you Bush) the Zend/IBM machine and will allow them to continue pushing the falsehoods of Zend using this company as yet another "success" story.[/quote]

[quote author="usmc" date="1247953307"]If the Zend framework did anything right I would use it but as it stands now I feel dirty touching it. Its everything a framework shouldn't be.[/quote]

Where does that leave this post? I need YOUR help. I'd like to understand the experiences and expertise you have that frames your perspective of ZF. I'd like to understand what you mean by it being "everything a framework shouldn't be". We (like EllisLabs & CI) have a tremendous community that have consumed and contributed back to the project. BOTH projects are success stories in my book.

When it comes to your client, the success stories will come when you meet their goals and give them a worthwhile product (and more importantly in your case, an education). It will not be purely defined by any one aspect: the underlying technology, the actual contractor that delivered it, the team that developed it, the maintainability of the solution, or the day to day processes that keep the project going. The "Success Story" will be defined by the the sum of success in all aspects of the project.

What I urge you to do is put down some of your more ill-conceived notions and evaluate ZF for what it is. If at the end of the day you don't like our MVC implementation, don't use it. If you don't like our Forms solution, don't use it. If you simply don't like the fact that the paradigm we've chosen is complete object-orientation and those concepts are out of the reach of your client within the allotted project timeline, again ... don't use it.

If there are elements you DO like, use them- I cannot impress enough that ZF is completely use-at-will. If you want to use ZF in conjunction with CI as mentioned by elvix, do use it. Also, as elvix says, there is a massive amount of documentation both on our website (http://framework.zend.com) as well as The Google.

You can find help typically on IRC in #zftalk and on the Zend Framework mailing list among other countless websites.

Hope this helps,
Ralph Schindler
Software Engineer
Zend Framework Team

#4
[eluser]usmc[/eluser]
The Zend Framework out of the box has a 3 second page load time for hello world. That is unacceptable.
I can take CI with the exact same server configuration and do it in .2 seconds.

What is the Zend recipe for this type of speed (no caching ... none)?

Its sad to even talk about caching out of the box.

#5
[eluser]ralphschindler[/eluser]
[quote author="usmc" date="1248149307"]The Zend Framework out of the box has a 3 second page load time for hello world. That is unacceptable.
I can take CI with the exact same server configuration and do it in .2 seconds.[/quote]

I am sorry this has been your experience. Unfortunately, with vague or little details, we'd never really be able to understand why you are getting such drastically different numbers. I've taken the liberty to install both the ZF quickstart application, as well as the CI initial application and just using the standard dispatch cycle for both frameworks.

Here were my results:

Code:
~$ time wget http://zfquickstart.local/ >/dev/null 2>&1

real    0m0.052s
user    0m0.001s
sys     0m0.003s
~$ time wget http://ciquickstart.local/ >/dev/null 2>&1

real    0m0.023s
user    0m0.001s
sys     0m0.004s

These results are exactly what I would expect them to be. As you can see, with the same application, on the same hardware- a simple dispatch to an action controller. Both are under 1 second. We could go into the super technical details about these numbers all day long, but I dont think that is gonna offer you anything of consequence unless you look under the hood yourself.

[quote author="usmc" date="1248149307"]What is the Zend recipe for this type of speed (no caching ... none)?

Its sad to even talk about caching out of the box.[/quote]

I still think you are missing the point. In any kind of enterprise environment, I am simply saying I would not run any application, be it a ZF or CI based application, without having an op-code cache in place. Its simply a deployment best-practice.

#6
[eluser]wiredesignz[/eluser]
Real time for a single request is irrelevant.... the percentage difference is where the issue lies.

Your results show ZF is 2x slower than CodeIgniter. How about posting a legitimate performance test of the two frameworks comparing maximum requests per second instead.

#7
[eluser]usmc[/eluser]
"deployment best practice" You have to be kidding me. So what about the segmentation faults caused by caching? Let me guess ... now I need to start blacklisting. Sounds like double (if not triple) the development time.

In any case what is the optimization recipe for the Zend Framework with the default install. Am I supposed to go through and modify every instance of "require_once"? Now I need to modify core files. Seriously give me a good strategy and I will follow it. One that still allows me to upgrade without tracking changes made to the core of the framework to apply to future releases.

Here is what I think. I think Zend took a scripting language with some good default functionality and obfuscated it to the point that every potential client that it was recomended to would need to pay serious money for support. All done in the name of OOP and maintainability.

Hard to ignore the big PHP shops kicking this framework to the curb. Showing up at Zendcon and telling campfire horror stories.

#8
[eluser]ralphschindler[/eluser]
[quote author="wiredesignz" date="1248180309"]Real time for a single request is irrelevant.... the percentage difference is where the issue lies.

Your results show ZF is 2x slower than CodeIgniter. How about posting a legitimate performance test of the two frameworks comparing maximum requests per second instead.[/quote]

True, and this is why I say the atypical 'Hello World' argument is a non-starter. Its never indicative of a real world application performance, or of what a real world applications code-base should look like. Hello world in PHP is best served up in a single line: <?= 'Hello World'; ?> Wink

In any case, there is a rich feature set inside the MVC layer provided by Zend Framework that developers typically don't get to experience until they are actually coding a real project. This includes but it not limited to the controller plugin system, on-demand & preloaded action helper system, the built-in helpers, the loosely coupled view system, the autoloading capabilities and more.

Keep in mind, when evaluating a framework, performance is only one small part of the full story. Also consider scalability, maintainability, reliability, availability, extensibility, manageability, and security.

I do not know enough about CI to discuss how they fare in every above mentioned category, but I can only imagine with the community that surrounds the CI framework, they fare pretty well.

Like I mentioned before, give both a try, find what you do and don't like, and ultimately decide on something you are both comfortable with and what makes the most sense to your client.


[quote author="usmc" date="1248202698"]... Showing up at Zendcon and telling campfire horror stories.[/quote]

If you go to Zendcon, look me up! I'll buy you a drink and we can discuss all of the intricacies of these frameworks Smile

#9
[eluser]usmc[/eluser]
[quote author="usmc" date="1248202698"]... Showing up at Zendcon and telling campfire horror stories.[/quote]

Quote:If you go to Zendcon, look me up! I'll buy you a drink and we can discuss all of the intricacies of these frameworks Smile

Fair enough. If Zend makes it through the next month (here) then I will be there.

What are best practices for optimization by the way?

#10
[eluser]usmc[/eluser]
Could you post an optimized sample application we could use as a starting point?
Something that doesn't use Dojo.
Can I have pickles and fries as well.

This is a great opportunity to show that I am just making sweeping accusations with little or no substance to my arguments.


Digg   Delicious   Reddit   Facebook   Twitter   StumbleUpon  


Users browsing this thread:
1 Guest(s)


  Theme © 2014 iAndrew  
Powered By MyBB, © 2002-2019 MyBB Group.