I made a tool for creating React components with visual TDD

Hello,‌ ‌who‌ ‌are‌ ‌you‌ ‌and‌ ‌what‌ ‌are‌ ‌you‌ ‌working‌ ‌on?‌ ‌

Hi‌ ‌there.‌ ‌I’m‌ ‌Ovidiu,‌ ‌a‌ ‌web‌ ‌developer‌ ‌from‌ ‌Romania‌ ‌passionate‌ ‌about‌ ‌building‌ ‌user‌ ‌interfaces‌ ‌and‌ ‌making‌ ‌my‌ ‌own‌ ‌tools.‌ ‌With‌ ‌React‌ ‌Cosmos,‌ ‌I‌ ‌married‌ ‌both‌ together ‌and‌ ‌created‌ ‌an‌ ‌open‌ ‌source‌ ‌tool‌ that‌ ‌makes‌ ‌React‌ ‌devs‌ ‌like‌ ‌me‌ ‌more‌ ‌productive.‌ ‌

Why‌ ‌did‌ ‌you‌ ‌start‌ ‌React‌ ‌Cosmos?‌

I‌ ‌started‌ ‌React‌ ‌Cosmos‌ ‌to‌ ‌solve‌ ‌a‌ ‌problem‌ ‌I‌ ‌was‌ ‌having‌ ‌at‌ ‌work.‌ ‌We‌ ‌were‌ ‌building‌ ‌a‌ ‌Single‌ ‌Page‌ ‌App‌ ‌for‌ ‌the‌ ‌first‌ ‌time‌ ‌and‌ ‌it‌ ‌was‌ ‌challenging.‌ ‌Most‌ ‌of‌ ‌my‌ ‌days‌ ‌included‌ ‌tracking‌ ‌down‌ ‌bugs ‌which‌, while it ‌can‌ ‌be‌ ‌fun,‌ ‌isn't‌ ‌productive.‌ ‌So‌ ‌an‌ ‌idea‌ ‌formed‌ ‌in‌ ‌my‌ ‌mind:‌ ‌What‌ ‌if‌ ‌my‌ ‌dev‌ ‌environment‌ ‌would‌ ‌allow‌ ‌me‌ ‌to‌ ‌isolate‌ ‌any‌ ‌component‌ ‌from‌ ‌the‌ ‌rest‌ ‌of‌ ‌the‌ ‌app?‌ ‌Instead‌ ‌of‌ ‌juggling‌ ‌with‌ ‌the‌ ‌complexity‌ ‌of‌ ‌the‌ ‌entire‌ ‌app‌ ‌at‌ ‌once,‌ ‌I‌ ‌could‌ ‌focus‌ ‌on‌ ‌one‌ ‌component‌ ‌at‌ ‌a‌ ‌time‌ ‌to‌ ‌pinpoint‌ ‌the‌ ‌source‌ ‌of‌ ‌a‌ ‌bug.‌

What‌ ‌were‌ ‌the‌ ‌early‌ ‌days‌ ‌like?‌

The‌ ‌Cosmos‌ ‌project‌ ‌began‌ ‌with‌ ‌a‌ ‌bunch‌ ‌of‌ ‌pretentious‌ ‌value‌ ‌propositions‌ ‌on‌ ‌my‌ ‌part,‌ ‌back‌ ‌in‌ 2014.‌ ‌I‌ ‌wrote‌ ‌a ‌README‌ ‌and‌ ‌posted‌ ‌it‌ ‌on‌ ‌Hacker‌ ‌News.‌ ‌The‌ ‌project‌ ‌was‌ ‌supposed‌ ‌to‌ ‌“fix”‌ ‌UI‌ ‌development‌ ‌or‌ ‌something.‌ ‌Looking‌ ‌back‌ ‌it‌ ‌seems‌ ‌silly.‌ ‌But‌ ‌a‌ ‌lot‌ ‌of‌ ‌people‌ ‌reacted,‌ ‌which‌ ‌was‌ ‌enough‌ ‌to‌ ‌keep‌ ‌me‌ ‌going.‌ ‌‌

How‌ ‌have‌ ‌you‌ ‌grown‌ ‌React‌ ‌Cosmos's‌ ‌usage?‌

This‌ ‌one‌ ‌is‌ ‌hard‌ ‌for‌ ‌me‌ ‌because‌ ‌I‌ ‌suck‌ ‌at‌ ‌promotion.‌ ‌That‌ ‌said,‌ ‌I‌ ‌manage‌ ‌to‌ ‌post‌ ‌a‌ ‌successful‌ ‌tweet‌ ‌every‌ ‌now‌ ‌and‌ ‌then,‌ ‌constantly‌ ‌revise‌ ‌the‌ ‌documentation,‌ ‌stay‌ ‌in‌ ‌touch‌ ‌with‌ ‌users,‌ ‌and‌ ‌for‌ ‌the‌ ‌past‌ ‌year ‌I've‌ ‌only‌ ‌accepted‌ ‌paid‌ ‌gigs‌ ‌where‌ ‌I‌ ‌get‌ ‌to‌ ‌use‌ ‌React‌ ‌Cosmos‌ ‌at‌ ‌the‌ ‌job.‌ ‌This‌ ‌is‌ ‌far‌ ‌from‌ ‌an‌ ‌adequate‌ ‌growth‌ ‌strategy,‌ ‌but‌ ‌it‌ ‌led‌ ‌to‌ ‌slow‌ ‌and‌ ‌steady‌ ‌growth‌ ‌over‌ ‌time.‌ ‌

How‌ ‌have‌ ‌you‌ ‌managed‌ ‌the‌ ‌workload?‌

Luckily‌ ‌React‌ ‌Cosmos‌ ‌has‌ ‌modest‌ ‌usage,‌ ‌so‌ ‌I'm‌ ‌not‌ ‌bombarded‌ ‌with‌ ‌issues‌ ‌like‌ ‌other‌ ‌maintainers‌ ‌are.‌ ‌There‌ ‌were‌ ‌times‌ ‌when‌ ‌maintenance‌ ‌felt‌ ‌overwhelming,‌ ‌especially‌ ‌in‌ ‌the‌ ‌beginning.‌ ‌Then,‌ ‌as‌ ‌the‌ ‌project‌ ‌stabilized,‌ ‌it‌ ‌got‌ ‌quieter.‌ ‌Historically‌ ‌I've‌ ‌spent‌ ‌most‌ ‌of‌ ‌my‌ ‌open source time writing and rewriting features, almost to a fault. Lately, however, I'm spending more time talking to users, which is always a good idea.

How much time do you devote to React Cosmos?

For the first few years, I was working after hours, alongside a demanding full-time job. Not a good experience. Later, when I decided to leave my job and take a break from it all, there was a period where I could work on React Cosmos full time. This wasn't very productive either. Working exclusively on an open source project I had no plans on monetizing made me anxious, and rightly so. Eventually, I found flexible gigs that seem to work well for me. Nowadays I spend roughly two days a week working on React Cosmos, which allows me to make significant contributions while also having a steady income.

What are the biggest obstacles you've had to overcome?

Underestimating the workload. I think I have a bias for hard work and tend to choose the hardest, most complete solution when faced with a problem, without much regard for my time. This, of course, is a bad strategy in life. It took me a while to figure it out, but I'm improving. So the latest version of React Cosmos has fewer features than the previous. Not only does it take less time to build, but a reduced feature set is also easier for users to comprehend and use.

What are your hopes for the future of React Cosmos?

My main goal is to make something useful, and I get an extra kick out of it when it's useful to me. So in that way, React Cosmos has already achieved its purpose. But I don't think it's reached its potential yet, mostly due to an incoherent feature set and subpar presentation. This is why I'm excited about the upcoming v5, which has a simpler, more thoughtful design. Ultimately, my hope is to put React Cosmos in the hands of those who would benefit from it.

Can I make a living from open source? Not sure yet. The real question is: Do I want to start a business? Open source sustainability might seem like a completely different animal, but at the end of the day, it's asking people to pay for a product or service, and turning a profit. No need to complicate it more in my opinion. Meanwhile, I enrolled in the GitHub Sponsors program and the "You have a new sponsor" email immediately became my favorite dopamine cue. Can this become my main source of income? I'm skeptical, but would love to be proven wrong! :)

You've worked on some other cool projects like Illustrated Algorithms too, what's your overall motivation for building these open source projects?

Aside from what I've already mentioned, curiosity is a big motivator for me. I like to learn new things in any field, but I find it hard to remain focused for a long time unless I use what I'm learning in some way. This can mean making something useful, something fun, or explaining what I've learned to others.

What advice do you have for other open source projects and maintainers?

Figure out your (real) motivation before sinking all your time into something. Open source sits at the intersection of business and hobby, so it's easy to get caught up and forget why you're spending enormous energy on a project that's neither fun nor profitable. You don't owe anybody your time. It's your responsibility, however, to draw the line. People will always take from you as much as you give them, and then some more. Indeed, being useful to others is the end game, but only if you manage to take care of yourself first.

React Cosmos V5 has just been released at the time of publishing this, so if you are in need of a better interface for creating React components, check it out here.

You can also find out more about Ovidiu by following him on Twitter or GitHub, or better still sponsoring his work here.