Zend Framework

Would you want to participate in a project to build a ZF2-based WordPress-compatible blogging platform?

Don’t know if it’d happen.  Just curious at this point.

The reason why I even asked the question was because WordPress, love it or hate it (I actually love it), is antiquated and, quite honestly, difficult to build for.  But if you were to build something that replaced it you would be facing a massive uphill battle due to its market size.  Ecosystem REALLY matters and it would matter doubly here.  So if you were to build a blogging platform it would need to have some kind of compatibility or mechanism for replicating functionality or people wouldn’t use it.  This poll is simply to see how many people would actually be interested in undertaking a project like that.


There is also some interest in “why” someone would want to do a project like this.  For myself, it comes down to the fact that I want to have a blogging platform that is mostly architecturally sound so I and others can build useful plugins, themes and such in a way that is easy and relatively painless.  But at the same time, there are hordes of other useful plugins and gorgeous themes that would not have a home, yet, on that platform and so you’re left with a chicken and egg problem.  That is why a compatibility layer is so important.  You could build the new stuff but still use the old stuff until something better comes along, if at all.

That is not to say that this is necessarily a good idea.  But with my own setup, I wish I could more easily build plugins on a system where theme-ing made sense, but I could still could pull in other third party tools.  That is why I’m asking the question.

And please don’t fill my comments about how it can’t or shouldn’t be done.  It can be done.  It’s not a question of if but of resources and desire.

And, for goodness sake, I’m just asking a frigging question.

