BuddyPress Future w/o MVC: Big Deal?
-
Hola BuddyPressers – I just stumbled onto this Anahita presentation http://www.slideshare.net/rmdstudio/anahita-vancouver-demo-camp-7-presentation and wanted to know what your guys’ thoughts were on slide 8, which is talks about this…
“[We] studied a whole list of existing web applications and frameworks! Didn’t quite like any of them! You want to know why? Absence of a MVC software development framework Didn’t like the way they were coded (all top down or functional programing) or Spaghetti Coding !!!!!!! We did however get ideas from the Drupal’s node base architecture and WordPress’s usability. Nice Work!”
It’s obviously taking a jab at everyone else, but I wanted to know how accurate that statement really was (ie. will become BP a patch job down the road, if we wanted to extend its functionality to FB level — automated relationship builder/social graphing, calendar/evite stuffs, etc.). Would love to hear your thoughts!
-
In my opinion – not aiming this at you – if there’s someone moaning about how any particular bit of software is not written following MVC, they have two options – write their own, or shut up.
BuddyPress isn’t going to be any more “patchy” than WordPress is. I’m not even sure what you are trying to imply by “patch job”, either.
Member management in WPMU/Buddypress seems patchy as hell to me, with member data spread out over several database tables that aren’t synchronized between xprofile and wpmu, mixing different methods to store data. The registration process is horribly inflexible. Basic things like styling the registration form or editing system emails require hacking core files.
Not sure if this would have been better if WordPress/Buddypress followed an MVC architecture. Wikipedia’s description of MVC:
Model-view-controller (MVC) … isolates business logic from the user interface, permitting one to be freely modified without affecting the other. The controller collects user input, the model manipulates application data, and the view presents results to the user …
I like the sound of “isolating business logic”. I want the end user functionality that WPMU/BP provides (“… WordPress’s usability …”), but have serious concerns about having to rely on WPMU/BP for central member management and registration, the foundation of my project. Unfortunately I can’t have one without the other.
Please don’t dismiss the criticism.
if there’s someone moaning about how any particular bit of software is not written following MVC, they have two options – write their own, or shut up.
They did. They are developing Anahita Social Engine on Joomla. I may have to check it out.
I’m perfectly entitled to not pay attention to the MVC-or-not structure of both WordPress and Buddypress, as I don’t work for Automattic and I’m not a core developer on either.
@DJPaul – I was just taking that Anahita tone a bit further with the “patch job” wording, because that social engine seemed to imply that it would be better than anything out there, including BP (which I find phenomenal), just because it had an MVC architecture Not sure about the importance of having an MVC in place when you’re building something as big as this, but from what Peterverkooijen says, it does seem somewhat useful to a certain extent.
On some level, it’s interesting to put this conversation into the limelight and see what people think — competition breeds competitiveness and better products IMHO, BP definitely has the most steam behind it and the new groups_new_group_extension() sounds promising, as well, so I’d love to see BP become something so grand that it could prove having an MVC isn’t as crucial as Anahita WebDevs suggest.
You can take MVC however you like. If you are going to take it in a black and white sense then BuddyPress is not MVC. However, it follows a loose MVC style:
1. bp-[component]-classes.php contains all of the database access classes [ Modal ]
2. /bp-themes/[themename]/ contains all of the template files [ View ]
3. bp-[component].php contains all of the business functions [ Controller ]
BuddyPress is certainly not programmed top-down. In fact, if you try and program top-down with BuddyPress you will quickly become frustrated.
If you are concerned with the way WordPress is programmed, then I would asses the value in being concerned. Look at the number of themes, look at the number of plugins, look at the number of users. Look at the companies that use WordPress. At what point does worrying about the coding style become moot?
At the end of the day MVC is just another coding methodology, it is not “the right way” to program. The right way to program is subjective and very much based on your program’s function, audience and ideologies.
I should also mention I was at this presentation, and BuddyPress was not mentioned for the slide in question. They repeated numerous times that BuddyPress was an exception and was actually a source of inspiration for their project.
I was gonna say… at 3:30 http://blip.tv/file/2335055/. Does it feel more like a friendly competition between Anahita and BP or would you consider those two completely different social networking solutions?
Here we go with MVC is the only approach. Having used the Codeigniter and Kohana PHP frameworks in the past, I know a little something about MVC.
MVC is a design principle that various frameworks implement so that others can then create their applications. WordPress is an application that offers a means to extended its functionality. It is not a framework. A framework is not an application. You create, code, applications (like WordPress) using various tools. A framework is just one of those tools.
I agree, from a plugin developer’s standpoint, that it might have been nice if WordPress had used a solid MVC framework with which to build its foundation. But, I don’t think there were any good MVC framework options at the time it was initially being developed. It would also be nice if WP were fully object based. But, this is all a moot point.
WordPress is and will be fine in its current state. There will not be issues “down the road”. Why?Because WordPress continues to improve and evolve (look at the powerful BuddyPress layer). It has been doing so for 6 years without reaching a point were it ceases to work.
As Paul said, since this is an open source project, anyone is free to fork it. WordPress, in fact, is a fork of another, older blogging system. So, if you don’t like what’s under the hood, then change away and create your own CMS!
It is interesting that the author of that slideshare fails to mention that Joomla, the application that their Anahita Social Engine requires, in not an MVC framework. Remember, Joomla is also an application, not a framework. A separate module/extension had to be created to offer some MVC-like functionality to those who wish to further extend Joomla in a manner somewhat reminiscent of a true MVC framework.
In my opinion, if WordPress were to be recoded from the ground up using one of the various PHP-based MVC frameworks, it would result in an application that while possibly being easier to create plugins for, would make it much harder for designers to create themes. This would make it harder for the average user to use.
Also – something to consider. If WordPress was completely object-oriented, fully MVC, and the most beautifully designed code imaginable – 90% of developers would not be able to understand it.
When trying to create a popular open source application you have to strike a fine balance with regards to entry level. You don’t want to make it so beautifully abstract and complex that only the level 70 geeks can develop on it.
Your application needs those people that program in their spare time for fun, but don’t necessary know what instantiation, encapsulation and polymorphism are. Those people are the most important if you want any sort of active developer community.
Ha!
Andy, that’s basically what I said in my last paragraph!
That’s exactly why I brought up this topic. Just speaking from my own experience of talking with clients who want a CMS site, virtually all of them initially scough at WordPress because it still, to a large extent, carries the stigma of just being a very good blogging system. And if you wanted to build something more substantial, Joomla would be a better choice — you’ll constantly see that argument in whichever forum, be it Joomla, Drupal or EE. By and large, most clients will reconsider using WP when they’ve seen an amazing site that doesn’t look like your typical Kubrick blog.
So now that Anahita is out in the open, there’s going to be that debate again… and I can just see the client’s pitch for Anahita. “Well, Joomla is more for enterprise sites, so we’d like to run with Anahita instead of WP/BP.” If that’s the case, you could argue to look at the companies using WP and that Anahita requires Nooku and the whole MVC thing is just a moot point. Along the same vein, why not just get rid of that slide that even mentions spaghetti code? Just keep it simple… one is just as good as the other. Yes?
There is no easy fix for ignorance. Clients will generally believe what they want to believe. I guess it’s everyone’s job here to build great sites using WP/BP… so get going!
If you are concerned with the way WordPress is programmed, then I would asses the value in being concerned. Look at the number of themes, look at the number of plugins, look at the number of users. Look at the companies that use WordPress. At what point does worrying about the coding style become moot?
That’s why I chose to build my new site on Buddypress. Does that mean I have to keep my mouth shut about the crappy patched together membership management mess that will now become the foundation of my project? It’s not a moot point. It’s a painful trade-off and if I could start over I’d probably give Joomla + Anahita Social Engine a go.
I’m perfectly entitled to not pay attention to the MVC-or-not structure of both WordPress and Buddypress, as I don’t work for Automattic and I’m not a core developer on either.
I was addressing the Buddypress development community in general.
Since my opinion counts too, I’m going to jump into the fray…
The reason why people like WordPress, is because it unknowingly found the PERFECT balance of challenge, and ease of use. In order to become proficient at using WordPress as a development tool, you have to go through a rigorous 6 month hazing period of being totally lost in the code. Not because it’s badly written, or sloppy, but because it’s just a lot to learn.
You know why people that join fraternities rarely ever leave? Because once you’ve gone through the hazing, you’re more likely to stay. You know how businesses earn repeat clients? They charge MORE money, because people are more likely to go back to a place they’ve already invested money into, rather than a place that gave them a $15 oil change. Strange eh? Make things too easy, and people won’t go back. Make it too hard, and they won’t even try it in the first place. There’s a balance, and WordPress, bbPress, and BuddyPress found it.
Once you learn it though, it’s like driving a 6 speed manual trans; you just glide through the gears without really even thinking about it. It’s like learning to juggle; or play baseball; or ride a bike. You just do it naturally.
My experience with things written with strict coding standards is that no one ever appreciates the time spent adhering to those standards anyways, and the codebase is basically ignored. phpBB is a great example, because the code is dead simple to use and understand, but how many people do you hear about using it to its full potential?
I used to code every single website I did to section 508 compliance. You know how many clients cared? 0. So, now I don’t. Haha!
WordPress, BuddyPress, and bbPress make you earn your keep. They are investments in time, energy, and they actually can give you back what you put in. Not EVERYONE can sit down and develop a good plugin for any of the platforms, but LOTS of awesome plugins are possible and with a little time, anyone can sit down and write one. Anyone can develop a theme with a little effort. WordPress works for everyone, not just newbies and not just professionals.
I can’t predict what tomorrow will bring. Maybe something will come along and totally blow the doors off of anything we could develop ourselves. That’s okay. But for right now, I don’t think there’s anything better than what WordPress, bbPress, and BuddyPress bring to the table.
Does that mean I have to keep my mouth shut about the crappy patched together membership management mess that will now become the foundation of my project?
Of course not, that wasn’t my point. The registration functionality in WPMU is quite restrictive and cumbersome right now. That will improve though. If you’re concerned about this, then don’t consider BuddyPress as we’re only on version 1.0.
Of course not, that wasn’t my point. The registration functionality in WPMU is quite restrictive and cumbersome right now. That will improve though. If you’re concerned about this, then don’t consider BuddyPress as we’re only on version 1.0.
I was going to take the gamble that it would improve over time. Hearing most developers here dismissing any architectural criticism and only singing the praises of WordPress is not encouraging though.
You know why people that join fraternities rarely ever leave? Because once you’ve gone through the hazing, you’re more likely to stay.
Right, once you’ve decided on a platform it’s very hard to go anywhere else. You’re stuck.
Every couple of years I reevaluate what to use for my websites. I started on Nucleus. The current version of my project Web2NewYork is built on WordPress with a members registration system based on code taken from PunBB.
I switched to WordPress reluctantly only because it was becoming the standard. I’m now trying to consolidate on Buddypress, if I can everything working before September. If member management/registration does not improve I will have to switch to something else next year.
There is a very delicate balance here because on one hand all of the developers leveraging [Word/Buddy/BB]Press are getting an enormous head start compared to building something from scratch. So we should all be enormously grateful for that. I don’t think threats to move another platform are really productive.
At the same time, critical feedback and vigorous debate will make the product better. I don’t think this should be characterized as moaning. Active threads on the membership architecture would be great to see (I know Peter has tried to start a couple of those).
Most people here would agree with Peter that the WPMU+BP membership functionality is not ideal. They would probably also agree that Andy’s compromise is a good one under the constraints of WPMU. BuddyPress will be a good forcing function to make that improve though.
Adopting some strict framework is not the answer. The trash heap is piled high with projects that had high architectural ideals. The successful stuff delivers a good user experience, often with frightening hacks under the covers, but over time becoming more robust and beautiful inside too.
There is a key architectural aspect to *Press that makes it successful though – extensibility. The hooks make it possible to hack the system to do so many things that weren’t even considered when the projects were originally conceived. Andy has exploited the extensibility in WPMU to bend it into a social networking system. He has also been religious about putting hooks everywhere to give us the same opportunity with the things we in turn build on top of BP.
As long as we are all being creative on *Press, things won’t be pure. Andy will be bending WPMU to his will and we will be bending BP to our will. That’s the beauty of it.
So we should all be enormously grateful for that. I don’t think threats to move another platform are really productive.
I am grateful and Buddypress developers wouldn’t care whether I move to another platform or not. I was responding to John James Jacoby’s argument that people stick with WordPress because it has found the right balance.
WordPress is evolving from blog software to a social networking platform with Buddypress. That puts the user at the center, which is a fundamental shift in focus. That’s why I keep hammering on member management and registration.
I love the extensibility of WordPress/Buddypress, but if the foundation – member management – is a mess, that is a real problem that can force people to consider other options. I have not found good alternatives. Anahita Social Engine on Joomla could be one to watch.
MVC. Whatever. The bottom line for me is the user interface and easy of theming / customizing.
Take Joomla for instance. Most clients go into convulsions when they see Joomla the first time. There are enough radios buttons and options to make the most hardcore geek nauseous. And as a designer / developer… anytime I’m forced to use Joomla I feel like smashing my head through a brick wall… repeatedly. WordPress on the other hand is a joy to user for both clients and developers. So what if it’s not 100% MVC. I don’t really care.
But back to my Joomla rant. I did a Joomla 1.0.x project a year ago and there was no way to apply the design I’d created without modifying core files. The core was littered with thousands of lines of complex embedded html markup that was impossible to deal with via CSS alone. I spent 3 days just trying to find out where all the markup (mostly table code) was coming from. One day I spent an entire afternoon trying to track down the source of a single closing element (probably </table>). I finally found it buried deep inside a class file somewhere. Brutal. Absolutely brutal. And that admin interface. Ugh. And the plug-ins people write for it. One site I had to work on had a links plug-in installed that must have had over 100 configuration options. To make a page of links?!?! Unreal. Maybe Joomla 1.5 is better… but I’ll never know. I now turn down clients who ask for Joomla sites. I send them elsewhere. How it ever got to be so popular and considered suitable for Enterprise is beyond me.
Hi @andy
you said
Also – something to consider. If WordPress was completely object-oriented, fully MVC, and the most beautifully designed code imaginable – 90% of developers would not be able to understand it.
would you please tell me when you say 90% of developers who exactly are you referring to ? because I know there are projects like Ruby on Rails that have had a good turned out between developers even though they implement lots of design patterns like MVC, Active Record and so on.
Also this does not stop at only open source projects, iPhone development framework (cocoa) follows MVC ( and other design patterns) and now there are kids as young as 10 years old that are developing for this platform.
Also I understand this debate is about MVC vs non-MVC design pattern but I would like to point out that a framework is not just MVC. It’s a collection of many design patterns as significant as MVC that helps the developers to build something in shorter amount of time.
in Anahita, MVC constitutes the overall structure of the application, but in a closer look, we are using other design patterns that makes the code smaller and more flexible. Without them, I doubt having an MVC architecture would have made that much of a difference.
Thank you,
Anahita looks really interesting but the fact that it runs on Joomla makes it a non-starter for me and my clients… no matter how perfect the code is. I’m a big a stickler for doing things the “right way”… I’m a perfectionist… but the bottom line will always be usability and in that arena… WordPress is way out ahead. So at the end of the day… I don’t care TOO much about the MVC issue.
That said… I agree with your argument above. Doing things the “right way” doesn’t necessarily mean that something is more difficult, or costly, or what have you. I have a degree in architecture and one thing I always say is that when it comes to building… good design is more about thoughtfulness than budget. When designers blame the budget, client, or other constraints… it’s often a cop out.
- The topic ‘BuddyPress Future w/o MVC: Big Deal?’ is closed to new replies.