Creating Opal – an OSX/Linux command line toolkit for web developers
Open source software is the basis of just about every tool and website I’ve built and administered. Yet it occurred to me that in all the years that I’ve been using it, I had never contributed back. There were perfectly valid reasons — my work belonged to my client or employer; my work was covered under NDA; the employer saw it a being part of their competitive advantage — that were out of my control. Also, I had several excuses that stemmed from self doubt:
- What do I have to offer that someone else could do better?
- What if I can’t use it anymore because work priorities/technologies change?
- What if people think that I suck as a developer?
- What happens if, what happens if, what happens if infinity! Arrgh!
One day I decided just to do it anyway. Â I created my first project and put it on Github. You know what happened? Nothing. The sky didn’t fall. Nobody reacted. What was my project? It was a command line toolkit for web developers. I called it Opal. It’s still my favorite personal project because its such a big part of my workflow.
Opal came to be because I noticed people like to post their UNIX/Linux dotfiles (.bashrc, .vimrc, .bash_profile, etc) on the web to share their configurations to help others. Some post them on github, some post them on dotfiles.org, and some on their blogs. Usually only a small part of their configurations are reusable. The rest of it is specific to their personal configuration. Also, people seemed to have a fair number of the same functions and bash aliases. I had a number of custom functions that were of used only to me. That fragmentation is what i wanted to solve, or at least reduce. So I created a set of dotfiles designed to be reusable across people and machines. I combined the best of what i found online, and combined it with the best of what I had, and structured it to be universal and extensible.
Here’s an abbreviated list of features
- Some shortcut functions (mkcd, cdls)
- Vimrc files to help you code to various project coding standards( WordPress, Drupal, Zend)
- Wrapper commands for data service (weather, define, show)
- Data files (iso country codes, http status codes, USA state + territory abbreviations)
- New functionality (punch, numseg, today, truncate, set_prompt, htstatus, show)
All of these things together create an environment, to help you be more productive. If you’re interested and wondering “How do I get it?”, you can Download it from my github repo, extract it, and run the install script. The README  has a comprehensive list of bash functions. sometimes a list isn’t enough though. I may do a video tutorial of Opal to show you how can be used. If you’d like that idea, let me know in the comments below.
Since I released Opal in May 2012, I created a couple of new projects of my own. Â More importantly, I also realized that there’s more to contributing than code. In the summer of 2013, a colleague of mine from the Seattle WordPress meetup, Eric Amundson, and I, Â started hosting monthly documentation sprints on the weekend to help improve WordPress documentation. It’s been great because we make regular contributions, a little bit at a time. If you’ve ever thought about wanting to contribute back to open source software communities – do it! They always need help – especially as the user base grows larger. There’s more than enough work for everyone. You never know – it just might be the thing that opens the door to a new opportunity.