24 thoughts on “Would you want to participate in a project to build a ZF2-based WordPress-compatible blogging platform?”

  1. While this is quite a cool integration idea, the WordPress code base is so horrible!I’d re-take a comment I just saw and say: better to build a blog module + migration tool 😀

    1.  @Ocramius I agree that trying to make it WordPress-compatible will likely be shooting a project like this in the foot. I can see the allure of having available all the WordPress plugins, but I think building a clean platform from scratch with a solid migration tool and leveraging the ZF2 module infrastructure for plugins is the way to go. In fact, the ZF-Commons group has already started discussions about building blog module for ZF2. It would be nice if those interested in a project like this could work with the ZF-Commons group and focus their efforts on one project so we don’t end up with 15 different incompatible half-ass ZF2 blog modules. Feel free to come chat with us on #zftalk.2 on Freenode!

    2.  @Ocramius The problem with simply building a migration tool is that the real strength with WordPress is not its blogging ability but the extremely wide array of plugins and themes that are built for WordPress.  My concern with simply building a migration tool is that without the ability to utilize WordPress plugins and themes you are basically starting a completely new platform and community, starting from scratch.  That is a BIG hurdle to overcome.

        1.  @Ocramius Nope, not sure.  But what I do know is that the five nines, in this case, refer to people who use WordPress but don’t care much about the underlying technology.  One of the things that anyone must be aware of is the market.  The blogging market does not care about WordPress’ API.  The plugin developers do, but not the market in general.  The market also doesn’t much care about plugin quality.  They care that they can get plugins to modify the way their blog works and themes that make their blog look good with very little work.
          That is done via community involvement.  So if you can build a large community very quickly around a completely new technology then you should be golden.  But I HIGHLY doubt that this can be done via a startup project run by volunteers.  But if someone where to come out of design school and wanted to showcase their work by building a template, would they use WordPress or a blogging platform that is technically excellent, but few are using?  Since this market is already pretty well defined a project like this either needs to go ‘niche” or it needs to harness the existing market.  
          In light of that, “compatibility” would mean that, for existing users, jumping ship would need to be a relatively painless process.

        2.  @kschroeder I am well aware of what the market wants, but ZendFramework is not about RAD as far as I know. It is about stability and enterprise solutions. Maybe I’m just lucky, but I usually spend a lot of time working on projects going on for many months… I would instead check compatibility with other CMS solutions with stronger plugin systems. WordPress makes it a bit scary, especially on the security front.

  2. WordPress is antiquated, but if you were to build a compatible application, wouldn’t it suffer from the same tired, unfriendly API? You may be able to revamp the interface, but frankly they already did that, and it’s pretty good. If it’s going to run the same WP plugins, how precisely would you make it “better”?
    Have a look at StackBox CMS, which is starting to look really nice lately:
    It’s still too simple for me in some ways, but Vance Lucas has some really frefreshing ideas, both in terms of user-interface and APIs – I think he’s got a good foundation going…

  3. WTF does “wordpress-compatible” mean? Talking to wordpress? having compatible api ? (how in the world?) compatible with modules ? (I almost see pigs fly right now …)

    1.  @Thinkscape In my mind, “WordPress compatible” would mean that it would have a core that is proper ZF2 that has all of the functionality you need, but that you could connect in with the WordPress community and install themes and plugins at which point a compatibility layer would be injected so that they would think that they were in a WordPress installation.  I think that it would be more “time consuming” than difficult.
      But again, at this point I’m not making any decisions if/when/how.  I was just curious to see what the interest would be.  I have my doubts that I would even have enough time to work on it.

      1.  @kschroeder No, sorry Kevin. That implies you’ve never tried writing a plugin for wordpress in your life. Nothin personal. For further discussion, let’s make an assumption that wp themes are just plugins with a purpose (functions.php, same hooks etc.)
        Plugins in WP are just 3rd party functions that attach (via hooks/filters as they like to call it) to different points in the lifetime of a request in WordPress. That means, these are decorators of wordpress engine. And “the engine” is basically a bunch of flat php files for different parts of the site.
        1. There is rendering, which outputs some html that you can tap into and add bits here and there.
        2. There is logic, which you can tap into to prevent an action, handle custom search, short-circuit something etc.
        Everything is based on the principle of decorating or hooking into an existing workflow of the wp engine. Hence – It is not possible to use a wordpress plugin without wordpress. No compatibility layer can cut it, sorry. You’re suggesting to install wordpress plugin on a non-wordpress script. You’d need to re-write the whole wordpress engine (i.e. in a framework such as zf2) EXACTLY the same to match everything, and then it’d we futile. 
        The only thing you _could_ think of doing here is writing a comparable blog platform (i.e. using ZF2) that would _TALK_ to wordpress. Talking to wordpress means: connecting to its API and doing things like sharing comments, copying posts, sharing statistics etc. Even that is quite difficult, given that wordpress does not have isolated API – everything runs as flat php functions + globals, request hijacking included.
        As for themes, majority of modern themes are not just designs with HTML. They are also plugins – they contain a boatload of misc. functions that alter the way your wordpress site behaves. It used to be only adding a sidebar or two, now modern themes have their own admin panels, url resolvers, AJAX widgets and text processors. Even if you stripped a WP theme from all PHP code, you’d get something that’s barely usable for anything else. As I’ve done it multiple times before, it’s actually easier to copy the final HTML markup and slice it again for the purpose of re-using a theme in different CMS (or an app based on a framework).

        1.  @Thinkscape Actually, I have built several plugins so I am aware of what’s involved and how the WordPress engine works.  Nobody said that the entire layer would need to be built immediately.  You would start with basic functionality and move forward from there.  You could also add a validation routine that would check for unsupported API calls in a plugin before installing it and send that data back to a home server so you could figure out which API calls need to be emulated in which priority.

        2.  @kschroeder You’re missing the point.
          Plugins in wordpress alter the way wordpress looks and behaves. In order for a wordpress plugin to make sense, it has to be installed on real, living and breathing wordpress site. 
          If you want to rewrite wordpress in zf2, why not call it WordPress 4.0 ?
          Otherwise it’s like trying to fit an excavator engine into a banana. Well, we could start from making it spin the banana, then move forward, but what’s the point? If that idea made any sense, there would be at least one non-wordpress project that would be compatible with wp plugins. Well, there isn’t….
          As a matter of fact, even wordpress plugins are often not compatible with wordpress 🙂 (http://wordpress.org/news/2009/10/plugin-compatibility-beta/)

        3.  @Thinkscape A plugin only needs to _think_ it’s on a WordPress site.  I’m also not talking about rewriting WordPress.  I’m asking the question about building a blog platform that has the ability to make a plugin/theme think that it’s installed in WordPress.
          As for why there isn’t an existing WordPress compatibility project out there, I don’t know.  There is no data that I found to base an opinion on that.  It might be because it’s a dumb idea or it might be that people would rather just download and install WordPress than worry about the hassle of building a platform.  I honestly don’t know.  That’s why I’m asking the question.

        4.  @Thinkscape … additionally, it may just come to nothing.  I’m finishing up work on my second album and I have an interesting idea for a third that I might try to get done before ZendCon and so I may not have the time to even properly entertain this idea.

        5.  @kschroeder That’s my point – there is no need for that because of what WP plugins really are (see my point on decorating, altering the behavior of stock wordpress).
          Wordpress does not have real, sandboxed and OO plugin system. It does have hooks which allow to short-circuit it’s normal operation. That’s why there’s little good you can get from trying to make plugins “think they are on wordpress”. Even if you did, they will want to perform their normal operations. And what do wp plugins really do? …. see above.
          bottom line: wp plugins do not have inherent, isolated functionality you can take out and use elsewhere. They are NOT SDK, nor PEAR packages nor PHP classes nor modules you could use outside of wordpress. They mutate stock wordpress to make it something else… if there’s no wordpress, they have nothing to short-circuit.

  4. Trying to make it WordPress-compatible will likely be shooting a project like this in the foot before it starts. I can see the allure of having available all the WordPress plugins, but I think building a clean platform from scratch with a solid migration tool and leveraging the ZF2 module infrastructure for plugins is the way to go. In fact, the ZF-Commons group has already started discussions about building blog module for ZF2. It would be nice if those interested in a project like this could work with the ZF-Commons group and focus their efforts on one project so we don’t end up with 15 different incompatible half-ass ZF2 blog modules. Feel free to come chat with us on #zftalk.2 on Freenode!

  5. I was actually thinking about the same exact thing with Drupal ( Drupal 6 to be exact ) , I was contemplating creating a “Glue” module ( that I’ve now started ) between 6 and 7’s API and the thought of just this had crossed my mind only like i said a Drupal context …. hrm , may be worth thinking about some more.

  6. Why are there so many people so eager to “revamp” outdated platforms like Drupal, WordPress and Joomla? If you’ve developed anything for all of these platforms, you know how hopelessly outdated their practices and standards are.
    If you want to spend your time productively, you should build something new – referencing all of these systems for some of their good ideas (or good intentions) as well as for technical faults and bad practices to avoid in your own system.
    Why the community at large insists on building for the past rather than the future, I will never understand…

  7. I’ve been building WP plugins using ZF1 as a backend for a bout a year now. I know, go figure …
    Building something as WordPress compatible is a step backward, IMNSHO. I LOVE WordPress, but it was never designed by professionals and it shows terribly in its architecture.
    Let’s not put lipstick on a pig here.
    If a ZF2 blogging platform was ever created the PRIMARY feature of the platform MUST be SIMPLICITY, from building “plugins”, using “hooks” and creating “themes”. Something WP developers are used to doing. Right now, most WP developers couldn’t spell “Object-oriented Programming” let alone understand basic to advanced OO concepts like DI or SOA.
    These WP-level developer folks just want to create some cool plugin functionality or themes to sell or give away and move on to the next fun thing to do!
    Whatever platform is built would need to highly abstract the platforms functions from ZF2, while at the same time leave open the lower level ZF2 architecture for those of us who want to really dig into the platform.
    BTW, it’s highly irritating that WordPress tries to force theme and plugin developers into thinking their WP plugins and themes are automatically opensource under the GPLv2. Idiots. But I digress … <grumble>
    In any event, I’m looking at building a ZF2 CMS/BLOG. I would be happy to join in the planning effort.

    1.  @BeauBeauchamp Building that stuff too.. Too bad I cannot open source it, but I’m working on that too 🙂 Bosses are not used to get influenced by their employees 😛
      Anyway, ZF2 is too far from the WP Philosophy. It is like shooting ducks with grenades 🙂

      1.  @Ocramius  I agree. It’s way overkill. However, I have ulterior motives here. Using ZF2 as the underlying framework would allow for one of the most powerful application platforms known to mankind. The CMS/BLOG platform would simply be the tip of the iceberg. It would allow real developers to leverage the “CMS” (platform) to literally develop “drop-in” applications.

        1.  @BeauBeauchamp Kinda what I’m working on… But the problem is that wordpress is rotten at the core. It has every possible problem that a software architect looking for flexibility (not saying it doesn’t do its job well!) could be able to find. So heh, it would be interesting to see something built from scratch starting with flexibility in mind. There’s interesting projects like the Symfony CMF by lsmith and dbu (which rocks), and there’s similar concepts by juriansluiman which you can find at https://github.com/juriansluiman/SlmCmf.

        2.  @Ocramius  Yes, but they forgot the Prime Directive, which is SIMPLICITY, which seems to be missing from the above projects … I have half a mind to just junk ZF2 entirely and go back to my TigerMVC concept using ZF2 components …. UGH!  See: http://TigerMVC.com

        3.  @BeauBeauchamp That’s not the prime directive and has never been it (IMHO). If you want something simple, use a DIC with Silex and you’re done 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *