Happy Ending Update!
I’m excited to announce that I’ll be working with graph.cool on chromeless! There’s more details to come on Monday, but wanted to share that this story ended quite well. I’m going to leave the post unaltered as I think it’s a good reminder to me to not jump to conclusions so quickly. Miscommunication is a pretty easy trap to fall into.
Below is the original text from my post. Keep in mind I was pretty let down at this point in time, but have made great ammends.
I think I’ve just experienced one of the worst things that can happen to an open-source maintainer: having an almost exact copy of your project catch fire. Not just a “it’s a new standard” or “a different design” type copy, but an almost identical copy.
About a month ago I was stranded on bed after a small medical procedure. I had been debating for some time on whether or not to write a browser driver as I’d had been doing some side-projects that could use it. I decided to take the plunge and go for it.
I was pretty excited as there wasn’t a clear winner in this space (headless chrome drivers, that is), and I wanted to try out this newfangled TypeScript thing. I also liked the look of Nightmares API, so I decided to model that as well as offer some tools for “load-balancing” browser interactions. This way users could have a module that’s dedicated to a concise API while offering scalability. What came of all this was Navalia.
After playing with this module for some time I decided to hit the web and drum up some interest. I went pretty hard on this as I really wanted folks to get involved and make it better. Imagine my surprise when, after a few articles later, that it started trending on GH
This was the first time that anything I’ve ever open-sourced got any attention whatsoever. I was pretty ecstatic and started posting around on other various sites as well. It got barely any notice on Hacker News (never had any luck there) or Reddit, but GitHub seemed to like it so I kept writing medium articles and pushing it internally at AppNexus (the company I work for).
One of the UI teams at AppNexus was interested in using it for a project, so for about a week we vetted the API and I fixed bugs as frantically as possible. We made some significant adjustments: things like
wait-type API’s are no longer needed, it retries automatically, and can recover from a pageload if that occurs. All things you’d want from a robust driver API.
These were hard-learned lessons as the protocol that Navalia is built on top of is pretty noisy (just take look). Some of these features and bugs we’re also non-trivial to address, so I spent a good portion of my evening and weekends on it to make sure it was A+ to work with.
To make things even more interesting, I wrote a whole GraphQL client for it. While this might seem like an over-stretch I really wanted any runtime to be able to drive Chrome as easy as this TypeScript module did. This, again, was not a non-trivial amount of work as I had mangle with how GraphQL resolves queries in order to get queries to run in serial as opposed to parallel (more on that here). I assumed that the open-source community would be rife with upvotes as I had now completed buzzword-bingo for a successful post (GraphQL, Headless Chrome, Automation)!
Unfortunately things still fell flat and I was left with but a few stars for my effort.
Fast forward to today, and I’m having a pretty rough go of it. I woke up late, missed a free lunch, and was about to pitch this Navalia project to a wider audience at work when this little tweet came across my radar about a ‘chromeless’ module:
💎 We just open-sourced Chromeless: Headless Chrome Automation on AWS Lambdahttps://t.co/GETC95kt6N— Graphcool (@graphcool) July 26, 2017
Oh. Let me go checkout their API. Wow, it’s nearly identical to mine (to be fair I did borrow heavily from Nightmare as did they). Geez they even use the same dependencies as mine. Let me just fire a message back and see if they’ve even seen it.
I'm surprised you guys didn't come across https://t.co/wBFw14TDyh. It even has a GraphQL front-end!— Joel Griffith (@griffith_joel) July 26, 2017
Surely they must have missed it. I was rarely getting any love on all the outlets where I posted, so there’s a good chance that they didn’t see it at all. I’d assumed that, if they had seen it they’d be doing PR’s or issues or something. Being that it has a GraphQL layer and everything would have piqued their interest I’m sure. And it wasn’t like I just stood up a dumby project with some cute emoji’s and half-assed it. Remember, I was already vetting this internally and with some other open-source folks as well.
Imagine my surprise in their response:
Hi Joel! We've actually seen it. It's a really cool project and a fun use case of GraphQL! Great work! 💪— Johannes Schickling (@_schickling) July 26, 2017
Man. It’s a sorta nice compliment I suppose. But why didn’t you try and make Navalia better as opposed to rolling out with your own thing? I mean, the API’s are identical with some really small differences, we both use the same dependencies, and they’re even both written in the same language?!? I guess it’s an anything-goes world in open-source, but I sort of assumed that most of us would have collaborated on an established repo and made it better. I can definitely say that I was angry, upset, and even shocked that it happened.
This has been a clear indicator for me that it’s all about your audience. graph.cool has a huge following on twitter, GitHub, and more. So it’s no surprise that their announcement catapulted them to the top of the internet. They immediately landed on the front-page of hacker news, are all over on twitter, and likely everywhere on reddit. Keep in mind this: their stuff is almost identical to Navalia (actually Navalia has more, but I’ll let you be the judge), the only practical difference was following.
I kind of find this upsetting as, on sites like Hacker News, we’re led to believe that anyone can reach the top. Here’s a great example of a nearly 1:1 comparison where the only difference was people network. Had I had a good following, on twitter or anywhere else, Navalia would probably have much more effort behind it as opposed to just being “mostly me.” I’ll admit that I’m still licking my wounds, but I’ll likely be somewhat jaded from now on.
I think there’s a lot that can be learned from these events:
For those that might be in disbelief, here’s links to both HN announcements and GitHub repos: