In reply to George Stephanis.

Being rather Noob to the WP scene I am curious to to Mr. Kinnear's experiences in as far as the updating issues go. I sense bitterness (ya think!).

This stuff is'nt rocket surgery in that we are speaking of an abnormally complex application. In fact, quite the opposite. Many a CMS is more complex under the hood but all CMS's share in common is they are a simple web creation platform. These are not Grand Theft Auto 5 or even MLB 10 on a playstation portable.

The complexity arises due to third party addon's. Thats not to say they are to be pointed at as "fault" zone. Just as you can use Windows and download some "my bad" application for it causing you to have much consternation on your PC. Not that long back in PC repair business thrived as "We fixed your PC, but we have to reinstall Window XP" or "WIndows Vista". Most times, nothing wrong hardware wise with the PC at all. Just something fouled up Windows usually in Dynamic Link Libraries (DLL's), Root Kits which essentially link into the interrupt service routine vectoring (ISR) though not always. Point being, its not unusal for third party "anything" to screw up "first party anything". Microsoft took great pains in moving through XP to Win 7. Vista was "transitional". Windows 10 will be "transitional". They mitigated "DLL HELL" as it was called though a variety of mechanisms fairly beyond scope of a simple blog message (even mine! I know, Jeff... "Thank the Lord, right" :) ).

In old Widows an update might replace core DLL(s) be that a software or OS update. All of a sudden, things are becoming unstable. It used to be more you installed on a WIndows PC less stable it tended become over time. Yes... Windows is infinately more complex than Wordpress Alex, but the same paradigms are present due to the extensibility.

When a "core update" happens how does it effect a wide girth of WP installations? Mine goes fine, yours doesnt, why? Is this due to us having the exact same codebase? The exact same database structure? The exact same plugins? Exact same versions being updated? Probably not.

Thats where complexity enters the fray and this was also true of Windows not too awful long ago. CTRL-ALT-DELETE used to be among the most used keys on a Windows PC in as far as administrating a PC went.

Microsoft re-invented not only the Update mechanism but the INSTALLATIONS mechanism as well as a TON of core code that loads both shared and restricted assets.

This includes everything from versioning of applications right down to versioning of libraries managed by the OS and applications. Its like "GIT" and "Source control" in several ways but actually built into the OS and quite a bit more.

And with such measures what happened? ALOT of legacy software no longer will run. So, Windows "XP" or Virtual machines need be used for that legacy software.

I can still write a application however in an unmanaged language like say GNU CPP that will make a complete mess of a Windows 8 PC though Windows has made that considerably more difficult.

Lets go with an example.

You have three plugins installed, one of them does its own database tables within the WP database.

Its has several relationships that are dependent upon core data. A WP update due to feature or security matter needs to alter some of that core data. Yet, here sits a plugin relying on it. When the plugin initializes first thing it wants do is get that data for this session. Yet, what it gets is not at all what it expected. It crashes. Webmaster has a hardtime now as he cant even get into the backend because WP crashes. He has to manual like go in, rename the plugin so it doesnt load.

But the theme is reliant on plugin data, so now it crashes.

WHICH and where does fault lay?

For WP to maintain 110% backward compatibility that means any database update changing structure for example requires that it in fact NOT USE that update or lest legacy plugin / theme breaks. This is also true of codebase dependencies (or can be)..

An "undo function" sounds great but again, its not as simple as it sounds when an update breaks a theme or plugin that is initializing early. The codebase need have something sorta like "Safe mode" in Windows. And with "Safe mode" all forms of services in Windows wont initialize for example. In Wordpress, not initializing may mean it cant be pulled up to a reasoned usable session for a webmaster.

This is just a rather "simple" example.

But again, the question arises is where does fault lay?

I will tell you and this is true of Windows software going back to Windows 3.1 and whats changed today.

Its the fault of the Plugin author(s) or the Theme Authors. HOW SILLY! NO ITS NOT! Yes it is.

NO ITS NOT!

Yes it is! LOL

OK, WHY!

Because one of the most dreaded parts of software engineering is making certain that DATA EXPECTED is actually what is received to the application NO MATTER the source of that data be it a user, a database, an XML file, RPC etc. Its been said that a full 60-70% of many applications are handling "exceptions". Thus, the plugin developer or theme developer should EXPECT bad data from the database or user and usually its quite a bit of code to deal with that. So, they dont. Its not just the checking for such exceptions but MANAGING them when they occur. So instead of "bellying up" the entire installation they gracefully degrade.

I've looked at alot of WP plugin and theme code and well... its just not done. Some just go die("An error occurred");

A plugin author / theme author cannot KNOW that their code in advance will work with a update of WP in advance. They need update their code as core release occurs. So thats chicken and the egg. To mitigate that means that the plugin/theme has to validate what its expecting. That might be as simple as checking the WP version and going, "Oh, we know we are valid through 4.0 but if 4.1 appears, we gracefully "shut off" ". Informing the suer to check for a new plugin update or notes before re-enable.

