For anyone who is curious about how we operate our business, you can start by reading how we publicly advertise it. And for anyone who wonders where the money comes from to pay our team, we’ve cleverly concealed that information here.
Open Robotics builds and applies open source software (and sometimes hardware) for a wide variety of robotics domains, paid for by contracts and grants from industry and government. We also receive donations, but with a couple of notable exceptions, they don’t represent a significant share of our revenue. We don’t sit on an endowment or other pile of cash and we haven’t taken outside investment.
We choose clients and we design projects to maximize the portion of our work that will be done in the open and furthermore to maximize the level of reusable improvements that can be made to ROS (1 & 2) and Gazebo along the way. We sometimes work on projects that involve some amount of closed work, though as I’ve said previously, our DOD-funded work is 100% open. We often work on projects that involve some amount of application-specific work that isn’t easily reusable. When we worked on the DARPA Robotics Challenge, we developed a bunch of code and documentation that you mostly likely haven’t touched and never will. But if you’re using Gazebo today you are benefiting from the countless improvements that our team made during that multi-year effort. Our goal with each project is to find the right balance so that we can meet the needs of the client, who after all is paying for the work, but at the same time continue to improve the underlying platform in a manner that’s broadly beneficial.
As @davetcoleman said, funding open source development is hard. If your job includes interaction with clients or customers, I encourage you to ask them if they’d be willing to pay you to do work that you will then deliver to them via a public repo under an open source license where everyone else can also use it. It’s especially fun to have that conversation with their corporate attorneys and contracts people.
I’m sometimes asked how we manage priorities and decide what to work on. We take information from the following sources (in no particular order):
- Our own opinions. Some of us have been at this a long time, know a lot about how the current systems work, and as a result have a decent intuition about what’s important.
- Feedback from everyone in the community. Discussions like this one (at least the parts of this thread that can be called a discussion) provide us with invaluable information about what’s important to people outside our team.
- Activity in the marketplace. If companies are selling lots of material-moving robots to warehouses, we pay attention. If there’s huge investment in autonomous vehicles, we’re not going to ignore it.
- The needs of our clients. None of what we’re doing works without having revenue to pay our team.
It’s through the fusion of that information that we make strategic decisions like embarking on the development of ROS 2 or re-architecting Gazebo into the ignition libraries.
Everyone’s welcome to disagree with the decisions that we make and when you do, we want to hear about it. I’m perfectly comfortable with the fact that we can’t make everyone happy. And, having done open source development since the 90s, I’m also comfortable with the fact that that unhappiness is aired publicly.
I do ask, echoing @gavanderhoorn’s comment, that everyone find a way to be both constructive and civil. I realize that civility is rapidly going out of fashion and that, at least in the political world, trying to stick to it has at least in part led to some very troubling results in recent years. But, at the risk of sounding aggrieved and perhaps giving trolls what they crave, I can tell you that claims of moral turpitude, accusations of criminal wrongdoing, and unreasonable demands are, well, demoralizing. Some of my colleagues specifically don’t read these threads because doing so just makes it too hard to keep spending time writing code and giving it away for everyone to use.