 [ ← blog / drupal ](/) Aug 02, 2023  ·  \#drupal  ·  4 min read 

# Improving Simplytest's maintainability



Things have been pretty quiet on the [Simplytest](https://simplytest.me/) front. But I want to bring a fresh round of changes that will make it an easier project to maintain.

## The Simplytest development workflow

In 2021, I spent time helping [Adam Bergstein](https://nerdstein.net/) complete the project's modernization off of Drupal 7. We migrated the code from a self-managed virtual server owned by Adam to sponsored hosting by [amazee.io](https://www.amazee.io/) on [Lagoon](https://lagoon.sh/).

But, we inadvertently made the project extremely difficult to maintain. Historically the Simplytest has been public as a Drupal *distribution*. That's just how the project was packaged and used internally. For the Drupal 7 era, this worked out great with existing build system tools. But, with the new setup, it was a bit funky. We needed a Composer build that pulled in the Simplytest code base. We then began to manage *two* repositories for one system.

- [`simplytest`](https://git.drupalcode.org/project/simplytest): the main code which provides the functionality of Simplytest on Drupal.org's GitLab instance.
- [`simplytestme/website`](https://github.com/simplytestme/website): the Drupal site scaffolding managed by Composer to create the Drupal site with the Simplytest code deployed on Lagoon.

We wanted to keep some development on Drupal.org because:

- That's where it has been historically
- We could leverage Drupal's issue queues and credits, hopefully fostering contributors.

In the end, this made it harder to maintain. Personally, it made fixing bugs feel like an absolute chore that I couldn't squeeze in.

- Drupal.org's DrupalCI testing infrastructure doesn't support testing profiles, and Drupal.org was still beta testing GitLab CI at the time ([it's now generally supported](https://www.drupal.org/association/blog/gitlab-ci-is-now-enabled-for-every-project-hosted-on-drupalorg).)
- We couldn't convert the existing `simplytest` repository into something readable by Lagoon or as rewrite it as a normal Drupal build (there are reasons, partly with how Drupal.org assumes a `profile` project should be structured.)
- To test, I had to make a manually triggered workflow GitHub Actions workflow to apply a patch from Drupal.org and run our tests. We had to start any continuous integration manually.
- Deployments were hard. After committing fixes in the `simplytest` repository, you had to run composer update `drupal/simplytest` within the `simplytest/website` repository 🤮. This was *partly* automated, thanks to [Violinist](https://violinist.io/).

While we worked around some of the difficulties, it was too much work. There were too many menial tasks actually to get to a testable position. And trying to explain this to contributors was horrible.

"Okay, clone this repo. It'll build Drupal. The code base is in `web/profiles/contrib/simplytest`. Oh, make sure the Git repository is preserved. Okay, now open an issue on Drupal.org... yeah there it is, not GitHub, where you got the other repository from.

But you know what? It was easier to maintain than the previous iteration. It had and still has its quirks, but it allowed us to support Drupal 9 and Drupal 10 testing, including version constraint checks to help guard against broken builds.

I'm excited to improve upon these features for this community service.

## The **improved** workflow

I proposed to Adam that we ditch the two repository approach and move everything into a single repository, the `simplytest/website` repository. One source of truth. One repository that gets deployed. One place to make changes. [I created a PR](https://github.com/simplytestme/website/pull/190) in April that merged the `simplytest` repository into the `simplytest/website`. I finally merged it today.

It wasn't too hard, actually:

```bash
cd simplyest/website
git remote add profile git@git.drupal.org:project/simplytest.git
git merge --allow-unrelated-histories profile/8.x-4.x
```

This merged in all previous commits and contributor recognition. I wanted to maintain our project's history with this change.

Now all of the code is within [`simplytest/website`](https://github.com/simplytestme/website)! This will speed up fixes and development velocity for the project. I am working on cleaning up some dependency debt, upgrading the PHP version, and documentation.

The project comes pre-configured to use [DDEV for local development](https://ddev.readthedocs.io/). This should make it much easier for contributors, including me, to help fix bugs or troubleshoot the service!

 

  ![](/themes/custom/mglaman/images/headshot.webp)Thanks for reading

I write about Drupal, PHP, and the quiet infrastructure behind large sites — caching, config, and testing. New posts land every week or two.

 [Subscribe via RSS →](/rss.xml) [About me →](/about-me) 

 



 

  [← Older

Speed up developer onboarding with DDEV snapshots from your CI

 ](/blog/speed-developer-onboarding-ddev-snapshots-your-ci) [Newer →

Parallels of typing with PHP and TypeScript 

 ](/blog/parallels-typing-php-and-typescript)