# ProcessWire 3.x: a CMS whose upgrade is replacing one directory

> ProcessWire is a PHP content management system and framework whose upgrade path is largely a matter of swapping the /wire/ directory, and whose philosophy is explicit about staying small and quiet rather than chasing growth. It ships no releases on GitHub and has been in continuous development since 2010.

**processwire/processwire** — ProcessWire 3.x is a friendly and powerful open source CMS with a strong API. 

- Repository: https://github.com/processwire/processwire
- Website: https://processwire.com
- Stars: 1,159 · Forks: 210
- Language: PHP
- License: NOASSERTION
- Published: 2026-10-19 · Updated: 2026-10-19 · Language: en
- Canonical page: https://hysenlabs.com/projects/processwire-processwire

## A CMS that insists on being small

ProcessWire describes itself as a friendly and powerful open source CMS with a strong API, and it is both a content management system and a framework built to save you time and work the way you do.

The positioning paragraph is unusual and worth reading carefully, because it explains a lot about the project's character. The README says web developers find ProcessWire when the time is right, after they have tried some other platforms, and that once they start using it they tend to stay. The reasons given are that it is addictive, easy to maintain for the long term, and does not have the security and upgrade woes of other platforms.

Then there is the paragraph that makes the intent explicit. ProcessWire does not make a lot of noise, is not into promotion, values quality over quantity, sustainability over growth, and a friendly community over popularity. It is designed to be a silent partner, not easily identified from the front-end of any website. The stated aim is to be best-in-class rather than big.

That is a real design position rather than marketing, and it has consequences. A CMS built for a small professional audience is one where the API, the field model and the template language get the attention, and where the module ecosystem is intentionally not the selling point.

The history backs it up. ProcessWire started in 2003, took the name ProcessWire in 2006, and has been in active development as an open source project since 2010. The README also notes that new versions are released just about every week on the development branch, which is the cadence of a project that keeps shipping rather than one that batches changes for a marketing moment.

## All custom fields, and what that means in practice

The two claims the README leads with are all custom fields and a secure foundation with proven scalability, and the field model is the part that differs most from the usual CMS defaults.

Most content management systems ship a fixed set of content types, a page type and a blog post type, and give you a way to add more. ProcessWire instead makes the field the primitive. The claim is that ProcessWire gives you more control over your fields, templates and markup than other platforms, and that the API makes working with your content easy and enjoyable.

The consequence is that there is no built-in concept of a page type in the usual sense. A page is a container, and what it holds depends on the templates you assign to it, which in turn depends on the fields you define. Everything in the page tree is the same kind of thing, and the site structure comes from the template selection rules you write.

That is the design that explains the audience split in the README. Web designers are valued for its adaptability and flexibility with modern website and application content management needs, and clients like the no-nonsense interface for adding, updating and maintaining content. A developer who wants the freedom to design the data model will find the API and the field system rewarding. A developer who wants a blog plugin to install will not, and the README is not trying to pretend otherwise.

The technical claims are about consistency, stability and security, and about the CMS being easy to maintain for the long term. The upgrade mechanism described later in this article is the concrete evidence for the maintainability claim.

## Installation and the shape of the tree

The installation procedure is short, and the way it is phrased says something about the project.

Simply extract the ProcessWire files to an http accessible location and load the URL in your web browser. That starts the installer. The Installation Guide on processwire.com has the details and instructions, and there is a separate Troubleshooting Guide for when it does not go to plan.

The absence of a database setup step in the README is worth noting. ProcessWire stores its content as files rather than in a relational database, which is why the installation is a file copy and a browser request. The repository tree reflects that file-based model. There is a `wire/` directory, which holds the core, a `site-blank/` directory which is the starting point for a site's own files, an `index.php` and an `install.php` at the root, and `htaccess.txt` for the rewrite rules that get renamed to `.htaccess`.

There is also a `composer.json` at the root, so Composer is part of the setup for dependencies, and the `LICENSE.TXT` sits alongside `CONTRIBUTING.md` and the README.

The important thing to grasp before upgrading anything is the division of labour between those two directories. `wire/` is the framework, and `site-blank/` becomes your site. Upgrading touches the first and leaves the second alone, which is the entire basis of the upgrade process described next.

## Upgrading means replacing /wire/

The upgrade story is the strongest practical argument in the README, and it is unusually concrete.

Upgrading is easy and usually just a matter of replacing your `/wire/` directory with the one from the new version. The README advises reading the Upgrading guide before proceeding with any version upgrade, and keeping it open during the upgrade in case you need to refer back to it.