Thats the easy way out.

Now... that said, as I noted. How exactly did Microsoft do away with most "DLL Hell" which is rather similar sorta/kinda.

Well, its a managed environment at the operating system level. But, WP doesnt have that luxury or nightmare. Linux is not a managed runtime environment to the extent Windows has become. mySQL is not a managed environment as much of MS SQL Server has become. PHP is not a managed language as C# or Visual Basic has become (sorta, PHP does manage many things, hybrid sorta).

This is more like Adobe Photoshop. People producing addon filters and such.

Adobe has taken GREAT pains to deal with Plugins, or say Firefox. With Firefox what happens with new updates? If a plugin is available and updated it installs it. If not, that plugin is gone.

Rollouts test against the "most used" plugins before deployment of new versioning.

But, thats not to say "Adobe flash grabber" still doesnt botch up. BUT again they are running in a managed environment, not whats common in Linux, Apache/Nginx, mySQL and PHP.

---------------------

Care.

There is a difference in level of care.

Microsoft was lambasted for YEARS because of instability, not due to Windows directly but indirectly. "Printshop worked, now there was this update and it crashes". Its Microsofts fault! Yes. And no. But great pains and just BUCKETS of code have went into Windows now to make sure Windows does NOT give that blue screen of death.

As a author of plugins or themes just as a good windows programmer did and STILL DOES the developer MUST EXPECT in his codebase that everything and anything CAN and WILL go wrong. Whether thats a user holding the "R" key 5000 times on an input that need be 16 characters or less or something changing in the relied upon code base.

That means LOTS of extra code. Often MORE than the plugin code itself or perhaps theme code itself.

Thats called "CARE". But a free plugin author might not "CARE". I made this, its of use, so have it free. You expect me jump when it doesnt work? You expect me write 1200 more lines of code to make sure its happy until not? What part of free and of use perhaps didnt we get?

Lets get even WORSE!

At Theme Forest we have "Themes" that are more akin with a bucket of bolts. Here's the actual theme. And here are 140 codebases' from 120 different developers. Did we make sure those codebases are "CARE"ful? Of course not. We use Bob's background changer, Judy's Comment system manager, Gary's Drag and Drop layout plugin, Christies cache component.... on and on and on... "SEE IT ALL WORKS AND IS'NT IT BEAUTIFUL! (at 5 megabytes per session!). YES IT IS!

Update. All stops.

Now we have to find what the offending plugin or theme issue is or sit in frustration awaiting developers (all 140 of em perhaps!) to release an update and hopefully all cobbles back together well.

But thats no different than a WP site that doesnt come pre-packaged with buckets of other developers codebase.

If one deosnt use plugins or themes other than those included I am sure updates dont tend result in crash-o-rama.

But then, whats the point? Its all those nifty things that have people using WP? Right?

So... WHAT IS THE ANSWER? Dont do auto updates?

Sure. And lots of sites are now vulnerable.

DO JUST security updates? Irrelevant as any update can float up or down the codebase of plugins / themes.

Enforce plugin/theme developers to code based on what commercial standards are as outlined above. Anything can and will happen, write your code based on exceptions anywhere/everywhere. Result: Bloated code, less sessions, more memory per session usage, slower sites.

Solution: Managed runtime environment. Huh? Means Wordpress be a managed framework under the hood. That generally means all access to function happen through STRUCTURED API's. Things such as "Hooks" go out the window. The entire existing plugin / theme / codebase is also out the window. It means procedural code ends, Object Oriented code is required. Many developers may go, "Done.".

Its literally recode the application, "Wordpress Part Deux".

And even WITH that it doesnt mean plugins or themes dont come apart at the seams.

I remember being given a codebase for a game. Had all sorts of issues and I was hired by a large publisher to fix them since I was assembly language aware. So, I set out on it. Fixed it all. Was VERY VERY happy with myself. MY brother also a coder comes by. Shown him it, all proud of myself. He says, "So before you ship this back to them as the final you are 110% sure its solid". "Oh, yea, I've spent hours and hours on end beating on it, pounding at the code... this is solid as can be".

He takes his hands and just mashes them on the keyboard over and over. Game locks up. "Guess its not as solid as you thought". I was LIVID.

Another solution? Move the codebase over to ASP.NET which is a managed environment. But again, even at that, doesnt mean a plugin author or theme author is checking to make sure his code gracefully bellies up.

For WP.Core its all double edged sword. I dont say that because I am an "Afficiando", I'm not an affciando of anything. I've went through too many beer bottle caps and hair over 35+ years of coding/technology to affciando anything. If they dont do the updates they are deemed irresponsible. If they do the updates and things break as it cascades in the codebases they are called incompetent. If they dont add features to the codebase they get called "lazy" or "stagnant" or rumors start flying around.

I've experienced all of it over 35+ years.

But truth being truth none can say. Not you, not I until we walk in their shoesies.

Its like yelling at ones computer monitor. Nothing tends to come back. In fact the day it does I shall retire. LOL.