Developers
Getting started
What you need before you write code against Hubzero: a hub to develop against, a way to reach its files and its database, and a sense of what changed in the framework you are reading.
The CMS is PHP, and it does not run standalone. You develop against a
working hub, replacing its CMS directory with a checkout of
hubzero/hubzero-cms. Everything
under core/ is the platform; everything under app/ is that hub's own
state and is not in the repository.
What you should know
The requirements are modest: PHP, and a text editor. Working knowledge of the following makes the rest of this book easier:
- HTML and CSS
- JavaScript. The CMS ships jQuery 3.3.1 in
core/assets/js/jquery.jsand most of its own scripts are written against it. - XML, which every extension manifest and configuration file is written in
- The model-view-controller pattern, which components and the admin interface follow
- Object-oriented PHP. The framework is namespaced under
Hubzero\and autoloaded by Composer.
The platform targets PHP 8.2; core/composer.json pins the platform to
8.2.30 and the lint workflow runs on 8.3.
In this section
- Release notes — where release notes live, and the one historic change that still shapes the code you read.
- Accessing files — reaching a hub's files on the server, and reading and writing files from code.
- Direct database access — the hub's credentials, the
shell, and the
#__table prefix. - Upgrade guide — the legacy class names an older extension uses and what replaced them.
- Browser support — what the code actually targets, which is less than you might expect.
- Development environment — getting a hub to develop against, and what this repository does and does not provide.
Next
Foundation covers how a request is served and the names an extension uses constantly. Contributing covers sending a change back.
Rewritten and checked against 2.4-main @ 348f0057c2 on 2026-09-10.