Some “pre-sale” questions
Created 8 months ago by ramoroo

Hey there! Last week I have installed PyroCMS and played with it. I have used Processwire CMS he last 6 years but looking for a replacement. I really love the bits I’ve seen so far (admin UI, twig support, ...)

Hop you can help on some questions:

1 How well does the cms scale on sites with > 50k pages?

2 I usually need to crate pages/posts/entries what ever a lot from code. I couldn’t find how to do this. Is there any differnce creating/dealing with pages or users?

3 I can’t find good tutorials on creating simple plugins either. Is it complicated to get started? Do i need to know laravel well?

4 Please don’t get me wrong on this, but looking at the forum and googleing it seems PyroCMS has a very small community? While this isn’t bad in the first place, in my experience those projects tend to lose effort, it is harder to get help (especially on complicated issues) and perhaps release cycles slowdown or stop. His is a huge risk, because we have a lot projects we are mainting for more than five years. So long term reliability is more than nice to have.

ryanthompson  —  8 months ago

Hey there! Welcome to Pyro 😄 I'll try and answer your questions as best I can:

1.) I suppose this depends on how you build the site. 50K literal pages (pages module) would be rough because each page carries it's own route. However assuming you're referring using MVC methods (controllers for index/view pages and such) and big data - Pyro handles it just fine. Personally I've worked with data up into the 30K range (ERP serving internal documents and resources to 1K+ employees in the field via cellular) and the only thing I had to do extra was a little DB optimization based on common querying patterns.

Others in the community have worked with 100Ks of records in multiple streams it batch processing them as they come in and everything works fine. We're sitting on top of Laravel after all (models are eloquent and Laravel is extended but otherwise left untouched).

2.) You would use database migrations OR seeders (again based on Laravel patterns) to create this stuff in a way that can be versioned for example or batching in imports. ALL of our objects are simply model(s) and all share a common API. For a page example check out the pages seeder (could also be done similarly in a migration for content control): https://github.com/anomalylabs/pages-module/blob/2.6/src/Page/PageSeeder.php

Users has one too based on installation input that's dumped to the .env file: https://github.com/anomalylabs/users-module/blob/2.5/src/User/UserSeeder.php

The base seeder btw is here: https://github.com/anomalylabs/users-module/blob/2.5/src/UsersModuleSeeder.php (pages has a similar base seeder next to it's addon class).

3.) By far our largest "issue" as a product is documentation. This is also something I am working on nearly every day around the next releases. New docs will be trickling in with 3.7 and new documentation area entirely with the 4.0 (better search, better layout, etc). Same doc material I am updating now though.

For reference I would start with this video series: https://pyrocms.com/videos/series/module-development the process is similar for other addons.

4.) No worries! Pyro is in a weird spot right now. We've actually been around since 2007 and have remained fairly popular among developers outside of the core groups (wordpress, drupal, joomla, etc). However a few years ago we went through a HUGE transition in deprecating our v2 branch based on CodeIgniter in lieu of v3 written over Laravel. We lost a lot - gained a lot - but also restarted as a project in whole so we're just now coming around to fixing some nagging problems that are keeping us from having the presence the product deserves since our product is (and has been) very solid from a feature and productivity standpoint.

