markjaquith / feedback

Ask @markjaquith anything!
42 stars 4 forks source link

Your ideal development environment? #57

Closed peterjohnjoseph closed 9 years ago

peterjohnjoseph commented 9 years ago

Hey Mark, ever since I found WP-Skeleton and WP-Stack a few years back, I've always wondered what your development environment was like, or what you might suggest to someone like me. Now, I'm sure someone like you has different environments for different circumstances, so I'll keep this from being vague by using Wordpress site development as an example. I'm also not going to limit this to just theme development, as most theme dev's I know are just using a single VM and single Wordpress install (VVV would probably be nice for theme dev), and creating their themes on that, as they're not creating a new install each time. What I'm talking about here is site development; having to potentially deploy to different server with each new site, with a new set of resources and dependencies, a new Wordpress install, with a new custom theme installed on each.

With so many tools like VVV, VagrantPress, Bedrock, PuPHPet, etc., the options are there, but sometimes I feel like building something from the ground up might be worth it. I've seen you comment on the PuPHPet page, so is that something you are currently using? I've tried it myself, but find that when someone else has written that much code, with that many options, too much is up in the air when it comes to customizing later. Mostly little things that I've been able to work around thus far. Do you create your own boxes, and provision with Puppet, or is the PuPHPet GUI enough for you to get started?

Maybe a better question would be what you would suggest for someone in my situation? My situation is probably similar to a lot of Wordpress developers, so I'm hoping this helps more than just me. Considering the amount of research I've done, I'd say the answer to that question is yes, it will.

Like I said, I develop multiple sites. I work locally first, with my local repos being hosted on Bitbucket. Most sites end up being hosted on my own servers, which are more than likely run on Ubuntu 14.04 x64, Nginx, PHP-FPM, etc, but some can go elsewhere, so having flexibility helps. I usually create custom themes, or repackage a theme for each situation. I use Composer for PHP Dependencies, Xdebug for Debugging, PHPUnit, PHP-CS, Grunt for the swiss army knife it is, Bower for other dependencies, and some other modules for a number of different tasks, which is why using something like Puppet to provision all of my sites sounds like a good idea to avoid having to repetitively install them on each new sites VM. I also like using WP-CLI to automate Wordpress tasks, and I like to use your WP-Skeleton for each site, as it helps me set up my Git repo's easily, and also set up and create separate Development, Staging, and Production servers. I'd like to deploy with Capistrano, unless you can give me a reason why I might want to choose something else based on what I've told you.

I'd love to hear what your workflow consists of. I've been using your tools for a long time, and would love to see how you handle this yourself.

Thanks, P.J.

markjaquith commented 9 years ago

I use two things:

I find that for quick stuff, or basic plugin development, MAMP Pro is just fine. Easy to set up, power up or down, etc.

For client sites that, in production, have complex setups with Memcache, Redis, Nginx, etc, I need to be able to develop with a stack that is similar (or identical) to their production setup. In that case, I'll create a VM with PuPHPet, customize it to match, and use that. The upside is that I can test Nginx config changes locally. The downside is that it’s slower, because it’s running in a VM, and maintaining it can be annoying.

I've used VVV in the past, but found it was too heavy for light work, and not environment-matched enough for intense work.

I've also been eyeing Chassis. Didn't know about Bedrock, that looks nice too!

peterjohnjoseph commented 9 years ago

Didn't know about Chassis myself. Bedrock is great. Still has some kinks to work out, and I'm not the biggest Ansible fan, but it's not like I can't use all Puppet scripts after their provisioning.

Thanks again for answering. You're a good person for opening yourself up like this.