Skip to content

Instantly share code, notes, and snippets.

@ukutaht
Last active February 6, 2017 13:03
Show Gist options
  • Save ukutaht/12dd226070131c73b8cc5dd76a0251cb to your computer and use it in GitHub Desktop.
Save ukutaht/12dd226070131c73b8cc5dd76a0251cb to your computer and use it in GitHub Desktop.

Artisan

I think we all know that Artisan could be improved massively and we have ideas on how to make it better. There have been a number of attempts to rewrite the codebase. None of them have been shipped and they're at different levels of completion.

My proposal is not to attempt a rewrite. Instead, let's dust off the original codebase to start fixing issues and developing new features iteratively. We'll form a team around the project, working as we do on studio client projects. This will be also serve as a team where apprentices can experience working on something that is very close to a real client project.

Here are some specific areas of improvement I can think off the top of my head.

Build

  1. Continuous deployment.
  2. There's room to explore ops here (move to docker for example).
  3. Set up app server in EU-west for London office? It wouldn't probably be a huge win due to DB latency.
  4. Concatenate and minify static assets.
  5. CDN for asset caching.

Bugs to tackle

  1. PERT estimator goes wild intermittently.

New features

  1. Link to stories
  2. Make URLs more human-readable
  3. Deal with conflicts, being out of date
  4. Moving stories takes a long time to save
  5. Story cards could fit more text, show full title when hovering.
  6. Update design
  7. Unify labels and tags

What about Parmesan?

Parmesan is an experiment that may end up replacing artisan at a future date. Meanwhile, it's still valuable to improve what we already have in production.

Why should I commit my time to this?

Artisan is somewhere between a breakable toy and a client project. If we deliver nothing for a month, we won't have lost business or failed our customer. It's safe to expermient.

On the other hand, this is real software with over 100 active users. There's real pressure from real people to improve the software without breaking it. Features have to complete when rolled out, and bugs need to be fixed immediately.

It is also a great excercise in taking over a legacy codebase. I don't mean that in the pejorative sense, I'm sure the code is clean and well tested. Even then, there are challenges with inheriting a codebase like:

  • Learning your way around the codebase. How can you ship valuable stories when you don't know the code?
  • Upgrading dependencies (Artisan is 2 major versions behind on rails)

This is also a great opportunity to learn about devops. Many side projects never get deployed which makes it hard to practice your ops chops. This, however is a production app which needs good automation around building, testing, deploying, and monitoring.

So, what's the plan?

The first step is to form a team and plan the first steps. I propose we meet this Friday to plan work and figure out when/how we can work on this. Please let me know on Slack so I can block off some time on our calendars.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment