The Changelog: Software Development, Open Source - Oh my! Zsh. (Interview)
Episode Date: October 25, 2021Robby Russell is back on The Changelog after more than 10 years to catch us up on all things Oh My Zsh — a delightful, open source, community-driven framework for managing your Zshell configuration.... It comes bundled with plugins, themes, and can be easily customized and contributed to, because hey, that’s how open source works. In this episode Robby gives us a glimpse into the passion and the struggle of being an open source software maintainer.
Transcript
Discussion (0)
What's up? Welcome back. This is the Changelog. On this show, we feature the hackers, the leaders, and the innovators of the software world.
If you're new here, head to changelog.fm to subscribe.
Today, we're joined by Robbie Russell, and he's back on the Changelog after more than 10 years to catch us up on all things Oh My ZShell.
Oh My ZShell is a delightful open-source community-driven framework for managing your Z shell configuration. It comes bundled with tons of plugins themes and can be easily customized and
contributed to because,
Hey,
that's how open source works.
Robbie gives us a glimpse into the passion and the struggle of being an open
source software maintainer.
Big thanks to our partners,
Linode,
Fastly and LaunchDarkly.
We love Linode.
They keep it fast and simple.
Get $100 in credit at linode.com slash changelog. Our bandwidth is provided by Fastly and LaunchDarkly. We love Leno. They keep it fast and simple. Get $100 in credit at leno.com slash changelog.
Our bandwidth is provided by Fastly.
Learn more at fastly.com.
And get your feature flags powered by LaunchDarkly.
Get a demo at launchdarkly.com.
This episode is brought to you by our friends at Fly.
Fly lets you deploy your apps and databases close to your users in minutes.
You can run your Ruby, Go, Node, Deno, Python, or Elixir app and databases all over the world.
No ops required.
Fly's vision is that all apps should run close to their users.
They have generous free tiers for most services, so you can easily prove to yourself and your team that the Fly platform has everything you need to run your app globally.
Learn more at fly.io slash changelog and check out the speedrun and their excellent docs.
Again, fly.io slash changelog or check the show notes for links. so robert this show goes back in history in two ways one in scheduling and two you were on episode
61 which is a whole different era of this show.
Like I look back at this show we've done, Jared and I and others over the years. And it's just
like, this show has like eras. You got the, the win era, which was like probably around that,
that timeframe, episode 61, somewhere around there. Then you got the Kenneth Reitz and a few
others, Andrew Thorpe era, which was probably 30, 40 episodes.
And then Jared, pretty much since then.
So, I mean, like you were back in the earliest echelon of this show, episode 61, Omae ZSH, Planet Argon, a lot of fun stuff.
How you been?
I've been good.
It's been in many years, but 10 and a half years, I think, since that episode was recorded.
I have vivid memories of it because I took three months to go to Paris and rent an apartment.
And so I recorded that from my little apartment in Paris.
So I have fond memories of that.
I remember being very nervous about not having a good audio setup and also just being on the podcast in the first place.
Gosh, I was also nervous. I was like, I use this thing. I barely know about it. And I kind of still barely know about it, but it was only like not even two years
old at the time. So barely. Yeah. I'm glad you did the math too. Cause that was May 26th, 2011.
That was definitely more than 10 years ago, just passed. But I mean, that's a long time ago.
So I think there's a lot of different ways we could take this just to sort of forecast directions we might go.
One, this is a really long project, probably an unexpected success of a project because you probably I remember the early story where you just sort of did this and put it out there and it was just helpful.
And plugins came in, like kept growing and growing and that kind of stuff.
And then you also got Planet Argon, which you do a lot of Ruby stuff there.
So you're a Rubyist and you've got a consultancy. So there's just a lot of different
angles we could take here, but a maintainer for quite a while. Are you still in the maintainership
part of OMISEUSH? I see creator is your title on the site, but does that mean you're no longer
maintainer at all? I do some maintaining on the project. So we have another developer, Mark, who's based in
Barcelona, who does a lot of the day-to-day, week-to-week maintenance on the project. And
between the two of us, we do most of it. So we do some triaging together. We'll schedule times to do
some pairing together and we'll triage issues and PRs together. And that's been something we've
started doing this year and that's been helpful for us. Otherwise, he's been for the last, I don't
even know how many years now, he's been kind of taking the lead on doing a lot of the PR triage and
working through that stuff. And so I'm more of the making sure that we're keeping it simple for
new users. So I'm always kind of, so when there's some bigger topics or ideas for the project around
changing installers or updates or with the sort of things that people need to know
before they use Omaze Show, then I start getting involved in like, well, let's make sure
we're kind of aligning that with some of my goals with the project that weren't necessarily goals
when I created the project, but over time realized that what I really wanted to do was have this be
a good entryway for people new to, people that are maybe a little uncomfortable with
working in the command line. Like they haven't done it that much. They might be new to, people that are maybe a little uncomfortable with working in the command line.
They haven't done it that much. They might be new to being a software developer. So I just imagine these junior developers, junior full stack developers that are like, okay, I need to learn
this thing called Git. I want to use this stuff on the command line. I need to run these commands.
I don't really understand exactly. And I'm like, I want to instantly make their experience be a
little bit more exciting, more friendly, something they can feel like they can customize a little bit rather than just being this blinking cursor. So I always take that into
consideration when we're kind of talking about new features and new updates and ways we can take the
project. And so that's part of my role. And then I do, obviously, I interact with the community a
lot, like on social media, and then participate in the discussions. And we've got a very active
Discord instance and stuff that we've been using for the last few years and in many ways because it's been such a i hate to use the word popular but it's
been a popular a lot of people use it and it's kind of always shocking it's like one of the fun
things about always our open source is that you don't really know how many people are using your
software project you just can kind of guess based off of like github has some very limited statistics
on like browse like people hitting the website
or how many people are cloning or pull it.
You know, like you'll see those numbers like,
okay, how many daily clones?
And I'm like, they don't really tell you
what that number means,
but you're like, oh, 25,000 clones a day.
And you're like, well, is that for a pull
or is that like a fresh new clone?
Right, because your install process is a shell command
that is a curl command that pulls it down so there's some raw stats there i'll have to say that oh my zsh is a default
install for me like i if i'm on a machine that i control and i want to maintain i keep using it for
more than just a little bit so like a random vps i'm probably not gonna put it on there
but like a local raspberry pi or my max that that I'm using locally and whatnot, or a Linux box locally, I'm upset if, oh, my ZSH is not installed.
My life is just different on the command line managing it.
So for me, it's a default install.
I'm so glad to hear that.
It's funny because we have servers that I interact with that are using Bash,
and then I never feel like I need them out there on those servers and stuff like that.
But I've always thought of it more as like this is my local environment i wanted to be kind
of set up and but i know a lot of people use it in there for their server devops type work and
that's great uh it's not what i really envisioned for the project but i guess that's well the
plugins really let you extend it which we could talk to because like i exactly without going too
far into it one of the things i appreciate beyond just simply like local dev stuff is I'm
doing some stuff with Docker and Docker and compose on Raspberry Pis and
whatnot, or a Linux box.
And so just having some of the niceties that you forget about or want to do in
the plugin is just helpful. You know,
like the command line completion stuff that's in there,
the shortcuts or aliases to come on board with enabling that plugin,
which is just there.
And I'm like, why would I not use something?
I didn't have to configure it.
So like for me, it's like baked in config.
Just install Omaizsh, enable a couple plugins.
I have to put Dracula Pro.
So Xeno, Rocha, I put Dracula Pro as my theme pretty easily on all my machines.
Enable it there.
It's pretty easy to do that.
I did learn something recently about custom, which I didn't know before, which we could talk
about, but which bit me on
a OMA ZSH upgrade. I kept
hitting a git issue
because I wasn't putting my themes in custom.
Long story short. And so like
decade, a decade later of using it, I
finally realized, oh, there's a custom directory I should put
things into. So that's
how it works. It's a lot of
fun little things that we've had to kind
of work around over the years to allow things like that. And it's like, I remember I wrote a
blog post, I want to say, I don't know, maybe five or six years ago around like, it's kind of like
do my Z show, like how I accidentally create like a monster of a project. I'll include a link to you
so you can share that in the show notes or whatever. But the was just talking through so many of the things that people really like and appreciate
about Omaze Show were never there when I first started it.
It was really like, here's my handful of aliases and little shortcuts I want to use, and I
want my coworkers to use it so when we're pairing, we're all kind of on the same page.
And so plugins, themes, those came in the weeks that followed after I first open sourced
it.
And I was like, oh, that sounds interesting. Yeah maybe maybe there's just an easy way to do that and just blow
so it wasn't like i've given a couple talks on this too at some like coding schools and i was
just showing them like literally like here's like the implementation it was wasn't like i'm not a
crazy z like z shell command line scripter by any means it was more like oh they're like we'll throw
some things in this directory and if you put them in here it'll like try to find a file with that file name and then just load it and then you get
all this stuff and it wasn't i always kind of think of that as like i feel like it was like the
newbie way of approaching a project and in a weird way like so many people can appreciate it because
it's also kind of simple just to interact with but it's like behind the scenes it's not a super
complicated software project by any means but it's been awesome to see
how it's been mimicked cloned how people are using it in windows machines and different
operating systems and like there's variations of that in different platforms and you're just like
this it's an honor it's like even the name of the project wasn't something i intentionally
thought about it was i had named something else called Oh My Science like about two months before.
And it was just like kind of playing off the name
of a different project and that went nowhere.
So it wasn't even like intentional on that front.
So it's like a completely accidental thing
that a lot of people know about and know me for.
And outside of selling some stickers and t-shirts,
it hasn't really made me any,
like the person that makes that Dracula theme
probably makes way more money with that
than I've ever made
because of Omaizy Shop
so
outside of
maybe a few clients
have mentioned it
here and there
we did a show with Zeno
so you can listen to that one
if you want
he actually doesn't mind
making money from his
open source too
so I was
actually
the crux of that
episode was like
yes you can make money
from open source
and here's the way
Zeno Rocha has done it
and why he feels
it's okay
I said hey you can do this too if you want to.
I know.
I keep thinking about like ways to monetize Oh My Z Shell.
And then I'm like, I don't want to be accountable to anyone to do anything in terms of like
commercial support or anything.
Although I've been recently getting requested because there's some companies that are starting
like the security teams are starting to say that they can't use Omaze Shell.
I don't know exactly why yet,
but they want me to go through these auditing processes.
I'm like, this is starting to feel like a lot of extra work
to allow you to use it.
So maybe there's a corporate version of this product
that allows me to at least talk to your security team
to get it bypassed so that you can install it
on your command line.
So it's unfortunate.
Package it up and license it, you know?
Yeah, maybe.
Why not?
Let's speak to its popularity,
because you said you don't like to say that it's that popular.
But man, I mean, if you just look at the raw numbers,
you mentioned the installs or whatever those numbers represent,
1,900 plus contributors, 300 plus plugins, 140 plus themes,
135,000 stars on GitHub, 23, 000 almost forks as of this time so i mean massively
popular project now on this podcast it's like 50 popular because or maybe i guess 66 because it's
yours adam's a loyal user i'm not even a z shell guy i just use bash so maybe tell the people who
are like me because surely there's many of us out there
who are just happily using Bash or maybe not using Bash,
what got you into ZShell?
Why did you like it more and why was it worth building this project around?
That's a good question.
At the time there was an element and a lot of the ideas that came in
for the initial version of my ZShell were from people I knew
in the Ruby on Rails community.
Even some of the initial code in my ZShell was probably copied and pasted from their Zshell configuration
that I had copied a year or two prior to that.
I think a few people like Rick Olson
had shared a bunch of things with me over the years.
Techno Weenie.
Yes, exactly.
So at the time, Zshell versus Bash,
Zshell just had this really awesome auto-completion thing
built into it that I don't really recall
being really simple to do in Bash,
or if it even really existed at the time. And so it was really just like, there was stuff baked
into it with a couple of configuration changes. And all of a sudden it was like, oh, I'm auto-completing
SSH host names. Part of our business used to be in hosting as well. And so we had lots of servers.
And so I was doing a lot of host names and stuff like that at times.
And that was just this really, really helpful little thing
that I kind of just got out of the box.
And then we started just doing some scripting there.
So I think it was just more of it.
It wasn't the default.
So there was probably this allure of being like,
oh, it's something else.
It's not this default.
It's like you get these extra little things.
You switch over to it.
You know something that other people don't.
When you read their documentation, it's a little bit more archaic so if you figure something out you feel maybe a little clever i'm just being honest sure
and now i mean i see people doing stuff in bash now there's a couple of even like oh my there's
like bash it and a couple other oh my z shell like frameworks now that seem to have a lot of
very similar features and functionality.
And I'm like, okay, well maybe side by side, they don't really look that different anymore.
Now I think it's the licensing is like, I guess an aspect.
And that's why Apple switched over to have ZShell be the default a couple of years ago,
which I was like, that was unexpected.
Kind of ironic, right?
Like that's cool, but now you're the default.
Exactly.
So now we're the default.
But a lot of the time it was just like, there was some cool little features
we got with like the auto-completion
and just being able to wire that stuff into.
Git was kind of,
was still new at the time.
And so being able to do some cool things
like show your Git branch in your prompt.
And I'm sure you could figure out
how to do that in Bash as well.
The problem is you'd have to go and figure it out.
Yeah.
That's what I love about OMI ZSH
is it's batteries included.
I don't have to go and learn
how to trick out my prompt or color it or theme it.
Like these things just come in and I get to stand on the shoulders of giants and just
use their work, which is the beauty of open source.
And it really is getting to use that fun stuff.
And I didn't have to worry about, I don't even know why I use Z shell over bash.
Like I don't have that opinion, but what I appreciate about it is whenever I type in,
you just do exactly.
And thankfully Apple finally agree with me and Rob,
of course,
to follow suit.
But you know,
like if I type SSH and then up arrow,
it's just going through all my SSH histories.
So I don't have to like rethink which machine on my local network do I want
to SSH into, or even external in the cloud.
It's just in my history out of the box.
And I don't have to go and config that in Bash.
I'm sure I could, but I didn't have to.
It also easily organizes my ZSH RC file with extra aliases outside that.
So managing where my path is at or just anything
really in there is just, just super easy. So for me, it was like, well, I like Z shell. I like
oh my ZSH it's batteries included easy to install. I mean, it's a simple command given you trust the
shell command at the side of this curl command that you're going to install. Other than that, I mean, it's pretty easy. It installs a.omizsh directory in your local
root, essentially, and everything is just Git-based to update it. It's too easy. It's too easy.
And it's really easy to remove and take it away. I always appreciate you kind of talking through
how you perceive that and why you said batteries just and like it goes back to me wanting to make sure that it's really simple for those like i just
think of that junior full stack back-end front-end developer coming into this new career of theirs
they're like getting comfortable and they're like oh you know when they maybe they're using vs code
and they pop up in the terminal part of it and they got that in there and they're just like okay
this just looks a little nicer it's a little little cozier and they can kind of customize it
a little bit, but they don't really need to know a lot about the command line to start feeling like
it's a comfortable space for them and having some control over that. So there's that part of it.
And I always remember there was a point when the project, there was some people working on the
project with me and they were proposing some things that were going to make it, I felt way more complicated to keep updated
and to install and configure.
Like you would need to know a lot more
about like Git sub-modules.
And I'm so glad we didn't go down that path.
Me too.
But there was a point,
there was a point where we were talking about that
for like plugins and themes,
because a lot of people will argue
that OmniZ Shell is just completely bloated.
You download all this stuff.
I think it's like a couple of megabytes. I don't know. is just completely bloated. You download all this stuff. I think it's a couple of megabytes.
I don't know.
But it's bloated and you got all this stuff and you're like, it's like full of security
vulnerabilities because there's all these random files on your machine.
Well, I mean, like, I don't know how that's different than like installing any other gem
or library necessarily.
But it's yes, you do it running from curl.
There's potentially some security vulnerabilities around that area of it.
And I'm open to debating that. Well, I think if you inspect the shell file, that's potentially some security vulnerabilities around that area. And I'm open to debating that.
Well, I think if you inspect the shell file, that's your security.
You can even just simply curl that down and then run the shell command locally after you've confirmed that the shock key matches or something like that.
I mean, if there is one, I don't even think that's even an option from what I can tell to confirm like some sort of checksum or whatever.
I guess you could do that, but you could do it a bit more secure.
But I trust you.
Hopefully your supply chain isn't getting hacked and we're still good to go.
But I mean, I never scrutinize it.
It's not something that you run on the daily, right?
Like you run it once and you're done unless maybe it upgrades.
Right, on install only.
And then from there, it's just a Git config.
It's like a regular Git repository.
You know, the one command I think keeps me that makes brings me joy is the reload command so anytime you make a change to your path or you
do something in your rc files or whatever locally you need to reload z shell rather than like how do
i do that again let me google that i land on stack overflow or whatever and i copy and paste it it's
just there reload bang and then z shell is reloaded It's one of those things that just brings you joy
to use the tool, really. And I think that's what I liked always about it, because it always
had reload, as far as I can remember. And just little things like that
was just like a joy factor to use. So that's why it was
a default install for me.
So there's a common trend or maybe a pattern that we see with software developers,
especially when you talk about juniors,
people just getting started.
When you learn a platform by way of a popular
open source framework or tool,
you often can't tell the difference
between the platform and the tool.
So you learn Ruby by way of Rails,
you're not sure, is this a Rails thing I'm going to use?
Is this a Ruby thing?
Same thing with jQuery.
There are a lot of people that call themselves
jQuery developers for a long time.
They didn't know they knew some JavaScript.
Same thing's happening with React to a certain degree.
I imagine that might happen here because there's all these plugins and stuff,
but I wonder if it really matters in practical use.
If you know what's ZShell and what's OhMyZShell
and what's going to be there in Bash,
as long as you're able to have your setup,
it's probably not the same thing
where you really need those underpinnings.
I think when you're programming,
you need to learn the underpinnings of what's Ruby
and what's a Rails function.
But I think probably with your environment,
I don't know, Robbie, what do you think?
It's probably not that big of a deal?
It's not a big deal, but I would say that
as someone that's not providing support
to the general ZShell user community,
I do know, and I've heard from over the years,
and part of that article I mentioned earlier
is I included some screenshots from tweets and posts elsewhere
where there are people that are more on the pure ZShell realm
who detest only ZShell
because people will go there with support problems.
And they'll be like, well, that's a only ZShell issue
you're dealing with, not a ZShell thing. And they'll be like, well, that's a Zomai ZShell issue you're dealing with, not a
ZShell thing. And they'll be like, what's the difference?
So for them, if any of them
are listening, I apologize. But at the same
time, you're welcome, because
I think I've brought a lot of people, or the project
has brought a lot of people to use
ZShell underlying. So
that's great. I'm glad they're using ZShell.
So I think that's been one part of it. But yeah, I think the
underpinnings, it's a good question.
It is different than probably
like the Rails and Ruby comparison you had there
where, I mean, if anything,
it's more like learning how to just have
some like mental shortcuts to using,
like if you're using all the plugins,
it's a lot of just shortcuts and aliases
and some extra functions that'll speed up your,
or reduce an amount of things
you need to type on your keyboard to do something.
And a lot of figuring out how to use tab a lot
and to do stuff and using your arrows
and navigating around and clicking on things
or selecting things and stuff in your terminal.
So yeah, I think that's an interesting aspect there.
Yeah, well here's the other aspect of it.
As a Bash user, I'll say what annoys me is
I'm always like, I wish I could do X
and then somebody will say,
well, with OhMyZSH, all you have to do is Y.
And I'm always like, I don't care what you do over there in OhMyZSH land.
I mean, that sounds cool, but come on, help me out where I stand.
We did say that a little bit in that show with Nick Genitakis
where we were talking about Unix tooling.
And I was like, even then I couldn't tell you,
is this a OhMyZSH thing or is this a ZShell thing?
Is this one of the aliases I made?
You know, like the LL command, for example, which is a common thing you do when you go into a directory.
Right.
You want to list the contents.
One, Jared's case, he, what did you do, Jared?
You changed your CD command to automatically.
I overrode my CD command to automatically do that, as well as do some other funky things that
can bite people. But then my
ll is just my own bash alias
that's doing the same thing that Adams is doing,
only I don't think he wrote his. I think
his just came right. I didn't
write mine at all. It just came, it was the batteries
that was included with my zsh.
Which I'm happy. Any code I can not write,
I mean, let's do that. And then
the.. command, so going around directories, I don't know who came up with write, I mean, let's do that. And then the dot dot command.
So going around directories, I don't know who came up with that, Robbie,
whether that was a contribution or genius on your part,
but whomever did the simply just dot dotting around versus slash dot dotting,
which it was pretty cool to me.
Yeah, that's rad. You can do dot dot slash dot dot and go back a couple different directories.
And I just like a lot of the little niceties that come with it, which is just – for me, it's just been a lot of easy using.
Like just install it.
It's already there.
My config to ohmyzsh is minimum, like almost zero.
It's kind of like on the Vimland side, Jared.
Like I almost go raw except for plugins plugins and I'm not changing anything. Most of it's just
my default aliases, which is just a
small handful, if any, really.
It's pretty much a stock install every time.
Aside from the theme, maybe. That's the only thing I
like. It's something I bring with me.
And that's even optional because you've got
30 themes or more in there and you're not
even taking contributions to themes because there's just so many
that could be in there. It's a
beast. There's your business model. Pay to get your theme included.
Sure. I wish I had analytics on the ones that we could easily get rid of
and not break anything for people.
That's interesting. You mentioned, out of curiosity,
what is your alias, Jared, for LL?
Is it just LS-AL?
Yeah, let me look. Probably.
Because I think I used to do that in Bash.
I'm pretty sure I had that as an alias myself back then too.
So I don't remember what it is in Omazisha.
Yes, ll is alias to ls-lh.
And then I have la and then llb.
I got a bunch of them, like by date, by file size, etc.
They're just sorts.
I feel like there were some Linux distributions I used to use
that had included something like that.
Because I remember that was definitely something I had known before ZShout,
using LL for things.
And so I don't know if it might have been on certain installs
and they had some bash configuration stuff on top of it.
Yeah, I don't know.
I'm sure it's a very common practice because everybody I talked about LL,
they also have an LL of sorts.
So I think maybe it's just one of those,
not a cargo cult, but it's a meme maybe.
The idea just spreads and it's so easy to do yourself.
It's probably the first alias you learn in Linux 101 or whatever.
If anyone out there knows the history of,
or the origin history of LL,
please share it in the comments on this episode.
We would greatly appreciate that.
We could do a mashup and have the history of LL Cool J
and the history of LL in one episode.
And we'll put music to it and it'll be fun.
Don't call it a comeback, Adam.
Mama said, lished you out.
Okay, that was not good.
There you go.
So while we're talking FOMO,
I would love to hear from you, Robbie.
What are some of your favorite plugins and cool stuff that people do with it?
Just give me some more FOMO.
Yeah, so the ones that I'm primarily using are, I think it's called AutoJump.
There's two of them that do a very similar thing, but one of them, it's like you install
another little plugin related to it, but it's like a Z command and it can jump around all
different directories that I most commonly and frequently jump I'm using. So
I'll be like J, like part
of like a project name and then it jumps me over
to that project that I'm working on
for like a client project or something. So
I'm constantly hitting
I said J, right? Not Z.
J, like
part of a client name and it pops me over there. And that
always seems to really impress the people
that I'm pairing with, like other people on the team,
like the other developers are like,
wow, how did you do that?
I'm like, oh, I just installed this little,
I have this plugin on my ZShop.
What's the plugin called?
Just called J or is it called Jump?
So that is using AutoJump.
All one word, AutoJump?
Yep.
Another, I use stuff for like Docker
and Docker composed plugins in there.
One of my other favorites is called Extract
and it just detects the type of file that you're trying to unzip or untar, you know, what have you. Docker and Docker Compose plugins in there. One of my other favorites is called Extract.
And it just detects the type of file that you're trying to unzip or untar,
you know, what have you.
And it just does it.
Oh, I like that.
Just be like extract whatever the file name is,
and then it'll figure that out for you.
So some wrappers there.
There is.env plugin that,
so you can use the.env stuff everywhere.
And it'll prompt you when you go into like different projects
and like, do you want to load the dot env file now or always things like
that that's quite helpful when we're doing a lot of environmental variables in different projects
there's nvm which is actually i think one of the slowest culprits to my z shell at the moment but
i do use it but it does slow my um the startup prompt a little bit and to be figured out why
that's the case but it's kind of like rbm a little bit and to be figured out why that's the
case but it's kind of like rbmv for node version management so if you use we're working with node
a lot i mean also i also use rbmv's plugin as well that we have in there and then there's some other
ones like i said i'm on a i'm on mac os maybe we should change it from osx to mac os is the name
of the uh plugin but it's got some a couple of little features into the OS X plugin. You can even control your Spotify
from the command line. You can do play, Spotify, play,
and it'll look it up and play on your local Spotify. I have a custom one
that I probably should just include at some point called ddig, which will allow me to
copy and paste a URL into my terminal and have
it run dig on that host name rather than having to copy and paste a URL into my terminal and have it run dig on that host name rather than having to
copy and paste the host name and strip out the HTTPS and all the other stuff for the rest of
the URL. So I can just take a URL. That's been a recent thing that I made for my scratch, one of
my own itches there. So those are a couple of the ones that I think are probably worth mentioning.
Oh, colorize is another one as well. and that gives you some stuff like where it'll do
file type detection so if you do rather than running like cat if you run alias for like c
cat like two c's it'll um colorize the uh the file so if you do like on a markdown file it'll
colorize that or a ruby file it'll it'll show like syntax highlighting and stuff like that for that
particular file based off of the file name format.
So that's kind of cool.
There's also like web search.
And I think it gives you things like Google searching or DuckDuckGo type searching and
stuff like that.
So you can just fire up your browser for a search or something from the command line.
I also, there's like another one for like Jira that I use to open up Jira tickets because
I'm one of those people that actually doesn't hate Jira.
We could talk about that.
Would you say then that because of this, it's extensible,
but would you say that OMI ZSH gives a common API
to do these things with the command line with?
Is that sort of like one of the sweet, I guess, features,
if you want to call it that,
because you didn't come out with plugins originally,
so it was an add-on later, so it was an afterthought, really, but has it been this, here's a common
API to do ZShell scripting or
things like that, like you said, CCAT or searching or DDIG or whatever.
Is that what it is to you? I hadn't thought of it that way, but I guess
that does make sense. Again, for me, it's just like, it's loading up a bunch
of files based off of the things you tell it to load so it's like all those files are on your computer
and you're just like include these when zshell starts up and then you get all these aliases that
are that were set there rather than just having this really large z csh rc file which was what
i think most of us would have had to deal with before a really large bash rc file or
bash profile file that's funny to say all that so yeah I think it's just a way of kind of keeping it contained.
You know, there's, you can do custom plugins and put your own custom themes,
or if someone has themes online, you can just quickly just throw them in the right
directory and then just ask to include it when the it'll default to using what's in
your custom over what's installed that comes bundled with omaze shop.
So is that an API?
I don't know.
I don't feel like I'm a smart enough programmer
to know what the true definition of what an API is there.
So maybe.
So how hard is it to try out OMI ZShell
and still be able to opt out?
Maybe can I have two tabs?
One has my Bash set up, one has my ZShell set up.
Is that relatively easy to do,
or is it an all-in kind of a thing?
Yeah, it's actually very easy.
So one, if you're using Bash already, it will prompt you to, if you want to switch over
to ZShell at the part of the installer, but so then you can just switch back and that's
like using, whether or not you're familiar with the bins slash Z, what is it, Z-H-S-H
that you would probably run on your machine to switch it back to Bash if you wanted to
go from ZShell to Bash. But also if you already have ZShell installed, it's very polite when
an Omaze ZShell gets installed. It will be like, oh, you already have a ZShell RC file.
I'm going to go ahead and copy that over to a backup file. It's called like pre-OMZ or something.
And if you uninstall it, I believe the uninstaller will check to see if that's there and then put it
back where it belonged and then kind of clean itself up. So Omaze ZShell comes with an uninstaller. It's mentioned on the,
pretty sure it's in the readme on how to run that once you install it as well. So it can kind of
clean up after itself because it installs it into its own dot own my ZShell directory.
And then that ZShell RC file just points to that directory. And if you go back to your old ZShell
RC file, then they wouldn't point back there anymore and you'd be where you were. So yeah, you can play around with it for 15 minutes and then go back and be like,
nope, maybe another day.
But hopefully you'll find more value out of it than that. This episode is brought to you by LaunchDarkly and their upcoming Trajectory Conference.
Software powers the world and LaunchDarkly empowers all teams to deliver and control their software.
DevOps and feature management are reimagining how we build and release new products.
On November 9th and 10th, LaunchDarkly is hosting Trajectory Conference 2021, a two-day event for software innovators who want to break orbit, not systems.
Trajectory is a fully virtual conference that focuses on the technology, the people, and the processes that continuously deliver better user experiences and more powerful software.
Registration is free right now at TrajectoryConf.com.
Again, that's TrajectoryConf, C-O-N-F dot com.
So, Robby, if I go into the OhMyZSH directory, which is actually a dot directory,
so it's hidden from Finder if you're on macOS or anywhere else.
So it's kind of a hidden directory.
But nonetheless, it doesn't matter.
I'm in that directory because I have OhMyZSH already installed.
I just type ll, which is listing the directories.
That's lsh, dash, probably your common beautiful things to make a human readable.
And when I see that, I see a few directories.
Cache, custom, lib, log, not blog, but log.
Plugins, templates, themes, tools.
And whenever I go into plugins, there's lots of stuff in there.
In the last segment, you mentioned some things you're using. Seekat was part of Colorize and like finding these beautiful little hidden
gems inside there. Like this, to me, this project seems like it just has so much opportunity to be
such a useful tool. Obviously it's been popular, as we've said, I mean, we shared the stats in the
first segment, so quite popular, but I kind of feel like it's got even more life into
it with a little bit work, I guess. I guess it kind of depends on how much more you want to put
into it. What do you get from this project? What do you get in terms of like motivation? How often
do you show up? Why do you show up? What excites you about the opportunity here? Part of the thing
that I really enjoy about being part of this project, and it's great that a lot of people use it, but I'm always, it just seems like everybody that starts to
use it when they're, and they embrace it are very, very vocal about it.
They're very appreciative of it.
So I just get a lot of these like nice little, like, you know, when you're working, running
a business and you've got employees and you're kind of like over many years of like navigating
through running a business and stuff like in dealing with clients, it's a much different
sort of like level of engagement level and like i feel like with omai z shell i get a lot
more high frequency and positive endorphins i suppose from people just appreciating something
that i help be part of and but again the other part of it is that so much of the project has
been as you mentioned earlier it's like over 1900 people that have code baked into Omoizy shell,
which is like not a small number of people. So my goal for the end of, by the end of the year is
like, maybe we'll hit the 2000. I think we'll be close, but I think just knowing to be part of a
project where I don't really feel like there's, I don't have like this huge maintenance team on the
project. It's me and another person doing most of the work. I've got a handful of people that are
doing that are part of our discord to help moderate and keep those conversations going well and organizing and answering questions
on there and get up discussions. And so there's a high volume of things happening around the
project. But I really don't need to spend a lot of time thinking about the project. Maybe put a
couple hours a week, I think, probably would be my average right now. And there's definitely been
periods where I don't really do much on the project for a couple months. And it still goes. I always feel like it's feature complete enough
in a way where everybody can keep installing it. Anybody that's waiting on a PR to get
closed right now, they already have those changes and they're probably in their own version of
Omaze. So if they're smart, if they know enough about Git and they can fork the project and do
that, they have what they want,
but they want to share it with the rest of the community.
So sometimes I might be a bottleneck or we as maintainers and having the
volume people that are submitting code changes could be a bottleneck and
having other people know about that.
But I don't feel like people are saying like,
we've been waiting on this new feature for a long time.
You promised us this.
So I like that.
It's not super demanding in that sense.
We've talked about like a next major version of the project
and what will we change,
but we've been talking about that for like eight years, I think.
So, and it hasn't happened.
We're like, let's just keep leaning on Git.
Another aspect about the project,
given that there's so many people that are using it,
and we have so many people following the project on Twitter
and posting about it on like their Instagram.
There's people talking about it on TikTok now.
And I'm like, it's just like, what?
This is so weird and interesting.
TikTok, what?
I know people post stuff on TikTok
and they're like really excited about like,
look, I'm like a hacker now
because I've got this cool command prompt thing on my thing
or I got it to run on my phone or whatever.
And like, that's cool.
So we get to see like how people are excited
about showing off a screenshot of their terminal
on the internet to be like, hey, look, I'm getting to this point.
They're kind of showing off a little bit, maybe to their peers, family, friends, or
whatever.
Like, look at me in this new career, I'm becoming a hacker or whatever, a software developer.
It's kind of adorable.
So the other part of it is like, I get to sell stickers and t-shirts and coffee mugs
and things like that.
And so we get almost an order a day for something.
It doesn't make much money for us whatsoever.
But if I go back in my history
of becoming a software programmer,
because I never wanted to be a software programmer.
That sounded like the most boring thing
when I was young to do that
because most of the time it was always introduced to like,
here's a book on programming.
If you write all the code in this,
over these few pages into this thing and you run it,
then you can play this game.
And I'm like, that sounds boring.
I'm going to go outside and play. Like, why would I type something that
someone else already wrote? I didn't understand like why that would be remotely interesting.
Fast forward several years, I'm a teenager, really into like punk music. And I have like,
I'm making stickers and printing stickers out and I want to sell them on the internet.
How do I make a webpage to do that? So I learned how to do some web stuff, make webpages, how to
build CGI scripts,
so it can like save information if someone submits something into a form. So I learned some of the
early things for learning how to like build websites so that I could support like wanting
to run a sticker business on the internet back in the late nineties. That business went nowhere.
That's how I got into writing software in the first place. So I got to sell stickers on the
internet. I can still sell stickers
I'm successful, I'm finally selling stickers
congrats
that's the highlight I guess, is that people put stickers on their laptops
I feel bad I haven't bought a sticker
and I'm such a fan
I feel like such a poser here
t-shirt, stickers, I got them all
we're out of coffee mugs at the moment
but they also are really heavy and break
so you can go buy some stickers or t-shirts on our website.
Yeah, it's interesting the angle that you came to that,
to like you were against programming based on what you just said there.
And that led into somehow Planet Argon,
which has been going longer than this project successfully.
You mentioned before doing hosting.
You've been an entrepreneur to try different things,
not just simply one thing and do it right and keep doing that.
But you took swings at other things,
and they either were more or less successful than the other thing.
But you figured out how to maintain a business,
maintain great culture at a business,
all from just trying to sell some stickers on the internet.
That's interesting.
I always think that there's a level of being ignorant about what I was getting myself into
when I started a business is what has allowed me to, I'm air quoting, flourish as a business
owner, I suppose.
Because it's hard to, running a business is hard, having employees, navigating a pandemic,
navigating client relationships over years, you know, learned a lot. And so, so programming is a big part of that, but a lot of it is like all the
relationships and things like that that you're managing along the way as well. And so that's
another thing about the OMYZ show. I'm like, I don't want more responsibility with this project.
So, but I also want to make sure it's being taken care of and we're not going to like add something
that's going to wipe out quarter million people's computers all one day because something got hacked or something right have you found whether directly or indirectly
that your work on oh my z show and your maintenance in the community and everything over the course of
a decade has proven to be kind of a virtuous circle with planet argon because surely you're
dedicating some resources, your own or
whatever, to this.
It's a labor of love and all that, but
potentially, as a person who runs a
software development consultancy,
it also shows off
your abilities and
how you can lead a group of people
and maybe impress some folks.
Have you ever gotten business from it or contacts
or anything directly?
I don't think we've had anyone that I can recall that was specifically referred to us because they knew that Planet Argon was
where Always Yourself was created initially.
But I've been on sales calls.
I've had clients that have technical people on their team
that will bring it up a conversation or two into our sales process.
And they're like, oh, I was talking to Michael over in our tech team and he's like a huge fan of you.
He says you're famous.
And I'm like, what?
Because most of my clients are like people that work
in different areas of a business.
They're not always like other software engineer people,
but they might work with teams internally or elsewhere.
Even like we have a project that we've been working on
for like eight years for a client.
And the client's going to be ending the life cycle of that particular project and the new company that's coming in
to build them a different platform it was something that we inherited so we're okay
parting ways with it but the uh i was chatting with the new agency that's going to be working
on the project over the next six months and they're like we love all my z show and like so
it was it was funny the client's like oh we're the feeling is going to be like this really awkward
scenario where the the two agencies are having to meet each other and instead it was funny, the client's like, oh, the feeling is going to be like this really awkward scenario where the two agencies are having to meet each other.
And instead it was like, oh, we're big fans of Ravi and what they've done.
And I'm like, this feels good.
Yeah, there's some inherited trust there, really, right?
Like if you've ran the project well for a decade or more, which you have.
Yeah.
If you've got great maintainers in place, great community in place, you know, consistency there in terms of releases or support if it's needed.
Just anything really that kind of keeps the consistency and the trust going along with the project.
I would imagine that that's inherited to Planet Argonne.
And I bet you if you dug further, you'd be surprised.
I don't think you're looking for it.
I bet you there's more juice flowing, basically, between the two.
And so that's why I think that to dig in further with some different ideas,
not so much to commercialize it, but just to, I think,
Kathy Korvik was on ShipIt recently,
and she talked about documentation being an API to a product.
And I think the example that you share with CCAT or DDIG,
these are like little hidden gems inside of other plugins that I wouldn't think to enable, like ColorEyes.
I don't know what that is.
There's an awareness.
There's a hidden gems within this project that people aren't aware of.
And you're relying on TikTok essentially to expose.
Lots of people are relying on TikTok to expose things these days.
Well, you know what I mean?
Like not so much relying on it. I don't mean that negatively.
I mean that.
I know that.
There's an opportunity here if captured well,
because ZSH or ZShell is the default on macOS now.
It is a highly popular platform
for the younger generation
or the new generation into hackerdom,
if that's a thing.
And we always say around here
that we care about the past, present, and future hackers.
And so in many ways, like we sort sort of don't do offensive speech on the show for many reasons.
But one of the mains, if a young listener is listening to the show, we don't want them to be turned off or have just this offensive speech all over the place because we want to have a place that's welcoming and open.
And so I just think that there's a – I don't know what yet, but something tells me, me being a fan for Zolong, that there's more.
This dog hunts, so to speak.
There's more stuff in there.
I appreciate that.
There's some ideas that Mark, the other maintainer, and I have been talking about and kind of related to educational type content, things of that nature to highlight things.
And it's also just trying to remember to, one of the other things I also enjoy about the project is that,
cause when people share articles and how to do things or share off what
they're doing,
I can broadcast that,
you know,
they might have 20 followers and then I'm like,
I'm able to retweet that to like 43,000 people on Twitter or whatever.
And they're just like,
Oh wow.
Like,
so I can amplify these people,
you know,
a little bit early on in their,
you know,
as they're gaining their online reputation or whatever you want to call it? That part's interesting, but yeah, like it's
interesting how like even just reminding myself that if I just show off some of the fundamentals
again and again, and like how to do this really simple thing is like, even just using like this
last week that we're recording this, I couldn't remember how to do something in Ruby and IRB to
like look up some details to figure out where a method might be defined while you're like in IRB.
And I have like Googled something.
I'm like, oh, that's right.
It's like that.
And then I created a little like coding screenshot and shared that on Twitter.
It's like my most liked tweet in like probably a year or two.
And I was like, oh, that was just like really, that's right.
I need to remind myself that a lot of these things that I take for granted, small little
things can be like brand new to a lot of people. And there's a big audience of people out there that are hungry for
learning new little quick little bites of information or little tips like, oh, if I use
that one CCAT thing, that's cool. Things of that nature. So it's sort of just trying to like do
that for the community. But there's been talks of like, you know, working on like an ebook or
something like that or video content for people. but who has the time for all this? Yeah. Well, it depends too, what you're optimizing for
personally, you know? So while there may be this opportunity, it's like, is it the right timing for
you? I personally don't know that you're on a podcast. You could share it if you want to, but
I think where I would begin is like, what's the state of your personal passion? You know,
is it simply implanted Argon?
Is it finding new fun things?
It's like hobby things, like where this could be hobby-ish,
but find ways to commercialize some of your time involved in it,
or at least have some different end points or end games involved
and putting more into it.
It all depends if what you're optimizing for leads you down a path
that gives more to, oh, my Z show, or it doesn't.
And if it doesn't, then that's no big deal.
But I think there's a lot of cool stuff happening in there that with the right plan, you'd enjoy it and you'd get some stuff from it too.
I'm not sure what that stuff might be.
It might be dollars.
It might be more opportunity for your company.
It might be community credibility.
It might be additional trust so the next client is easier to win.
You can be like, hey, by the i'm robbie russell from this project i know you installed it because everybody does because it's so popular by
the way we win business because of that yeah it's like there's a lot of opportunity there
depends yeah thanks for the uh the advice there i'm gonna spend some time reflecting on that
since you asked kind of like a kind of alluded to the i've always kind of felt like this project
omaze shell particular falls in maybe my top five or six things that i'm thinking about project wise Since you asked, kind of alluded to that, I've always kind of felt like this project, Omaze Shell in particular,
falls in maybe my top five or six things
that I'm thinking about project-wise.
It's like, obviously, my running a business
is a pretty big one.
And it's kind of, I think if my employees are listening,
it's number one, obviously, right?
Maybe it's second or third.
It's like, play music, I'm in a band,
recording albums, stuff like that.
That's a big part of me.
I got my podcast, where I just want to geek out
and talk with people about long-term software maintenance challenges. And so I've got a podcast called
maintainable, maintainable.fm. And it's just interviews with people that are, that are
dealing with like long-term challenges that companies and organizations face with dealing
with legacy code. I'm not a greenfield application. I'm not excited by new projects, blank canvas. I like working on messy, older things and making them better.
And that's, so I've been able to kind of frame that around what,
what the type of business that we're trying to bring in at Planner Argonne as well.
And so that's been a good alignment.
And then Omazisha was just like, I guess another example of like,
it's maintenance, it's long-term project.
And so we haven't needed to completely scrap it.
I never thought Omazisha would last more than like four or five years i'm like there'll be better things that come along and
deprecate this or people will outgrow it but some people just they as you said you install it and
you just keep it around and that's pretty awesome but so just thinking about like figuring out where
where omaze show fits into my priorities is a an ebb and flow thing from depending on what season
of my life is that so i like that I can pick it up whenever I want to
and then I can kind of set it down for a while
until someone asks me to talk about it again on a podcast.
And I'm like, oh yeah, I do that.
That's right.
It's a thing. This episode is brought to you by our friends at Teleport. With Teleport Access Plane, you can quickly access any computing resource anywhere.
Engineers and security teams can unify access to SSH servers, Kubernetes clusters, web applications, and databases across all environments.
Teleport is open core, which you can use for free, and it's supported by their cloud-hosted version,
which lets you forget about configuring, updating, or managing Teleport.
The Teleport team does all that for you.
Your team can focus on your projects and spend less time worrying about infrastructure access.
Try Teleport today in the cloud, self-hosted, or open source.
Head to goteleport.com to learn more and get started.
Again, goteleport.com.
And by our friends at Square.
Square is the platform that sellers trust.
There is a massive opportunity for developers
to support Square sellers by building apps
for today's business needs.
And I'm here with Shannon Skipper,
head of developer relations at Square.
Shannon, can you share some details
about the opportunity for developers
on the Square platform?
Absolutely.
So we have millions of sellers who have unique needs
and Square has
apps like our point of sale app, like our restaurants app. But there are so many different
sellers, tuxedo shops, florists who need specific solutions for their domain. And so we have a node
SDK written in TypeScript that allows you to access all of the backend APIs and SDKs that we
use to power the billions of transactions that we do annually.
And so there's this massive market of sellers who need help from developers.
They either need a bespoke solution built for themselves on their own node stack,
where they are working with Square Dashboard, working with Square Hardware,
or with the e-com, you know, what you see is what you get builder.
And they need one more thing.
They need an additional build.
And then finally, we have that marketplace
where you can make a node app and then distribute it.
So it can get in front of millions of sellers
and be an option for them to adopt.
Very cool.
All right.
If you want to learn more,
head to developer.squareup.com
to dive into the docs, APIs, SDKs,
and to create your Square Developer account.
Start developing on the platform sellers trust.
Again, that's developer.squareup.com. so we have many open source maintainers that listen to the pod and it's always interesting
to learn from one another you have a successful long-term project every project
has its own warts and wrinkles and pros and cons so they're not all the same but you've been
successful in 1900 plus contributors i mean that's a major number i hope you do get to 2000 by the
end of the year that's a nice rounder number but surely hasn't all been easy and awesome the entire
way so any struggles along the way? Any community problems?
Or how do you manage to, you know, you have this discord,
so there's humans in there and they offend each other.
Just what's gone wrong or what have you learned over the years?
Earlier you had mentioned, or we talked a little bit
about the security aspect to the project, right?
And so given that everybody's installing the project
through a curl command or something,
I'm very cognizant, at least aware of the fact
that that could be a huge point,
something bad could potentially happen.
So I always felt for a really long time
it was my responsibility to make sure
every bit of code that was ever contributed
and accepted to the project had my vetting
so that if everybody's laptops get wiped out
at the same time, I can be like,
sorry, it was my bad, and then hide away
from the internet for the rest of my life.
I haven't had to go there. But for a long time, there was, you know,
we touched on like my initial time on the change log back in 2011. And I listened to that again recently. But I had made a point about saying like, I try to keep the number of open pull requests
under 100. I think it's closer to 500 or so now, like on a regular basis that we have sitting there for us.
And we're merging stuff, so it's not like there's stuff not there.
But one of the challenges I had was trying to find and recruit maintainers
because I didn't really know how to go about doing it.
Because unlike, I think if you look at a lot of other open source projects that might,
like use like Ruby on Rails, for example, like you get people on the core team,
they probably have people that are working at companies that are using Ruby on Rails, for example, like you get people on the core team. They probably have people that are working at companies
that are using Ruby on Rails
as part of their business, right?
Omnizitial is kind of like this thing you're running.
People, the end user puts it on their laptop
and like, it's not like a company thing
where somebody's like,
oh, let's spend some time contributing to this project.
It's more like, oh, I use this thing
and like, it's just kind of created
by some person across the planet or whatever. Anyway, so like, that was always a weird challenge to try to figure
out how do I help get people to participate and help more. But then over time, people would
volunteer a little bit here and there. And there's some people that would do some testing for me.
And then, um, but I was always like, I don't really know them well enough to feel comfortable
to give them just full access to merge into like the main branch. And the other part of it is I honestly did not feel like I had a vision for
the project.
So like,
how could I hold anyone to try to stay in the same plan?
Like where this is kind of the,
the goal for the project we want.
And as I mentioned earlier,
like I want to have this be simple for newcomers to a command line.
And so like,
okay,
that became one of like our core values,
I guess,
as a project. This isn't really written down. I think it's in a Google okay, that became one of like our core values, I guess, as a project.
This isn't really written down.
I think it's in a Google Doc somewhere that I've shared with a few people,
but this isn't something we have like on our-
Your values page?
Yeah.
Oh my Z, S, what is it?
The URL, I think.
That could be somewhere we can put something like that.
So for a long time, I'm like,
well, if I had more people, then they would ask me,
like they'd start doing things and I'm like,
then I would like relinquish some control, I suppose, if I'm more people, then they would ask me, they'd start doing things, and then I would relinquish control,
I suppose, if I'm being honest, about the direction of the project.
So I was nervous about that for a long time.
Eventually I got a maintainer into the project,
but the way that that happened was that because I was always the bottleneck
for reviewing and merging stuff into the project,
a couple people were working together,
and one person in particular named Mark Cornell, he's based in Barcelona.
He started putting together pull requests that packaged up other pull requests.
And be like, I vetted all this.
And send me over, this all looks good.
And be like, 20 things all included.
And I'm like, oh, you just saved me so much work.
This is awesome.
Merge.
And that became our thing.
We did that for about probably a year, year and a half.
Where he was just working around my limitations to be able to go individually. And he would our thing. We did that for about probably a year, year and a half where he was just working around my limitations
to be able to go individually.
And he would do that.
And we just came up,
he'd like come up with his own workflow.
I didn't ask him to do that.
He just started doing it.
And so after a while, I was like, all right, let's chat.
And then like, come in, let's just,
here, you can have access.
Don't let me be the bottleneck anymore with that.
So that's how Mark got into it.
He found a way to help the project
and he was persistent and he just worked around me and came up with his own workflow and
didn't ask for permission and just did it. And then eventually that gained enough confidence
in me to be like, cool, you're in. What's his why? Do you know his why? Why did he do that?
Has he ever told you? I feel like he's probably touched that on that before. It's been so,
we've been working together for so long now that I'm just like, he's always been part of the project,
right? You know, it's interesting because he's like, he works in sysadmin stuff. I think it's been so we've been working together for so long now that I'm just like, he's always been part of the project. Right. You know, it's interesting because he's like, he works in sysadmin stuff.
I think it's just my assumption is that there's maybe that would be good.
Another person to have on the show sometime, but like hearing his take on that.
But I think it's just like something he felt like he could wrap his head around and he was kind of excited to work on some Z show stuff.
He's really proud of the fact that he gets to be like the primary contributor to the project, at least maintaining it and i know it's helped him with his career and stuff like that as well and so that
wasn't always the the goal necessarily for him but it has been helpful for him so i appreciate that
and there's we've had other people that don't know a lot of coding skills but they're really good
maybe wanting to help out and grow the community and like so we had someone else named lucas who
helped come up with their discord stuff and he's the one who proposed that and i'm like i don't have time to sit into
discord and answer questions all day and they're like well let's just see what happens i'm like
cool let's go with it and now there's like i don't know how many people are in that discord but
there's a lot and so many channels and we got people to volunteer to be moderators and so that's
been pretty cool i don't know if you're familiar with Orbit, the software project, Orbit.love.
And I got access to it almost a year ago
to start watching the community across Discord, Twitter,
GitHub, and just seeing who's becoming part
of the community through that.
And so I've been able to identify certain people
to reach out and start asking questions.
Because I'm like, hey, would you like to contribute more?
I've noticed you've contributed to 15 different PRs you've reviewed. Like that's pretty awesome. Would you
like maybe be another help contribute more? But also in parallel to running a business has been
very mindful about trying to make sure that we're building a diverse team. So I've got plenty of
cis white males that are happy to volunteer their time to work on the project that I'm like,
okay, maybe we can hire, bring a couple more people into the project,
but I would really like to like expand that out and like have women be
contributing and people of color be contributing.
And I want to like bring in a more diverse group for that maintainer group.
And so that's been another weird thing that I've been trying to navigate
because I've like,
there's definitely people offering,
but I'm like,
I want to have a more intentional plan for that.
And so that's not been something I can necessarily prioritize a lot of thought
and energy outside of reaching out to our newsletter groups and stuff like that
just to try to find those people and help them become part of that world.
But again, it's just one of those things that I'm trying to think about
when it comes to open source because I don't want our project
to turn into just another really male-dominated project.
Not that it's not already, I think, in that capacity.
So I want to be intentional there.
That's tough because when you have somebody standing in front of you
willing to help, that's a tough no to receive.
Or maybe it's just silence.
I'm not sure what that manifests as.
But I get the struggle there on both sides.
What about the vision?
How close would you say you are to the vision now?
Do you think you have a clarity? Because the reason I ask that question is often to lead, to be followed as a leader, it takes some awareness of the vision so that you can cast that and have a direction. And sometimes that begins with clarity on where you want to go or what you're trying to do with it. So that's kind of like back to that, what are you optimizing for?
Because we'll never really answer that. I'm not asking you to answer it here on the show because I'm sure it's more deep
than just simply, hey, thought about this on the podcast, here it is. But that's
sometimes the struggle with what you're dealing with is the clarity
around vision and how you can lead. Because if you're not clear on that, what you're optimizing
for personally, Jared asked about Mark's why Because if you're not clear on that, what you're optimizing for personally, Jared asked
about Mark's why, if you don't have your why clear, it's going to be hard for you to cast
that vision.
And just by inertia, have people follow you.
And I think part of diversifying your maintainership too is sort of baked into that hidden gem
stuff.
Like if you spoke more into different areas
where it's not just cis white men or men-dominated circles,
if you spoke more into those places and extended an invitation,
you'd probably get some followers in that regard.
That's true.
I think we have a very diverse user group.
I think that's just part of just seeing how the software developer
and engineering community is evolving and growing over the last several years. And that's been good. So
there's definitely a large, more diverse user group, seemingly based off some of this, the data
that I can find using like Orbit as an example there. And I can say that from like, even just
from stickers and t-shirt orders and stuff like that, we've, we keep a lot of t-shirts in stock
for women sizes and they're being purchased and so that's
great and but i think there's a difference between using the project and wanting to contribute to
becoming like a maintainer of something because a lot of the people that are using the project
they're working in different technologies they're not probably wanting to program in a shell
command line environment that's not like the thing that's maybe exciting and motivating them so
comes back to the values thing like personally a, a couple of years ago, I was,
I had kind of gone through this exercise of trying to navigate, like, what is my big,
why what's my big goal in life? And I was like, I kind of turned around to being
just the simplest way is just like, I want to, I feel like I had a lot of opportunities open
up for me and my, my goal is to open up opportunities for other people as much as I
possibly can. And so something like Oh My Z Show, I feel like is like helping part of being a small
part of someone's journey as a software engineer, especially again, trying to make this simple and
cozy and friendly and most importantly, delightful for people new to command line
experience and just wanting to be part of their developer tool set. When I see Omai Zee Show is
ranked in people's like top five developer tools, I'm like, that's such a great wanted to be part of their developer tool set. When I see always used, I was ranked in people's like top five developer tools.
I'm like,
that's such a great honor to be part of such a list or something like that.
So I just want to keep that,
the energy there friendly.
I think that reflected is our social media content that we produce.
You know,
it's always trying to be fun,
delightful.
When you have an audience like that,
I can just,
I can make up the weirdest tweets and have a lot of people engage with
things that don't have anything to do with anything. And I, I like the experimenting, I think
maybe in social open source marketing, I think is like probably a thing that I'm, I find myself
being like a benefit of getting to work in this project of, I get to experiment with a much larger
audience than I would be able to just as like a Ruby on Rails developer, you know, what I focus
on most of the rest of my life. So I had this idea that might, I don't know if it's exists out
there or not, but this idea of tour of duty, essentially one to define what a maintainer is
for your project. I think generally there's a definition for open source software maintainer.
And I think that can be intimidating to someone who's never done that before, but quite capable.
And I think there's two sort of ideas I think could be deployed by you and tried out.
One, define what a maintainer is of a MyZShow, what that person might do.
It might be Mark where you sort of just vet some pull requests, make a single pull request,
and that's one thing.
Or it could be help out with PRs,
just commenting. A maintainer doesn't have to be somebody who literally maintains the code.
It could be just simply like the similar terminology you might use for an employee.
You don't have to be the senior director. You could just simply be an individual contributor.
So they're still both employees and you still have input and value that you add, but maybe define what maintainership might be for your project.
And then two, it might get easier to say yes to it if you shorten the time frame.
Give me a month or two of being this.
And if you like it, you can keep doing it, but a tour of duty.
Every three months we'll revisit your time here.
If you want to leave or you want to depart and for whatever reasons are help me find somebody else if you don't mind
but give some parameters to what the yes is because sometimes the yes is not there because
What it is is not clearly defined and it's kind of spooky and scary because hey, it's halloween
but
You know at least this time frame, but it's that's totally off the off the bat
This is october by the way, but it's a little spooky and scary because you're like, I don't know what I'm saying. Yes. Two. Am I a maintainer? I'm at,
I got imposter syndrome everywhere, basically sprinkled on me. So like I say no to most things,
not me, but just in this person might say that. So if you can sort of like remove some of that
opportunity for imposter syndrome and say, you know what you do belong here. Here's what I asked
for maintainers. Here's some different maintainer types. Here's maybe a tour of duty idea. And it's a little easier to say yes. And you might get more yeses than you think.
Very timely. I literally got an email like 36 hours ago from someone and I've been like,
how do I respond to this offer to help in some capacity? And I think that is, you're right though.
And it's one of the challenges is like, Mark and I have our workflow that we've been working with.
I'm like, how do, who has has the time to introduce another person into that mysterious thing that just has evolved between him and I.
Right.
And so it's like, cool, let me throw you into this into the deep end.
And I'm like, I don't really know what you should focus on first, but you make a good point there.
And it does seem like something I should spend definitely some more time thinking through and with Mark to come up with like a plan for something like that.
So we try to find like here's the types of issues or things that would be really helpful to get testers out on.
And we label things like that, but occasionally we'll put out a call to get some assistance there.
But there's not necessarily a lot of follow up like, OK, cool, you did that.
Maybe next time you can do something a little bit more or something that's interesting.
Definitely not saying it's easy. The burden of being a maintainer or even the creator and leader of,
which are like sort of maintainer, maintainer,
because you maintain the maintainers, you know, is definitely a burden.
So I have complete empathy, but we're here to say you can do it.
And I think there's one lesson I learned elsewhere that sort of is a parallel
to some degree is this idea of career capital.
And this is why I feel so strongly about what you can do with Oh My Z-Shell because there's this idea that throughout your career, in any career really,
you gain some capital in terms of like what you can do. And when you switch jobs, you change jobs
or whatever, you don't want to ruin that by going from being a lawyer to a software developer or
vice versa. Maybe that works for some people, but there's this idea of career capital that you can leverage it.
I think there's a leverage opportunity
for you and the community
and Oh My Z Shell
because it's just so popular.
And I think if you look hard enough,
you'll find how you can leverage it
in a good way,
in the positive ways, of course,
you know, the positive sides
of leveraging things
that matches with
what you're trying to optimize for,
what the community could
need and use. And you might be a great on-ramp to somebody's future and open source. So I think
there's just a lot of opportunity here. I don't know exactly what it is, but it's this idea of
career capital. So there's a lot of equity built up into this community. And I would just ask you
to personally, cause I love using it. So don't stop maintaining it, keep it going.
And obviously we had you here on the show cause we love it.
And I'm happy to sing the praises. Like I said,
it's a default install for me happy to help out however possible to,
to share the Oh My Z Show love and support and whatnot.
Your podcast maintainable.fm is awesome and just want to encourage you.
So hopefully when you walk away from the show,
you dig a little deep and see what,
what might be the future for you and my ZSH.
I appreciate that,
Adam.
I'm going to definitely do some soul searching on this in the near future.
Anything in closing,
anything left unsaid for you,
for the community,
for the Ruby on Rails community that you're deeply involved in anything like
you got the ear of hackers out there. What would you want to say to them?
I just want to remind people that there's this
interesting thing in our phenomenon, I think in our industry, where
most people are excited to work on new things early in their career. And I think there is
an underappreciation for most people, you know, graduate from a boot camp or go to
coding school, your first job is probably not going to be working on a brand new application.
You're probably going to get hired by a company that has existing software
that's been around for a while.
And that means it's been successful because it's gotten to that point.
One of the things I would, since I have a little bit of airtime with the audience,
is just to think about being cautious around pitching,
throwing out the idea of like, let's rewrite things.
I'm a big advocate against pushing back on the big for read, right? And because if you can't figure out how to get good at refactoring your code, rebuilding the whole thing from scratch
might sound nice, but probably 95% of the time is I'm just throwing out a number. It's going to be
a bad decision for you and the team that you're working on. You got to work on those skills on
how to get in debugging, work on existing software projects. Like that's, in my opinion,
the job of a software engineer is not to build new stuff all the time, to take care of the stuff
that we've already been building and keep evolving it. Because we don't do that with like housing
that often. We don't just plow the whole thing down and build it. You evolve things, you reinvest
things, you take advantage of what's there. Cities are all formed off of
layers and layers of many generations of people living there. And that's similar with software
code. It's because it's software, we think we can just throw it out and replace it all the time.
And I think that's very, very short sighted. And I'm not saying that because I just make a career
right now out of just taking care of old Ruby on Rails applications. That's what I do. But there
is an aspect of like, I mentioned earlier, I'm not excited by like the blank canvas. It's very daunting to me. I'd rather just jump in and
work on stuff that's already working and like help make it better and refine it and improve upon it.
And I think that's a big part of our job that I would like to see more people coming in the
industry understand and be told that that's going to be part of the job. I've met a lot of engineers
that are like, I'm going to go work at this other company because I don't get to work with new stuff
enough, like the brand new shiny stuff. I'm like, who does? Like in are like, I'm going to go work at this other company because I don't get to work with new stuff enough. Like the brand new shiny stuff.
I'm like, who does?
Like in five years, that's going to be old.
And then you need to learn how to build those skills up sooner than later.
So whatever.
There's a lot of ways to do that.
There's a lot of literature and great speakers on those topics.
You're a great speaker.
Yeah.
And I speak with some of those people on the podcast.
I like your show.
You've got a lot of great content on there.
A lot of great guests on there speaking very specifically about their woes.
Kent C. Dow was, I saw on the list.
DHH was on your list recently.
So I encourage people to check it out.
Maintainable, which is an awesome podcast name, maintainable.fm.
Robbie, thank you so much for sharing all you have today.
Thank you for open sourcing on my Z show and sharing with the world and then being open
to grow it into what it is now. I look forward to your future with it and what more might come
from it. Thank you. I appreciate you both having me on the show and thank you all for listening.
That's it for this episode. Thanks for tuning in. What do you think about Oh My Z Show?
Are you using Bash or Z Show? Did this episode give you FOMO?
Let us know in the comments.
If you're listening to this on your ChangeLaw++ feed,
you're probably wondering why there's another 12 or so minutes of runtime.
Well, that's because Jared and I are showing up a little bit early
to lay down 15 or 20 minutes of tape on what we call the pre-call.
This is where we talk about the conversations we're going to have,
get out some ideas, talk about the episode's flow, etc.
We're going to do this as often as we can and release them at the end as a bonus for our Change Love Plus Plus members.
Here's a teaser from the pre-call for this episode.
It's been years in the making, basically, which is somewhat embarrassing.
But also, this is repeatable.
This has happened before.
Yeah, I was going to say, years in the making is something that you say pretty often on the show not always our fault sometimes it's just the way things happen this one was i don't know are you is there gonna be a
we're gonna take an apology live or you want to just leave it on on the changelog plus plus
clipping floor i guess we'll see i mean i guess that's the point of this man it's like we'll see. I mean, I guess that's the point of this, man. It's like, we'll see what happens. So the last time I think I recall seeing it was with Laura Hogan.
Yeah.
And that's just because I was, I didn't want to stay on the show, but a little intimidated
because she's just that cool.
If you aren't on ChangeLaw++, check it out.
It's our membership program where you can directly support our work and closer to the
metal with bonuses like this and make the ads disappear from all our podcasts learn more at changelog.com slash plus
plus up next we're back with another changelog special called song encoder that's all i can say
for right now though also on deck is jessica lord from github on the future of github sponsors
thanks again to our partners linode fastly Fastly, and LaunchDarkly.
Also, big thanks to Breakmaster Cylinder
for making all of our awesome beats.
And thank you to you for listening.
If you enjoyed this episode,
share it on Twitter, Reddit, Hacker News,
wherever works for you.
Word of mouth is by far the best way
for shows like ours to grow.
The Galaxy brand move is to subscribe to the Master Feed
and get all our shows in one single feed.
Check it out and subscribe at changelog.com slash master.
That's it. This is done. Thanks so much for tuning in.
We'll see you in the next one. Thank you. Game on.