Jump to content

Should I make friends with PW?


Peter Knight
 Share

Recommended Posts

Hi all. I'm a front end guy who knows HTML,css,a little jquery and am learning PHP (slowly). I've mainly been creating sites in MODX Revo for the past couple if years. I personally love it, love the community and will always be a user and fan.

But I made the decision lately to expand my CMS pool and in addition to MODX have heard good things about PW. Recently a client proposed rolling out a site and I am evaluating PWs suitability as the underlying site. Here are some features.

Membership with potential for ten of thousands of members.

User Groups and sign up forms adding users to particular groups.

Vast amount of pages with ability to organise and search pages ( via backend)

Paid membership

What concerns me about PW is how the CMS will handle such a huge number of pages as it uses the resource tree concept. Some dabbling with Expression Engine made me appreciate the 'bucket' data model where an entry didn't have to be a page. I hope that makes sense. Information was stored in Channels, were very scalable and manageable too. Ironically, I never got to grips with EE fully and moved on to MODX. My usage of PW will not be a switch from MODX but I am keen not to learn another CMS with a potential resource tree shortcoming. Possibly someone gets what I am saying? Just how scalable is PW and do I need to learn PHP?

Link to comment
Share on other sites

Hi there and welcome to ProcessWire.

I wouldn't worry about scalability as it's been tested with at least hundreds of thousands of pages and your first limitation will be with your server to serve content to what I would assume be millions of visitors each month. There's not a great worry about backend performance as features like pagination are actually built into the tree (if you open a parent element with 100 children for example, it will display the first X amount with AJAX pagination for the next page and so on). In terms of database performance, everything is nicely indexed as well.

The trick with ProcessWire is that whilst everything is a page on the surface, a page can be anything you want it to be and it certainly adds to the flexibility over some other CMS'. A lot of the questions I had when I moved from MODx to ProcessWire revolved around "can I do X in ProcessWire" as every feature I had built into a previous MODx site seemed to take a lot of effort with some really long snippets and some complicated PHP, but ProcessWire not only let me replicate every feature but allowed me to do it in about a third of the code, if not less. The beauty is that whilst there is some PHP to learn, the API is jQuery-inspired and you shouldn't have to write a single line of SQL as the sensible API calls allow you to do things like this, which whilst requiring some PHP knowledge, leaves you with code that is easy to understand if you have to tweak it months after writing it:

<?php
/*
Let's assume we have a music site - there's a section for artists, under artists we have 
albums and under albums we have tracks. All are pages (artists would be title, images, body - 
albums similar and tracks could contain title, length and writer(s) if you like just to give 
you a rough idea of flexibility - I'll keep the code simple though.
*/

// Iterate through the artist pages, echo the artist title and body field
foreach ($pages->get('/artists/')->children as $artist) {
    echo "<h2>$artist->title</h2>";
    echo $artist->body;

    // Now list all their album titles and body field
    foreach ($artist->children as $album) {
        echo "<h3>$album->title</h3>";
        echo $album->body;

        // Finally list each track on the album
        echo "<ol>";
        foreach ($album->children as $track) {
            echo "<li>$track->title</li>";
        }
        echo "</ol>";
    }
}

My MODx/PW relationship started out as "let's look at another CMS" and I was quickly converted to be honest. It's easy to understand once you get past the relatively small learning curve and we have folks here who consider themselves beginners but who are coming up with some amazing site profiles and modules.

One module which I think might be of interest to you in terms of scalability on the front-end is ProCache. If you have a lot of static pages on the site then that would be invaluable as it caches and serves pages as pure HTML with no PHP or mySQL queries (for member-driven sites it could easily be used to display pages to non-logged-in users rather than touching PHP or mySQL, so anonymous guests get a lightning fast performance and don't add much load to your server). Past that, there are a few other caching options available to you either in the backend or things like MarkupCache (if you have a drop-down list on the site for example that can be updated by adding a page in the admin - a new Album maybe in my above example - then you can use MarkupCache to build that list once, cache it for X hours and only rebuild it after that time. There are other caching options too though so it can be cleared on page save etc).

Sorry, my train of thought is meandering a bit this morning, but the short answer is "yes, you should spend some time making friends with ProcessWire" :)
 

http://processwire.com/talk/topic/2675-processwire-pro-cache-now-available/

  • Like 7
Link to comment
Share on other sites

Pete, you should correct echo "<h2>$artist->title</h2>"; to echo "<h2>$album>title</h2>";

Other than this, I don't have anything to add to Pete's excellent answer :)

Link to comment
Share on other sites

I'm a front end guy who knows HTML,css,a little jquery and am learning PHP (slowly). I've mainly been creating sites in MODX Revo for the past couple if years.

That's funny because that is a typical evo profile not revo.

Just how scalable is PW and do I need to learn PHP?

These questions are already answered x times in the processwire forums and also in the modx forums ^_^
Long story short: processwire is what revo should have become - fast - scalable - time saving - and above all =>
the architecture of processwire makes it accessable for designers - developers - coders and easy for clients.
Modx decided to deprecate evo and will do the same with revo when modx_3 has been released.
But the modx_3 roadmap seems lost track in time. Their isn't any news about it since may 2012.
http://modx.com/blog/2012/05/25/clarity-focus-and-simplicity/
Welcome to processwire - a future ready cms.
Link to comment
Share on other sites

... snip ...
Recently a client proposed rolling out a site and I am evaluating PWs suitability as the underlying site. Here are some features:

  • Membership with potential for ten of thousands of members.
  • User Groups and sign up forms adding users to particular groups.
  • Vast amount of pages with ability to organise and search pages ( via backend)
  • Paid membership

PW definitely fits the bill. All the elements are there to build upon. There will be building/programming involved, because (some) of the features don't come out of the box, or in a module. You would have to do work on the (paid) subscription part. Probably some front-end login areas etc. All very doable and perfect for PW with it's nice architecture and API. But it does take some time to invest and the willingness to learn some PHP (which is never a bad thing). If you are looking for some more out of the  box experience there are also other options.

What concerns me about PW is how the CMS will handle such a huge number
of pages as it uses the resource tree concept. Some dabbling with
Expression Engine made me appreciate the 'bucket' data model where an
entry didn't have to be a page. I hope that makes sense. Information was
stored in Channels, were very scalable and manageable too. Ironically, I
never got to grips with EE fully and moved on to MODX. My usage of PW
will not be a switch from MODX but I am keen not to learn another CMS
with a potential resource tree shortcoming. Possibly someone gets what I
am saying? Just how scalable is PW and do I need to learn PHP?

There already have been some great answers on this but i just wanted to mention that it is very possible to have an 'alternative' view on your data. Something like http://modules.processwire.com/modules/data-table/ Just thought i'd mention it.

As for your question, "should i make friends with PW?" Definitely! It's one of the greatest all-round content management systems/frameworks.

Link to comment
Share on other sites

Pete, you should correct echo "<h2>$artist->title</h2>"; to echo "<h2>$album>title</h2>";

Other than this, I don't have anything to add to Pete's excellent answer :)

There were some other inconsistencies in there as nowhere was I echoing the name of the artist and I spotted one more mistake too, but fixed now thanks :)

The beauty of the system is that this is a fictitious scenario, but if you spend a little time with ProcessWire you can code front-end templates without having actually built the structure in the backend - it just becomes really intuitive.

Link to comment
Share on other sites

That's funny because that is a typical evo profile not revo.

These questions are already answered x times in the processwire forums and also in the modx forums ^_^

Long story short: processwire is what revo should have become - fast - scalable - time saving - and above all =>

the architecture of processwire makes it accessable for designers - developers - coders and easy for clients.

Modx is going to push the same kill switch on revo like they did on evo and are putting all their bets on modx_3.

But the modx_3 roadmap seems lost track in time. Their isn't any news about it since may 2012.

http://modx.com/blog/2012/05/25/clarity-focus-and-simplicity/

Welcome to processwire - a future ready cms.

I'd just like to debunk this FUD, cause that's what it is. EVO is now a community supported CMS and a new release is actually in the works by maintainers of several now-dead forks. If it was killed, the download wouldn't be available on the MODX website today. But with limited resources there's no way MODX LLC can actively develop and support 2 major CMSs and while I don't want to claim that the Evo to Revo transition was handled properly, saying that a "kill switch" was pulled on Evo is simply wrong. Slowed down and focused on Revo, yes, killed, no. I don't agree there's difference between an Evo and Revo user profile either. 

As for MODX 3.0... it will be a continuation of Revolution, but taking a step back and looking at what it is that still attracts people to Evo and what people are asking for, and incorporating that into Revo. Speedier & slimmer core. Content elements instead of resources and TVs. Easier manager customisation. Easier ACLs. 

