[wp-trac] [WordPress Trac] #43711: Let's create a standard development setup for WordPress core.

WordPress Trac noreply at wordpress.org
Thu May 17 06:52:35 UTC 2018

#43711: Let's create a standard development setup for WordPress core.
 Reporter:  omarreiss         |       Owner:  (none)
     Type:  enhancement       |      Status:  new
 Priority:  normal            |   Milestone:  Awaiting Review
Component:  Build/Test Tools  |     Version:  trunk
 Severity:  normal            |  Resolution:
 Keywords:                    |     Focuses:

Comment (by pento):

 Thank you for your thoughts, @TJNowell. I wasn't aware of Docker's
 requirement for either Hyper V or Virtualbox when run on Windows, which
 certain changes the ease of use for a large portion of contributors.

 One of the most valuable things that Docker has done is to popularise the
 "container" concept: small, disposable, task-oriented VMs that are
 designed to spin up quickly, perform a single task well, and can be
 cheaply reset. This encourages tasks to be performed in the environment
 they most make sense: if something needs disk performance (eg,
 `watch`-type tasks), it can be run on the host. If something requires
 specialised software or configuration (eg, a MySQL database), it can be
 run inside of a container.

 This directly benefits the contributor experience: isolating the magic to
 little boxes that can't be easily broken (and can be easily reset in the
 event they are) reduces the cost of experimenting, knowing that you have a
 fast and reliable reset mechanism to fall back on. Drawing from my
 personal experience, VVV has the opposite experience: provisioning is a
 slow process, which discourages resetting, which makes experimenting a
 risky proposition.

 Thinking about a feature set I would want to see in the "VM" part of this
 project, it'd probably look something like this:

 - Lightweight. Download size should be small, startup time should be fast.
 - Disposable. Upgrades shouldn't run internally in the VM, downloading a
 fresh copy should be a good experience, encouraging people to take risks,
 knowing that they have a simple safety net.
 - Centrally manageable. We should be able to upgrade the VM images and
 make them available to download. As a contributor, I generally don't care
 what specific version of PHP is being used, just that it works.
 Ultimately, our contributor tool should be able to download and install
 updates in the background, preferably without the contributor even needing
 to be prompted.
 - Swappable components. Occasionally, I do care about the version of PHP:
 if I could easily click a button to switch to PHP 5.2 to test something, I
 would be a very happy contributor. I don't want to have to spend forever
 hacking PHP 5.2 support into a modern Ubuntu image: it should just work.

 @TJNowell: As our resident VVV expert, do you think that this is
 achievable with the Vagrant/Virtualbox stack? You mentioned that VVV3
 should solve the provisioning time, do you have an idea of how fast
 provisioning would be? Instant? Seconds? Minutes?

 VVV has a reputation for being fairly fragile, it's easy to break your
 development environment, and hard to fix it. Can we address this
 perception by making it more robust, and easier to reset?

 It bears repeating that I have no attachment to any particular technology
 or service, when it comes to solving this problem. To take the Travis
 example, Travis is a service that was easy to get up and running, and it's
 served us well for years. But, should we find ourselves better served by a
 solution that requires switching to a different CI service (or even self
 hosting!), we can absolutely do that.

Ticket URL: <https://core.trac.wordpress.org/ticket/43711#comment:8>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform

More information about the wp-trac mailing list