What project or projects do you maintain and what was your motivation for creating those projects and releasing them as open source software?
My main project is currently is secure-scuttlebutt. It’s a decentralized database that maps to “social media” applications. This is a very aspirational project. On the one hand, there is a personal “adventure” motivation, to build a thing that no one has built before, explore new territory and name it. On the other hand there is a sort of moral optimistic Sci-Fi motivation, the idea of liberating us from perceived tyrannies. And there are many smaller things that form details within that secure-scuttlebutt. Luckily, the details are generally fun-to-solve problems on their own, so there are different layers of goal and motivations that are interleaved
If you created any of those projects, were they meant to solve a specific problem you faced, or were they born out of a larger opportunity you saw?
both of these at once. For example, when I started on the journey towards secure-scuttlebutt (I didn’t decide on that name or that architecture until relatively recently) I was living on a sailboat, in a swamp. I had a solar panel, but no internet, I would ride to the library and use the internet there. Why should I have to be connected to the internet for an application to work? But also, most of the rest of the world has internet that is worse than I did. Most city-dwelling westerners think that it’s just a matter of time until the internet is finally rolled out everywhere… but obviously it’s harder than it should be. Maybe you are in a airport or crowed cafe and now the wifi is unreliable. I’ve been to fully rich cities where, like, 3g has no bars because the buildings are too tall. lots of little disconnections. It’s still frustrating.
How has the project evolved since you first got involved or first released it?
We have a usable prototype, and there is a community that is using it! that is the most important thing. For a long time, it was just me and Paul Frazee. Having others is very motivating. I’m would quite likely have lost interest and started another project (and then lost interest in that, etc)
How do you spend your time on those projects? (i.e. Developing, managing the community, triaging issues, etc.)
It’s very uneven. I enjoy when I have a big meaty problem to work on, but the hard part is deciding what to do next, what problem to solve. Working on that looks a lot like procrastination.
How would you describe the community around projects you participate in? What are your favorite and least favorite aspects?
The best thing, and people in the community have said this, is that everyone is nice to each other. We are only too happy to help a new person, and always ready to explain ideas. We won’t tell you to RTFM.
What keeps you involved in those projects? Do you have long term plans for maintaining your involvement?
definitely the community. Although, one day I hope to “be finished”, and be able to work on other things, hopefully because the project succeeds, not because it runs out of steam.
What is the most important thing someone submitting an issue or patch should know?
This goes for any project, and it goes for receiving a patch as well as making one, but explain what you are trying to do, explain what the code does. Don’t just submit code. In text based communication, subtext rules everything. There is a million ways to say “fuck you” without saying that, so you need to avoid that, and instead saying “I respect and appreciate you”. But, you can’t actually say that literally - communicating that via subtext is believable. The simplest way to show respect is to take your time to explain your self.
What’s your development environment right now?
second hand Lenovo x220 (if you want to write fast software, use a slow computer) running Arch Linux, with a couple of terminals open. text editor is https://github.com/dominictarr/hipster (I wrote that a few years back, essentially as a joke, and it’s pretty crappy but it works and I still use it)
What was your first development environment? Do you miss anything from it?
I once wrote a lot of code on a 7” Asus EEE. I could see 22 lines of code at once. And I was writing java back then! I think with a small screen you write less code.
Where do you see the open source software community headed?
Away from hierarchy, towards flatter more fluid collaboration. The node level community really showed me this. The model we were used to before that was a to have a single “benevolent dictator” but we didn’t do it like that at all in level. I think partly the tools enabled this because npm does modules so well, we could write independent modules, rather than make PRs to a monolith. Or rather, most of the tools we have points of control and artificial scarcity. You end up with one person who can make a decision, so they have control, whether they want it or not. Even on say, wikipedia, sure anyone can edit it, but there is still a single “neutral” version of the article. Computers have come to us via military, and then corporate accounting systems. It’s not surprising that are are about centralizing and empowering a single perspective, but that isn’t how people are. Everyone has their own story. It’s just a centralized power is easier to implement, but think a decentralized one will actually work better.
That open source works at all is quite amazing, if you compare it to the organizing principles that most of modern life is run under. But you have to learn to collaborate, it’s a skill. But also, those skills can be concretized into tooling, like the shift from SVN to git, git enables more decentralized, independent collaboration, but I think it could be more decentralized. on github you can add collaborators, but it’s not the default, and if you want your collaborators to be able to add collaborators you have to shift it to an org, and make everyone else “owners”, but it’s a bit of work to figure that out. Too often, we have this idea of ownership built into the tools, that this project is “mine”. I don’t think that is correct. If anything, the project owns you. Or you “belong to it”. A healthy open source project morally “belongs” to a community not an individual or company, despite what the license might say. It’s more like the way tribal communities see themselves as belonging to the land, rather than owning it. But our tooling doesn’t tend to express this directly. I think there are a lot of barriers to collaboration that can still come down.