There will be no "kill switch" pulled on Revo when 3.0 as we've never done that. It'll be deprecated (as any old version is), but that doesn't mean you're out of luck if you need help with it, and I'm sure there'll still be a couple of maintenance and security releases as needed. The beauty of MODX 3 is that it will be the first time that, following semver rules, actual breaking changes can be introduced since the release of Revo in 2010. And 3.0 will become the priority this year and you'll hear lots more about it after we release 2.2.7.

Aaaaaaaaanyway, kinda off-topic here, sorry for that.

Yes, you should make friends with ProcessWire because frankly it's a kick-ass CMS with a great community. I'm sure it's very scalable because of the way it is architected (I bet there's a thing or two we could learn from PW for MODX too!) and from what I've seen it's quite extensible too in case you need to move beyond it's core features. 

  • Like 8
Link to comment
Share on other sites

I'd just like to debunk this FUD, cause that's what it is.

I want to apologize to everybody if I raised any FUD with a line in my post. So, I re-edited the line "Modx is going to push the same kill switch on revo like they did on evo and are putting all their bets on modx_3." And changed it into: Modx decided to deprecate evo and will do the same with revo when modx_3 has been released.

I don't agree there's difference between an Evo and Revo user profile either.

It's no secret that over the years modx evo has attracted a large group of designers with little coding experience, because modx evo was just perfect for them. This group has become frustrated when modx decided to stop evo development and let it deprecate for php 5.4. This is one reason that a lot of them have found their way to processwire.
Link to comment
Share on other sites

Anyway, not really the place for a ModX discussion! (Particularly as I have never used it and am far too busy learning ProcessWire...)

And I am sure ModX will do very well - they have a pretty good reputation from the little I know and I imagine they will support their users to the full.

So, back to the original topic...

Sparrow, I think you will enjoy PW very much. I don't have a dev background (or even much of a designer background), but I have learned a huge amount just by playing with PW - it is proving a surprisingly good way of learning PHP. Not that you need to learn a huge amount, but it gets quite addictive after a while....

You have made me think that a tutorial on creating a membership system would be a really good idea. But since I haven't the foggiest how to do it, bear with me while I get a couple of the guys here to teach me, and then I will write it up!

Oh, and others have said, scalability is not an issue with PW - even on small sites it seems to take far less server resources than some equivalents, so that gives a good indication that it will pack the punch you desire. Your biggest issue in that regard is probably finding the right host, to be honest.

Good luck!
 

Joss

  • Like 1
Link to comment
Share on other sites

What concerns me about PW is how the CMS will handle such a huge number of pages as it uses the resource tree concept. Some dabbling with Expression Engine made me appreciate the 'bucket' data model where an entry didn't have to be a page. I hope that makes sense. Information was stored in Channels, were very scalable and manageable too.

At least in ProcessWire, the tree is far more scalable than a linear bucket system like in EE. If it helps to conceptualize, think of ProcessWire as having a tree of buckets. This is the natural way the web works. If a single-level linear bucket system suits your needs, then you can do this in ProcessWire. But there's a good chance you can do much better. So I would argue that your statement about buckets vs. trees is backwards. In terms of scalability, a tree will take you much farther. But it does require that each branch in that tree have the ability to function as an unlimited bucket. This is exactly what ProcessWire does.

Also consider that websites have hierarchy by nature, need and design. That hierarchy is extremely useful and powerful, and should be embraced. Websites lacking hierarchy would be limited, for obvious reasons. When working with a linear bucket system, you are always mapping a hierarchal system to buckets. This has always struck me as completely unnecessary, complicated and unfortunate. This mapping and conversion is ultimately a side effect of having to reduce a powerful system of tree hierarchy (upon which the web is based) to a less powerful bucket system. But if the system embraces the natural hierarchy of the web, then no mapping or conversion is necessary. You are working with the tree either way. The question is whether the system is embracing and using it (like ProcessWire), or mapping it to a more limited system of linear buckets. 

Ironically, I never got to grips with EE fully and moved on to MODX. My usage of PW will not be a switch from MODX but I am keen not to learn another CMS with a potential resource tree shortcoming. Possibly someone gets what I am saying? 

I don't have enough experience with MODX to know what the "resource tree shortcoming is", but am guessing it's something to do with pagination that others have mentioned before? I know that MODX has a reputation for being quite scalable, so would guess that they just have a different approach to managing that scale. But once you have worked with trees, and really experienced the benefits, it's very difficult to go back to buckets, IMO. The words "tree" and "shortcoming" simply do not go together.

