Long-term Orchard Core maintenance for the City of Santa Monica
Back in 2021, we wrote about helping the City of Santa Monica move santamonica.gov from Orchard 1 to Orchard Core. Since then, we have continued working with the City's team.
In the last couple of years, much of that work has been maintenance: upgrading Orchard Core, improving tests, making local development easier, cleaning up the codebase, and fixing performance issues.
The Orchard Core upgrade was an important part of this. Keeping the CMS version current helps the site stay on a safer and better-supported foundation. It also brings in fixes from Orchard Core itself, including fixes for issues that could otherwise affect users, editors, or developers.
The other changes support the same kind of work. Automated tests help catch problems before deployment. Auto Setup makes local development more predictable. Static analyzers, codespell, and Renovate make the codebase easier to maintain.
Most of this is not visible from the outside, but it is important for keeping a long-running website working well.
Upgrading Orchard Core
One of the bigger tasks was upgrading the site from Orchard Core 1.8.3 to 2.1.7.
As usual, the version bump itself was only one part of the work. We also had to account for the site's custom code, existing behavior and dependencies. The goal was not just to get to a newer Orchard Core version, but to leave the project in a state where development could continue normally afterwards. We had to make sure that everything kept working as before, without introducing bugs.
Since this was a major version upgrade, we had to fix several breaking changes and review parts of the application where the new version changed existing behavior, to make sure the site continued working as expected.
Adding automated testing
We added end-to-end tests with Lombiq UI Testing Toolbox, a web UI testing toolbox mostly for Orchard Core applications. It contains everything that’s needed to run Selenium-based UI tests for an Orchard Core app.
The test setup now includes HTML validation and accessibility validation, so problems in those areas can be caught automatically during development. We also added visual verification tests to detect unintended UI changes.
On top of that, we added monkey tests. These help find unexpected issues by interacting with the site in ways that are less predictable than a normal scripted test, but can mimic actual user behavior well.
We also added security testing with Zed Attack Proxy (ZAP). This runs an automated web application security scan on the project during the testing process and helps catch common issues.
Making local development easier
We improved the developer experience with Auto Setup. The Auto Setup module allows the application and its tenants to be installed automatically on the first request.
This makes it easier to get a local environment running without relying on too many manual steps or project-specific tribal knowledge. People need to be able to clone the repository, set things up, and start working without spending unnecessary time figuring out the environment. It also helps ensure that everyone starts with the same data and sees the same results.
Cleaning up the codebase
We added static code analyzers and fixed the violations.
This was not about changing the product from the outside but about getting the code into a more standardized state, so future changes are easier to review and maintain.
We also added codespell to catch spelling mistakes, and Renovate to make dependency updates more manageable.
Working on performance issues
We also helped investigate and resolve performance issues. After identifying a number of bottlenecks, we implemented caching improvements and code changes that reduced unnecessary queries and improved the site's overall responsiveness.
Ongoing work
There is less visible work, but plenty of important maintenance work behind the scenes: keeping Orchard Core current, improving tests, reducing friction for developers, cleaning up code, checking accessibility and HTML output, watching for regressions, and fixing performance issues when they appear.
We really enjoy continuing to work with the City of Santa Monica's team. The collaboration has grown from the original Orchard Core migration into ongoing technical support, and we're glad to keep helping as santamonica.gov evolves.
This is what Sushmita Inamdar, Software Developer at the City of Santa Monica, says about working with us:
Lombiq continues to be an invaluable partner in maintaining and improving our Orchard Core platform over the past several years. From managing complex Orchard Core upgrades to optimizing performance, automated testing, accessibility, and developer workflows, Lombiq has consistently demonstrated deep technical expertise and a strong commitment to quality. Beyond delivering technical solutions, Lombiq consistently provides expert guidance, responsive support, and a proactive approach to long-term maintenance that has significantly improved the reliability, security, and maintainability of our platform. Their work behind the scenes has helped ensure that our website remains stable, secure, and easier to evolve as our needs continue to grow.
We're grateful for the trust and the continued collaboration, and we're happy to support the City's team in keeping santamonica.gov reliable and maintainable.
Do you run an Orchard Core site that needs upgrading, testing, performance work, or long-term maintenance? Get in touch with us, and we can help you plan the next steps.