Our biggest downfalls right now are by far documentation and a proper addon marketplace. Both of which are being actively worked on (marketplace is working on dev - lots of testing going on - this will launch with 4.0 and will be, I think, a developers dream marketplace as it's driven by your existing git workflow).

That said v2 has/had some 150K installations and v3 is around 40K and our platform (people use Pyro's core without using the Pyro package) is around 60K mainly in the last couple years. In that regard we're doing better than v2 by far 😄 but it's hard to read and judge those numbers some times.

We've also attracted much larger client usage than before. Pyro powers sites/services for Line-X, Mitsubishi Electric, Keurig, and other multi-billion dollar (often publicly traded) companies. Which I think is pretty cool!

Another thing we can/will do much better at going forward is expressing a road map. I am just unsure of how to best do that right this moment. But it's on my list of priorities to better express the direction of the project going forward.

ANYhoo - there's no risk in the foreseeable future IMO of the project running down / stopping but that's easy for me to say being the owner. We've been through some serious situations including a rewrite in the past 12 years and I feel great about Pyro 😄

We do have work cut out for us to propel the product further into the PHP / Laravel community at large though. Expect big things this year around that which will help with the community participation.

Also if you haven't yet join our slack - there's always a number of people in there ready to help including myself: http://pyrocms.com/slack

Thanks for your consideration none the less!

ramoroo  —  7 months ago

Thanks for all the information.

I read a lot of the Documentation, the Guide and watched the videos from your link. PyroCMS seems to be cool application and I would love to use it. But I guess it is nothing I can work with. Don’t get me wrong, I highly respect what you are doing and PyroCMS is for sure a great CMS and many people will see this very differently. But those were some of my thoughts...

  • It is really hard to understand, if you are not familiar with Laravel.
  • There is a lot missing in the docs (wrong/old links too)
  • There is almost nothing practical about how to work with your templates.
  • I couldn’t find any practical info where and how to load data (just an example: display the latest 3 blog posts in the footer)
  • I watched (about half) of the module development video series. It was really hard to understand what you’re doing or what was your aim to build.
  • Compared to other CMS it looks very complicated just to create simple plugin. Look at WP, ExpressionEngine, Craft. You can achieve the same with one or two files and less code.

Anyhow, I wish you success with your CMS!

ryanthompson  —  7 months ago

No hard feelings! Documentation is literally our weakest point right now. I have some 100+ pages I am working on every day. Putting more quality control into the process of writing them as well.

In all honesty it's good you've pointed it all out like this because the reality is it's very easy to do this stuff (so much so that front end developers are building addons). So the feedback stings a bit but it is reassuring being that we're working on it daily. But alas, unless you get in with the community and get help - it's a very tough learning curve for custom development.

Maybe check back in 6 months! I appreciate your feedback either way! 😄

For what it's worth 😛

{% for post in entries('posts').latest().take(3).get() %}
    <a href="{{ post.route('view') }}">{{ post.title }}</a>
{% endfor %}

Making addons is easy too. This is the default scaffolding commands and installer. This would give you a generic default with title/slug/description basically and get's your foot in the door.

php artisan make:addon anomaly.module.library
php artisan make:stream books anomaly.module.library
php artisan make:stream movies anomaly.module.library
php artisan addon:install anomaly.module.library

Then checkout your addon in addons/{app}/anomaly/

ryanthompson  —  7 months ago

If you don't mind - can you share some of the complications from the Laravel perspective? "If you're not already familiar with Laravel". That's another aspect I am unsure of the impact right now I would love some more insight on.

Thanks again!

frednwt  —  7 months ago

@ramoroo

1 How well does the cms scale on sites with > 50k pages?

I build one with more than 100K, and it was good. The last version with the query caching even improved it.


It is really hard to understand, if you are not familiar with Laravel.

Yes and no. No, using PyroCMS itself you don't need it, you can do many things directly from the Admin part, w/o a single line of code. But yes if you want to start module development (for example to sell modules) you need a good understanding in Laravel.

There is a lot missing in the docs (wrong/old links too)

Completely agreed. But check on the Github, Ryan is updating docs like crazy.

There is almost nothing practical about how to work with your templates.

Yes and no again. If you are building website, no it is currently nice. But sadly yes if you want to create templates to sell them, it is quite complicated ATM, I tried and stopped.

I couldn’t find any practical info where and how to load data (just an example: display the latest 3 blog posts in the footer) I watched (about half) of the module development video series. It was really hard to understand what you’re doing or what was your aim to build.

I agreed with that too, it need more basic tutorial.

Compared to other CMS it looks very complicated just to create simple plugin. Look at WP, ExpressionEngine, Craft. You can achieve the same with one or two files and less code.

For this last one, I disagreed. I currently doing WP, Joomla, Drupal development. You can create module directly from the Admin if you want using streams-module. And scaffolding modules is really fast. Creating a business orienten module is faster using PyroCMS than WP. Also, "less files" doesn't mean "faster" or "better". ;)

But, as I said before, you need to know Laravel. And Stream Platform learning curve is also a bit tough. Especially with the current docs / tutorial.