The general upgrade process for moving from one 3.x version to another consists primarily of making sure you have everything backed up and then replacing the `/wire/` directory with the one from the newer version. That is the whole procedure, and the reason it works is that site content, custom fields and templates live outside `wire/`, in the site directory, so they survive the swap untouched.

The version-specific notes cover the cases where it is not quite that simple. If you are on PHP 8.4 or later, you might want to replace your `/index.php` with a copy from the new version to avoid an unnecessary PHP notification in debug mode. If you are upgrading from a 3.x version prior to 3.0.135, you should also follow the specific instructions for that jump, and if you are coming from any 2.x version, there is a separate upgrade path documented for it. The troubleshooting guide has a section for upgrades that go wrong.

The Pro module notes are the part that catches people out, because the paid modules have their own compatibility requirements. FormBuilder 0.5.5 or newer is recommended, ListerPro 1.1.6 or newer, the latest versions of all ten ProFields modules, LoginRegisterPro version 8 or newer, and ProCache 4.0.5 or newer, where after upgrading you should check the ProCache settings under Setup and see whether it suggests modifications to your `.htaccess` file. For all other Pro modules, the latest available version is recommended.

So the claim that you just replace a directory is true for the core, with a set of version floors and one post-upgrade check for the paid modules.

## Debug mode, releases and where to look for help

Debug mode causes all errors to be surfaced, which in a CMS of this design is the main tool for understanding what a template or field is doing wrong.

On releases, there is a structural point to be clear about. The repository has no GitHub releases, and the README describes releases happening on the development branch about every week. Downloads go through the processwire.com download page rather than through GitHub. If you are pinning a version, you are pinning a downloaded archive, and the development branch is the moving target rather than a release channel.

The community channels are the other part of the picture. The forums at processwire.com/talk are the main gathering point, with a weekly newsletter and a website showcase of what other people have built. Two named contributors handle the recurring output, with weekly news posted by Teppo Koivula on ProcessWire Weekly and weekly core updates and related topics posted by Ryan Cramer in the support forum's News and Announcements board.

The rest of the resource list is straightforward: the API reference, the documentation, the modules and plugins directory, and the downloads page. There is also a troubleshooting section linked from the table of contents, which is the first place to go for an installation problem.

## Conclusion

ProcessWire fits a web professional or small team that wants complete control over fields, templates and markup, and that values a decade-long upgrade path over a fashionable feature set. It does not fit a team that wants a large ecosystem, a hosted platform or a headline release cadence, since the project deliberately avoids promotion and publishes weekly development builds rather than tagged releases. Before you install, read the Installation Guide on processwire.com, plan the upgrade by replacing /wire/ with a backup of the site files in hand, and check the Pro module version notes if you run any of the paid modules.

## FAQ

### What is ProcessWire?

It is a PHP content management system and framework, described as a friendly and powerful open source CMS with an API. It gives developers more control over fields, templates and markup, and it has been in active development as an open source project since 2010.

### How do I install ProcessWire?

Extract the ProcessWire files to an http accessible location and load the URL in your browser, which starts the installer. The Installation Guide at processwire.com/docs/start/install/new/ has the full details, and there is a separate troubleshooting guide.

### How do I upgrade ProcessWire?

Back up your site and replace the `/wire/` directory with the one from the newer version, since site content and templates live outside that directory. The README also flags a PHP 8.4 index.php replacement, special notes for jumps from before 3.0.135 and from 2.x, and minimum Pro module versions such as FormBuilder 0.5.5 and ProCache 4.0.5.

### Does ProcessWire use a database?

The installation instructions describe extracting the files and loading the URL in a browser to start the installer, with no database setup step, and the repository tree stores the core in a `wire/` directory and site files in `site-blank/`. The content model is built around all custom fields rather than fixed content types.

### Where can I get ProcessWire support?

The community support forum is at processwire.com/talk, with a weekly newsletter, a website showcase, and weekly news posted by Teppo Koivula on ProcessWire Weekly and by Ryan Cramer in the support forum's News and Announcements board. Documentation and the API reference are on processwire.com.

## Sources

- [Issues](https://github.com/processwire/processwire/issues)
- [processwire/processwire on GitHub](https://github.com/processwire/processwire)
- [Project website](https://processwire.com)
- [README](https://github.com/processwire/processwire/blob/master/README.md)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/processwire-processwire
