We have a project to build a web application that has many features like: google maps integration, item review and rating (something like eBay rating), chatting among users, content search based on content calculated value, integration with Facebook (for login, liking the content, fetch user's friends...etc),batch and real-time notification through SMS and email and many others.
We have two candidates for this zend and drupal, I tried to search a detailed
comparison between them without luck; only found high level stuffs.
Our criteria is to use a product which will not require lots of custom development and satisfies most of out needs out of the box, and it should be reliable and easy to maintain and extend in the future.
I would really appreciate if someone can shed some light on zend vs drupal comparison and point me to any useful recent analysis already done in this.
What are the real strengths of zend ?
Thanks in advance and best regards
Drupal is easier to have a project up and running with, it is a fully working web application out of the box. The flexibility of Drupal is pretty good, but be aware that using such a "pre-built application" type of framework tends to make the hard things easy to do, and the easy things hard to do.
Zend Framework, on the other hand offers much more flexibility, but at the cost of having to write things up from scratch yourself.
Actually, you are to choose from two different solutions. They are both used for building sites, but on a different level.
Base on the following:
Our criteria is to use a product which
will not require lots of custom
development and satisfies most of out
needs out of the box, and it should be
reliable and easy to maintain and
extend in the future.
I think you should choose Drupal. This is why:
Zend Framework is PHP framework, which enables you to build applications almost from scratch - you need to put some effort to reach the phase when you are able to actually use the application,
Drupal is Content Management Framework, that helps you build CMS system on the basis of your modules - only thing you need to start using base features is to install Drupal,
both Zend Framework and Drupal are extensible, but Zend Framework is much more extensible. Drupal has some architecture that should be followed and you can not do much about it (unless you really have time and resources to change it significantly and then be your own support, updating the core), but since you need "just extensibility" (not some major one), Drupal still meets your needs,
there are plenty of modules allowing you to add needed features to your application on both Zend Framework and Drupal, but in Drupal it is just as simple as copying the files and configuring it through the interface - there is usually nothing that has to be performed by developers,
You have to be aware also, that because of some architectural restrictions you should first analyze, whether Drupal is really suitable for your solutions. If you think the traffic will be heavy and you need different base concepts (user management, content management?), you probably should think about choosing more resource-consuming solution (which is Zend Framework).
Zend is an application framework while Drupal is more of a content management system (with some framework characteristics). That makes it difficult to compare them beyond those definitions.
Our criteria is to use a product which
will not require lots of custom
development and satisfies most of out
needs out of the box, and it should be
reliable and easy to maintain and
extend in the future.
There's no magic bullet for that but most of your criteria (pre-built modules) puts you firmly in the Drupal camp. It employ modules that you can plugin and config.
Drupal offers both the functionality of a framework (through modules and its API), and Drupal offers ready-made functionality. The trick is knowing Drupal very well.
Pre-made functionality in Drupal can be overridden through hooks, or you can find workarounds that DO NOT require modifying other modules, but sometimes this requires a lot of experience with the inner-workings of Drupal, for maximum control.
One major hurdle is deciding when to write in-house modules, or turn on modules provided in core or contrib. The problem (for me) is resisting the siren's call to use every module that Drupal provides either in core or in contrib.
Another technique is to turn on a module, and use the functions and data that the module provides, and create your own functionality on top of (or replacing) the functionality provided by the core or contrib modules.
With Zend, well they offer a very good set of classes but every page including admin pages, and features like caching, and routing will need to be built from scratch. In some ways this can be a good thing if it can get you away from the siren's call of wanting to use ready-made Drupal modules.
On the other hand, you own everything you have to make from scratch. With a community like Drupal, you can be part of a community that shares in development efforts.
Related
I am currently working with Zend Framework and I am extremely happy with it. What I want to know is at what kind of requirements it is better to use CMS's like Joomla or Drupal.
Considering my current project it is a portal application. It is completely made from scratch in Zend. Then some fellow comes and comment that it rather implemented in drupal you could get plugins for the stuff you built by hard efforts.
So I need a guideline for how to choose between CMS and A Framework at the kickoff phase?
The question in your case is whether to use a ready made CMS or to create your own system using a framework. The right answer depends on the following:
budget
number of users you will have (long term performance concerns)
further maintenance
total number of details (bells and whistles) you want to provide on the site
implementation with third party/custom APIs
special/custom features that require high level of freedom (example: StackOverflow reward points and badgets)
As this is a question most of us face pretty often, here are cons and pros of a ready made CMS vs a framework:
Ready made CMS
Pros
faster start and development time if your project generally fits in what the CMS provides
available modules and themes
backed up by community, meaning that new features, bugfixes, support, tutorials etc. will be provided to you free of charge
unified set of standards - it's easier to continue working on an existing CMS site than to take someone else's custom application (this is relative, but the point is that in a site that uses an existing CMS most of the things/setup will be familiar to you while in a custom app the previous developer had more freedom)
security is something you do not need to worry that much as in a custom app
Cons
if your requirements are very specific, you will need to override the default workflow of the system; in some cases this can be tricky and will make you spend more time than to write your own
redundant code in modules/plugins
performance - a ready made CMS will rarely be as fast as a custom made application
not suitable for every large website (unless you fit in almost everything that the CMS provides)
steep learning curve in some cases (Typo3, Drupal)
Custom application
Pros
it's up to you to define the structure and the logic of the application
app design is made especially for the project you are working on - so there is no redundant code
freedom to do anything you want
Cons
expensive - in most cases you/your client will need much more money for a custom app
further maintenance will be harder
changes and modifications of the structure can be very time consuming
if you aren't using a CMF you will have to reinvent the wheel in some aspects
Bottom line
Spend a couple of days and learn something about the CMSs out there, such as:
Drupal - my first recommendation; good for medium to big websites; good community; medium/steep learning curve
WordPress - my second recommendation; good for small to medium sites
Typo3 - enterprise level system; pretty complex, combined with a framework which can be used standalone in projects
Joomla - I personally don't like it and do not recommend it because of amateur plugins, but it is popular
SilverStripe
MODX
Concrete5
I think that any bigger and serious project, which will have at least 1-2 programmers to take care of the system at all times, should be custom. Exceptions are only if it fits exactly in what an existing CMS offers already.
Hope this helps :)
Take a look at Difference between a CMS and a web-development-framework on StackExchange.com.
A CMS (Content Magagement System) is used to manage content on a website. It usually provides tools to make this task as easy as possible.
Examples of CMSes: Drupal, Joomla, DotNetNuke etc.
A framework is like a set of libraries / classes to build a web application. Many frameworks provide libraries for database access, templating engines etc. This way, you don't have to reinvent the wheel.
A CMS is often build upon a Framework.
Examples of frameworks: CodeIgniter, CakePHP, Kohana...
#Voles mentioned what CMS and Framework is
So your question is "guideline for how to choose between CMS and A Framework "
Want to build a Blog or a simple website ?
Go for Wordpress , Drupal etc.
Want to build next facebook or stackoverflow or app of your own which the current cms is hard for you to learn or is limited with the features?
Then go for some frameworks or custom made ones. Be sure that you know how to build it in the right way.
You can have a look into http://cmf.symfony.com/ also.
Hope that makes clear.
Apart from all pros and cons of CMS and Framework , According to me you need to study your requirement at the time of kickoff. List out the modules you want in your application. Now check that how many modules are available in CMS you know about like drupal , joomla , wordpress etc. and also check out that how much customization you need in this available modules as well as custom modules you may need to develop as per your requirement . And if you found out that with minimum customization you can use any particular CMS and than go for it.
But in case your application may very complex in nature than I suggest go for any MVC framework like Zend , Cakephp , codeigniter etc.
Yes one other thing go with any CMS or Framework that you well versed with it.
Framework is like a library by using this library we can develop new thing.
Whether CMS as name imply its an inbuilt source to manage the content.
Like wordpress we don't need to develop anything.
Framework are the creator of CMS , CMS is basically a Content Management System which focuses on content managing where everything is perfectly setup for you with few lines of code and logics ur website or small app can be developed
Whereas in framework its deeper than CMS everything you have to write from scratch or use existing library which is generally used for making big app. Hope this would help
As far as I know, CMSs and MVCs are web application frameworks with coding libraries. CMS is way easier to use for beginners, as it has its pre-made functionalities available, so you will not need complex coding. I found useful information in Wiredelta's article, maybe this will help for you as well: https://blog.wiredelta.com/cms-mvc-framework-comparison/
Difference
CMS: A content management system (CMS) is computer software used to manage the creation and modification of digital content (content management).
Framework: A web framework (WF) or web application framework (WAF) is a software framework that is designed to support the development of web applications including web services, web resources, and web APIs.
A Framework offers a basic web application structure with a set of tools, to let you build your own web application, or even a CMS.
How to choose between them?
I have been working for many years with different open source CMSs (Much with CMS Made Simple, Prestashop. A bit with Drupal, Wordpress) and frameworks (Much with Symfony, a bit with Zend Framework).
My conclusion is:
If your requirements can be fulfilled with features of an open source CMS, and there are only a few custom requirements, use that CMS
If your requirements are complex and/or more custom, use a framework
Problems when using an open source CMS
Plugins often don’t provide all features you need
Community plugins
Have limited features. If you want to extend the features, you end up copying or modifying plugins, making them harder to update
May not be compatible with other plugins or even with the CMS version you have
Harder to debug since it's not the clean code of your team
May not be fully for free and come with additional costs
You spend a lot of time on searching and evaluating plugins
Own plugins
Limited CMS features (eg. missing dependency injection) may lead to unstructured coding
When your plugin gets more big and complex, you may start to ask yourself, why not having used a framework from the beginning
High learning curve, depending on the documentation, technologies used, and how many architectural rules you have to follow
Highly dependent on community
You may not get a fast answer or solution from the community
You may have to debug deep into hardly-to-read plugin or CMS code
Own fixes make updates difficult
Usability
Admins may get overwhelmed about default features, and may generate more support tasks for the developer, where a simple content editor for the admin would suffice
Currently, I am looking to switch from a home grown eCommerce website to a custom site using a framework. I need something that can upscale (handle hundreds to thousands of transactions), is easily maintained, and simple to customize.
I was recommended the symfony framework by an outside source, but I have not previously heard of it. My understanding is that using something like symfony would still require integrating magento (or its ilk) for commerce on the back end.
Is there a better solution? Is there another platform that would fulfill all of my needs?
It's hard to say what platforms would suit your needs without knowing what they are :) Do you have specific requirements that are unusual in the ecommerce world? Having said that, a decent ecommerce framework will allow you to adapt the core functionality to suit your needs in a robust manner.
As #usoban suggests, Magento doesn't require Symfony, but it is built using the Zend Framework. So if you're familiar with the Zend patterns, then you will adapt to Magento much quicker.
Magento has a broad range of features "out of the box" and is certainly capable of scaling to large volumes of transactions and visitors.
It does require serious hardware and resource optimization in that high-end configuration, but there is a body of knowledge on how to achieve that both on the Magento site and elsewhere on the web. The Enterprise Edition is also designed for performance (includes Full Page Caching) along with features/functionality that are important for administration of serious ecommerce (content merging and staging, granular permissions, etc).
You will hear a lot of complaints about Magento's learning curve, and they are mostly justified, particularly if you are coming from a traditional PHP coder background. However, if you take the time to work through the tutorials, and recognize that the complexity is due to the power and flexibility of the system, you are likely to find it worthwhile. Also, us StackOverflow peeps reckon that you'll get much better support here than on the Magento forums :) There tends to be some questionable advice there, at least here you can see what the peers think of the answers :)
Hope all this helps!
JD
There are bundles now was developped for this purpose. Some of them can give you a lot of functions like Cart management, products by categoris,...
This is a bundle that can help you sylius
Also, you can base your developpement on vespolina which is in production now.
Drupal 8, now uses some componenets of SF2, and in the future it will be developped entirely on the top of symfony. So you can start using Drupal 8 but it's in developpement stage also.
Using symfony2 will give you the possibility to use also ezPublish 5 and PHPBB4.
As you can see, most of PHP CMS and business projects are moving to SF2. And the reason is very simple, SF2 has implemented the JSR Specifications but not in JAVA language, in PHP5.3
I advice you to try it first for a small project first to learn the best practices implemented by sf2, specially the IoC (Inversion of Control) also called Dependency Injection.
I have worked with symfony in several projects (one of them is a custom e-commerce site built from scratch), and I'm very happy with this framework.
If you plan to use Magento as a backend and symfony for the frontend, I'd suggest you to use Drupal Commerce http://drupal.org/project/ecommerce because Magento is a heavy piece of software. You can even forget about symfony and extend drupal to fulfill your needs.
An alternative to Symfony could be Zend Framework http://framework.zend.com
ZenMagick is an on-going project that uses a lot of Symfony2 compoenents. It is currently at version 0.9.11. The homepage describes it as
Originally based on Zen Cart, it has evolved into a flexible and robust system of its own, that allows you to get the shopping cart you want.
We are building a custom application using LAMP with P being PHP. We also need to have CMS to manage various aspects of the site. The two options for the CMS are
Build a complete custom CMS from scratch
Extend an existing open source CMS to fit our needs. This way we can use some of the features out of the box and others we will build ourselves.
I would like to get your feedback on the following
What are your experiences with option number 2?
Which CMS would you recommend that we can further customize and extend for our use?
What are the best ways to integrate a custom application with other external CMS?
I really like the MVC approach for a CMS (you did mention extending), and PyroCMS is built on Codeigniter. It might not (out of the box) serve all of your needs, but easily could. Its worth a look, at the least.
A whole set of CMS are available nowadays, everyone with its own pros and cons.
I guess the first step in your case is to make a list of the features that you:
MUST HAVE
SHOULD HAVE
COULD HAVE
Once you have this list, you'll be able to compare the existing CMSs to see which one better fits your needs.
There's no a best CMS (otherwise everyone would use the same).
Said this, Joomla offers a powerful base system, easily extensible. But this is just my modest opinion. Right now, 4712 extensions exist for this CMS. If you still can't find all you need, it's possible to implement your own extensions (in terms of plugins, components and modules). See the developers section for more information.
I've recommended ModX in response to previous questions
It provides a nice clean framework which is simple to install and is easy customize.
For your situation I think ModX is a strong contender as it allows you to embed your own php code in your site using snippets - Bob's guide on snippets is a good overview. The snippets can be managed through the backend web manager and they can easily be dropped into any pages as required.
Larger applications can be setup as modules, this is similar to many of the other main stream CMS's, it's just that in ModX the web based control makes the management of the code a simple task.
We currently use MySource Matrix CMS for large projects, Wordpress CMS for small projects and Zend Framework for bespoke applications...
I'm not trying to confuse and compare a CMS to a framework, that has been done before :-)
I want to identify a few CMSs for review that have foundations in strong (preferably independent) PHP frameworks.
The only one I have looked at is SilverStripe CMS and Sapphire Framework.
We have many clients that have a CMS for internet and/ or extranet and then various other bespoke applications that are then integrated via various means to look like they're in the CMS.
I believe it will be more productive and beneficial to have a common framework between these branches so they can be natively merged.
Hope this makes sense.
PS. I have used custom assets in MySource Matrix and specific modules in other CMS but you feel you are working for the CMS not the application you are building.
Have you looked at Expression Engine? Its built on top of the CodeIgniter MVC framework, and may provide a lot of flexibility for having parts of the site be managed content, and branching out into more application type stuff using CI when needed. Not free, but all my colleagues that use it, swear by it (so much so that I'll actually consider it for the next project that fits this profile). There are also add-ons for many of the commons problems you're likely to want to solve.
And while not PHP, the Django framework is also a nice cross between CMS and App Framework, with some really great features like DB Migrations, etc. I can honestly say that Learning Python made me a better PHP Programmer, and the projects I've done with django were fun and fast to code. Not to start a holy war, but I describe Django as Drupal without all the clutter (and yes I've worked with Drupal enough to respect and fear it at the same time ~ too much friction in the Drupal dev process for my taste).
Even if I didn't get clearly what you are looking for I was just searching for a CMS that is not bundled with a propietary PHP framework and it should also be fast, simple coded, ordered and flexible to extend.
After a lot of search I found OctoberCMS. It uses Laravel PHP framework and it's intended for wevdevelopers/programmers, may be in a future it will also support more WYSIWYG edition. Right now it's very fast and easy to extend via MVC implementations or plugins.
It has a nice code and structure to work as programmer. If you like to create content via HTML+CSS and you don't care about WYSIWYG, then this could be a great alternative.
It's a very different approach compared to other CMS bundles. I'm not saying it's better, just different.
With their slogans:
The PHP framework for web artisans
http://laravel.com
The platform that gets back to basics
https://octobercms.com
Have you tried Drupal? We have used it as a CMS and also integrated it with things like Microsoft Dynamics and UPS Worldship. It's pretty flexible like that.
I wouldn't call sapphire and independent framework for the simple fact you'll have a hard time finding many apps written in sapphire alone - sapphire pretty much is silverstripe. Theres also the issues of silverstripe using an ajax powered admin interface for much of its own functionality meaning you have to adhere to these to keep the same look and feel with the bespoke work you want to add.
For the past time I have been working on a Zend Framework based webshop application that we are building from scratch. The application has been successfully been set up for several clients, but we are stumbling upon more and more problems regarding extensibility and modularity of the application.
A lot of clients require a lot of different approaches on some matters, often requiring customizing default modules or extending them. I have been looking on the web for Zend Framework based code that could guide me to this and so far Magento has been the only example I have come up with. Although Magento seems to do a very good job offering extensibility and modularity, the code is far too complex and extensive for my current needs (or so it seems).
In an ideal situation, it would work as follows:
Each client gets the "base" application installed
Modules, controllers, models should be easily overridden or extended
New modules should be easily created
Are there any other Zend Framework based applications or other pointers that could guide me in the right direction?
Thanks in advance.
I think version 1.8 of the Zend Framework is going to address a lot of the issues with building modular applications. Especially with the new (Zend_Application) it should allow for auto loading of module resources, which isn't easy to do at this point.
I don't know much about it, but this may be something to look into. 1.8 should be out by the end of this month.
Zend Framework is a... framework. What you're looking for is a full blown system. That's your job as a developer is to build a system on top of a framework (whether Zend or your own).
People usually tell you not to reinvent the wheel, but in this case you need to develop your own system for your company to easily be able to develop and deploy for new clients.
Like already stated, it is a very complex answer you are looking for. You will not get that answer.