Happy 10th Birthday, Bridgy!

Today marks 10 years to the day since I first launched Bridgy, my little IndieWeb side project to connect social networks and personal websites. Happy Birthday, Bridgy!

I’ve always loved the internet, but I’m not a Very Online person, exactly. I don’t really hang out there. I didn’t fall in love with the people, or the community; I fell in love with the network. The physical reality of packed switched routing, the awkward unlikely miracle of a bunch of computers – rocks we flattened and jammed lightning intotalking to each other. Interacting. Just a few at first, here and there, but gradually more and more, on long strings of copper underground and hung on wooden poles and finally across entire oceans, until they circled the globe in a single, all-encompassing internet. Kind of amazing.

I still love all this. My favorite guilty pleasure reading material is potaroo.net, Geoff Huston’s fantastic blog on internet plumbing from deep in the bowels of APNIC. His deep dives into BGP, IPv4/v6, DNS, and the rest of the modern networking world scratch an itch for me that nothing else can touch. They’re great.

Naturally, I’ve always wanted to participate in the internet too. First BBSes and early email, then walled gardens like CompuServe, then network programming in high school and college, and finally here on my own domain. I feel like my web site is a home, a home I own, in a way I can’t say about my Facebook or Twitter profiles.

I’m not the norm, though. Most people are online these days, but not on their own web sites or domains. It’s not as hard as it used to be, but it’s still not easy enough. How many of your family or friends have web sites? Probably not many. How many are on Facebook or Twitter? Many more.

I had my own web site, and I posted to it on and off. After a while, I started copying those posts into the social network silos, because that’s where everyone was. I didn’t mind, and people still occasionally came here and commented, but more and more, they did it in the silos instead. Those responses felt ephemeral, fragmented. I didn’t really own them, any more than I owned my silo profiles.

I knew how to code, and the social networks all had APIs, so I dove in. I’d followed the federated social web movement for a while, so I knew about OStatus, the main open standard at the time. None of the big silos supported it, but I wondered how much of it I could implement through their APIs.

A solid amount, as it turned out. Implementing all of the APIs and OStatus would take a lot of work, so I narrowed down the web site part to just WordPress, cranked out an MVP, and launched it on Jan. 8, 2012. Not many other people used it, but I didn’t mind. I wasn’t trying to build a business or a movement, I was just scratching my own itch.

I moved on to other things, but the WordPress part kept nagging at me. I knew I wanted an open standard, and I knew the main candidate was OStatus (and Salmon), but I was reluctant. It was complicated, most web servers didn’t support it, and it was already slowing down in favor of pump.io, the predecessor to ActivityPub.

I searched around a bit, eventually stumbled upon the IndieWeb, and immediately felt at home. I was familiar with Kevin Marks and Tantek, two of the founders, and I was already on board with the principles. When I found webmention and microformats 2, I was hooked. Webmention was barely a year old, but it was exactly the standard I was looking for, without OStatus’s complexity or baggage.

I jumped into the IndieWeb chat, started coding, and quickly added webmention support to Bridgy. I launched the new version on Dec. 9, 2013, and the rest, as they say, is history.

How does it feel, 10 years later? What have I learned? First, as Avery and DHH have described recently, it’s been hugely rewarding to build a tool people want and give it away for free. I built Bridgy primarily for myself; I let other people use it because I believe in sharing, reuse, specialization, and open source. I’d made plenty of other small projects before, but none saw any significant adoption, so I didn’t expect Bridgy to be any different.

It grew slowly and steadily though, through feature launches and silo ups and downs and growth spikes and design debates and plumbing shifts. Today, it has more than 6,000 accounts, sent over 2M webmentions, and processed over 26M silo interactions. It’s even been studied by academic researchers!

It’s also been fun to foster a tiny open source community. If you include the core granary and oauth-dropins libraries, 22 people total have contributed code to Bridgy, and hundreds more have provided bug reports, feature requests, and other feedback. It’s not a big crew – I still maintain the code and production infrastructure largely on my own – but it’s been great to see other people jump in and contribute, often in ways I never would have come up with myself.

Developing Bridgy has been surprisingly helpful career wise, too. It’s where I first learned Python 3, BigQuery, ETL, open source packaging and dependency management, secure coding, unit testing strategies, CI, bits of JavaScript and CSS, and many more things I later used on the job.

More importantly, I’m grateful and proud that Bridgy has helped push the IndieWeb forward a bit. I believe in personal web sites and owning your presence online, so I love that there’s a larger movement building on those ideas. It took a while, but the world is clearly realizing that social networks are a mixed blessing. Now we just have to establish personal web sites as a viable alternative.

Bridgy though. Happy birthday, little buddy! Time passes, things change, silos gonna silo, Bridgy won’t survive forever…but it’s been up and running for 10 years so far, and I have no plans to change that any time soon. Here’s to another 10!


69 thoughts on “Happy 10th Birthday, Bridgy!

  1. Congrats!! This must have been a really fun one to write 🙂

    I swear I’m going to get around to migrating my content to WordPress one of these days and then…game on Bridgy!

Leave a Reply

Your email address will not be published. Required fields are marked *