As for keeping more than one CMS in your toolbox, I think that's always a good idea. It sounds like MODX and ProcessWire have common ground in terms of philosophy, and these two would be good to have in your toolbox. I don't think I would bother with keeping a bucket-based system in your toolbox, except for perhaps WordPress, which can be handy in the right situations (like one-off blogs when client has very limited budget). 

 Just how scalable is PW and do I need to learn PHP?

ProcessWire is pretty much infinitely scalable, within the boundaries of a server, SQL database and file system. As scale increases, you do have to practice care in how you use the API. ProcessWire gives you a lot of power, and will fill up your memory if you tell it to. So you have to use common sense when using the API at the large scale. For example, an API call like $page->children(); might be referring to a million pages. Do you really want to load and display links to a million pages at once? (probably not). Does the server have enough RAM to keep a million pages in memory at once? (not likely). So you accommodate scale by specifying limits and using pagination, like $page->children("limit=50"); This is something you don't necessarily have to consider at the smaller scale. But I think it's a good practice to design and develop every site as if it could grow infinitely. 

Do you need to learn PHP? Not any more than you would need to learn the {tags} from another system, like EE. The time investment and scope of what you'd have to learn would be about the same, maybe even less with ProcessWire. In fact, you can do almost anything in ProcessWire by simply learning how to use just two API variables: $page and $pages, and knowing what a PageArray is. There are a few bonuses you get from learning PHP vs. a tag system though:

  • Whatever you learn about PHP is something you can take with you, beyond ProcessWire.
  • The more you learn about PHP, the more you can do, both inside and outside ProcessWire. Meaning, the environment can grow with you, when and if you want it to. Whereas, at some point, you'll start hitting your head on the ceiling in a {tag} environment.
  • ProcessWire's API is identical regardless of context. You can be in a template file, command line script, plugin/module, etc., and everything works the same. In a {tag} environment, if you want to grow and learn plugin/module development, you'll be starting from scratch. In ProcessWire, everything you learn applies throughout the system in any context. It's only a small step to go from building templates to building modules. In {tag} systems, it's a canyon.

In fairness, while you don't need to know much about PHP to effectively use ProcessWire, you may indeed need to learn more PHP to accomplish some of the things you've set out to do: paid membership and access, member signup forms, etc. ProcessWire is a tool more than a turn-key solution for these particular needs. While they aren't difficult to accomplish, you might find yourself doing more on the code side than you would with a system that has turn-key solutions for membership sites. If your project budget/timeline doesn't give you the room to learn and build these things, you would want to investigate more ready-to-use solutions for these. But I think you would do well to make friends with and use ProcessWire either way. 

  • Like 16
Link to comment
Share on other sites

Ryan, this is one of those answers that should be visible outside the scope of a forum thread.

I went to check how you personal blog is going, and it turns out the last post is from July 2011. How is this possible if from then on you wrote a lot of invaluable information and opinion texts on the forum??

  • Like 1
Link to comment
Share on other sites

I went to check how you personal blog is going, and it turns out the last post is from July 2011. How is this possible if from then on you wrote a lot of invaluable information and opinion texts on the forum??

My own website is very out of date. Basically all my extra time now goes towards ProcessWire, and my own website gets no love. It's now a 6-year old site...  ryancramer.com is now so old/bad that it probably reflects very poorly now. I need to do a redesign/redevelopment soon!

  • Like 2
Link to comment
Share on other sites

  • 6 months later...

Hi guys. Just wanted to check back in as the OP and give an update. 

I'm really excited to be creating a personal project with PW and am amazed at how clever it is. I had one of those "aha!" moments recently where I opened up the default template, tweaked some API calls and managed to extract content from fields across various demo pages. It occoured to me that I can work with PW and I "get" it. Happy days indeed :)

Since I posted I had been looking at my options and evaluating both ProcessWire and Craft CMS.  

Craft CMS really does have the upper hand in terms of the backend manager. The design, responsiveness and usability are superior (IMHO). To be fair to PW, Craft is a much much newer system.

However, as clunky as PW is I'm really excited to already be building a personal site with it. No offence intended but the back-end of PW is like the Millenium Falcon. Clearly its dated and a piece of sh*t but what an amazing piece of sh*t. You know it wont let you down. Looking forward to being part of the community.

I'm really excited to be able to use MODX, PW and Craft and will use, support and promote all 3 from here on in. 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...