beeware / paying-the-piper

A project for discussing ways to fund open source development.
343 stars 14 forks source link

Developers negotiate their role better #15

Closed ximbled closed 9 years ago

ximbled commented 9 years ago

This sounds daft, but I think the responsibility should fall to some extent on the developers. There is no other manufacturing industry whereby you can become an expert at building something tangible without first building up a toolset.

A plumber, can lend some tools from his mates when he's starting out. But at some point he's going to need to buy a pipe bender, or a cutter.

If developers were more hardline about their requirements. open sourcing would be more readily accepted by smaller companies.

I'll work with you to build out our reporting dashboard but - we open source it from the beginning.

I'll accept the position but on the condition that I'm going to be releasing our markup templates (sans styling / branding)

I'll only build a team from Open Source contributors.

freakboy3742 commented 9 years ago

It's not just about releasing code as open source, though. That part is (relatively) easy. Yes, it could be done more often, but it is being done widely today.

What isn't being done is maintaining open source projects - not just "we'll release our internal code when we feel like it", but "we'll manage contributions from outside, and give other people's bug reports the same priority as our own".

To use your analogy: We're not talking about a plumber borrowing a pipe bender from a colleague. We're talking about a plumber who decides to start a company making and selling pipe benders.

ximbled commented 9 years ago

That's not plumbing.

That's manufacturing pipe benders, which you'd do the same way you do any other product based business. Build a prototype and have it manufactured at scale in a developing country for relatively low cost.

In fact I know a few Software Houses that do that anyway.

nanuxbe commented 9 years ago

+1 on the main idea

ximbled commented 9 years ago

Plus how much time do you want, I wouldn't be scared to ask for 1 day in 10 solely to work on Open Source projects. That's about £300/month to work on Open Source project of your choosing if you're at the sort of level whereby you could build something great.

freakboy3742 commented 9 years ago

1 day in 10 doesn't get the job done. Speaking from experience on Django - Managing a large project requires extended focus on that project. It's not something that you can do part time. 9 women can't make a baby in 1 month - you need a single, dedicated resource working full time. The same is true of software.

Plus: I've been in companies that do offer "1 day in 10" or "20% time". But as soon as deadlines loom, or revenues drop, the first thing to be dropped from the budget is the open source contribution, because it's not directly contributing to the bottom line.

ximbled commented 9 years ago

I'm trying to agree with you, but I think you're largely missing my discussion point. The call was for ideas about how we can fund open source software however you're opinion seems to be very narrow as to how economies at a basic level, function. Since this is outside the scope of the discussion raised I'll leave it. But if you are interesting in building a sustainable revenue model that works on giving stuff away then you need to re-evaluate your end goal, there is no silver bullet in software engineering and we're moving forward to market saturation with "agile-esque" delivery. This sheds light on newer approaches to traditional software sales. What you need to understand from a commercial perspective is that selling to developers is a dead end. For that reason alone you need to be able to sell your project directly to its end users. If you want to work in the Open Source industry great. I'm fully supportive of that but products sell and its a convenience based market.

ximbled commented 9 years ago

With regard to open source contributions being dropped because it doesn't effect the bottom line you are completely missing the point I raised.

Developers should negotiate better

If my 20% time was in my contract from the off, its not something that can be taken away. And if it does then fine, we'll see how the bottom line works out when youre development team realise you've mis-sold them their role. Let's say I'm a senior with a cohesive team below me. I'll just take the entire team elsewhere. The best that can happen is a junior decides they care more about the salary and get promoted to the position I leave, the worst that can happen is I serve my notice period. Because you're aware of my intention to leave I get either "Garden Leave" or "Pay in Lieu of notice" Now I'm immediately available for a new role and have whatever my notice period was (1-3 months is expected at senior) to find a new position.

freakboy3742 commented 9 years ago

My position comes from one of experience. I negotiated 20% time into my full time work contract almost 10 years ago. And it lasted maybe 2 months before the first deadline loomed, and 20% time went away, and never came back. And because I have a family, and didn't have an immediate job to go to, I wasn't willing to call the bosses bluff and jump ship. This isn't a matter of poor negotiation - it's practicality writ large. I shouldn't need to have "f*ck you" money in the bank in order to stand up for my rights.

Plus, also from experience, 20% time doesn't cut it. 9 women can't make a baby in 1 month. Some tasks need full time dedication and focus. Maintaining a large project is one of these tasks.

In concrete terms, here's what I'm trying to achieve:

1) Django is a well established project used by many Fortune 500 companies and multi-billion $ valued startups. And yet we're having difficulty raising money to pay for a one full time staff member to do essential project maintenance that isn't being done by volunteers.

2) I have a number of personal projects that I think would be beneficial to the Python development community if they were to exist, but at the moment, I'm working on them entirely on my own spare time. At this rate, one of them might reach "commercially viable" somewhere around 2020. I want to keep them open source for ethical reasons, but I need to be able to raise funds to pay for development - and not just a "3 month sprint funded by kickstarter" - enough to know that I could leave my day job and do this full time, for the foreseeable future.

So yes, I'm being focussed on a narrow definition. This was a bit of a rushed thing I did last night to try and capture some momentum, so I haven't really had a chance to fully frame the discussion I think we need to have. #18 makes a similar point to yours. I'll definitely take on board the fact that the broader framing is missing, and needs to be added.

However, from my perspective, many of the ideas that have been proposed so far are not new. "Bug bounties", "SaaS", "Sell training", "Consult on the side" - these are all well established ideas. And they've been shown not to work for projects like Django, or for bootstrapping new ones. I'm looking for the "thinking outside the box" answers here, not rehashing the stuff that we already know doesn't work - by which I mean "doesn't pay for a full time developer" not "doesn't raise any money at all".

ximbled commented 9 years ago

So now we're getting somewhere. Your personal motivation as a stakeholder in this open source discussion. First and foremost I'd like to say that my experience of the industry in Australia is somewhat limited and from speaking to technically minded aussies I know they're doing pretty well. The development industry is younger (I'm guessing here from having spoken with the developer my last company in the UK hired) - They flew him over to the UK for 3 months, housed and paid him before flying him back to Australia - The company has expanded to have a asia-pacific branch based down under and are doing really well. The selling of "professional services" is how open source works at scale. And it does work, really really well.

freakboy3742 commented 9 years ago

During those three months - how much contributing to an open source project did your friend do? How much of his consulting income was directed toward someone who was doing open source development?

I'm not denying that professional services is a great way to earn money. What I'm saying is that professional services doesn't automatically lead to more open source development - it leads to selling more professional services, because the effort follows the money.

In an open source context, if you're selling professional services, you're doing so on the back of an open source project. There's nothing currently requiring someone who earns $10k/week (which is totally achievable in a consulting context) to give any of that money back to the project that has enabled them to earn that money.

And if you are earning money through professional services... what happens to the community while you're off earning money? Sorry everyone - I can't triage critical bugs this week, I need to get paid. From a personal perspective, it's essential that I say this - but from the point of view of the project, its' dangerous - what if the bug is a security problem requiring immediate attention?

I'm not saying professional services people shouldn't exist, or that they shouldn't earn good money - they put in effort, they deserve to be well compensated. But when their ability to earn money is predicated on the existence of a software product that they haven't personally contributed towards - which is the case in a lot of situations - then I'm calling shenanigans.

lukego commented 9 years ago

Django is a well established project used by many Fortune 500 companies and multi-billion $ valued startups.

Sell professional services to these companies!

That seems like the obvious solution to me. Find something valuable you can do for one or more of those companies, get well paid for it, invest the rest of your time in independent development and call that a marketing expense.

If the cost of doing business is that you are occasionally unavailable for a week or more at a time for working with the upstream project then just explain that so that people know what to expect.

lukego commented 9 years ago

Variation on that theme:

If you are selling professional services you could also hire somebody else to do the upstream maintenance using the proceeds. This could make sense if the project really requires consistent full-time attention.

freakboy3742 commented 9 years ago

<sarcasm>Why! What an obvious solution! Why didn't I think of that</sarcasm>

Seriously - we've been down this path, and it doesn't work, because the economic incentive is misaligned, in two important ways:

freakboy3742 commented 9 years ago

Please note that I'm not saying professional services doesn't work. There are many companies in the Django ecosystem who do professional services, and they're all lucrative businesses. Some of them were even started with the explicit plan of "and I'll give X% back to Django as a project, either in cash or in development time". And it just doesn't happen that way.

lukego commented 9 years ago

And it just doesn't happen that way.

Why?

Could there be a simple explanation e.g. that the people who actually start these companies do so because they are motivated to make a lot of money? In that case the model could still work for somebody else whose company would act as a vehicle for sustainably maintaining the upstream project i.e. would reinvest profits into maintenance of the project instead of paying dividends.

freakboy3742 commented 9 years ago

It's not because they want to (or wanted to) make a lot of money. They haven't become stunningly rich. It's because running a company is hard. And a good consulting company requires you to be constantly be selling your company and filling your sales pipeline. Since that is what is earning money, that is where all the time goes. When contributing to open source isn't your actual source of revenue, it's little more than an aspirational target, and it's the first thing that goes overboard.

I'm sure some people have managed to reach a balance, and contribute to open source while consulting. However, it requires extraordinary discipline. I'd rather see a model where the economic incentives are directly aligned with revenue generation, so that the answer to "we need earn more money" is "develop more open source", not "do this related thing and hope we still have time for open source".

lukego commented 9 years ago

My perspective:

I work full time on an open source project that I started. I fund this by selling professional services related to the project e.g. adding new features. I own my own company and I reinvest money in the project. I also deal with challenges like how to fund long term maintenance but these seem to me surmountable in this model since I make it a priority.

I also buy a lot of professional services from other people when I am working on larger projects. I have recently hired around 20 people to make contributions to Snabb Switch, QEMU, Libvirt, OpenStack, and LuaJIT. Often the most challenging and expensive part of these projects is having contributions accepted by upstream projects and this often involves helping with project maintenance in some way.

I am very attracted to working with people who are well known contributors to these projects because that reduces the risks associated with landing code upstream i.e. for me it makes sense to pay somebody more if they are actively maintaining the project I need help with.

freakboy3742 commented 9 years ago

Glad to hear you've been able to make this work for you - maybe the situation isn't quite as hopeless as I thought :-)

Some questions:

lukego commented 9 years ago

I started from the definite intention to create an open source project that I could work on full time together with at least a small group of friendly people (and honestly to have some "world-domination" potential). I had no idea how to do this so in the beginning I was writing code and coming up with a strategy at the same time.

My meta-strategy was to talk to people who have made this work and find a model that I could follow. I got in touch with Brian Behlendorf (Apache) and Mårten Mickos (MySQL) they were really helpful in patiently listening to my briandumps and pointing me in the direction of relevant examples.

Digression: My first thought had been to use BerkeleyDB as the model. That is: dual-licensed, free for open source projects, costs ~$50K for a license to use in proprietary software. However, this does not really match with my goals. On the one hand it would require me to own all the code and so people couldn't join the project on the same footing as me. On the other hand it would be like a startup where I would invest a lot of resources in a risky venture and potentially be bitterly disappointed if the commercial world does not embrace it with open arms :).

I decided to take the professional services route. That keeps it lighthearted: anybody can join the project on the same terms as everybody else and the commercial aspects are in the background. It sounded like SQLite would be the nearest model for this project but over time I feel like it has been most useful to refer to the Linux kernel in the sense that the economy is decentralized and there are no barriers of entry to new participants.

So back to your questions...

Bootstrapping was done with a mixture of hacking in my own time and spending a reasonable amount of time (<50% averaged over a year) consulting in related areas. Initially I could not sell services based directly on the open source project, since nobody was using it yet, but it was valuable for promotion and networking even from the start. I was able to keep the consulting time limited because I read patio11 and realized I had always undercharged for my time in the past and all I had to do was understand my value proposition and be comfortable with negotiating.

This bootstrapping process took about a year. Then a consulting client who liked me and knew about my project referred me to a big company who needed somebody to do major development for them. I have done a series of projects with them now: total several years of work with (say) 5-6 people engaged at a time (other independent professionals who join and leave the projects based on availability and skills required).

The bootstrapping milestone that we are coming up to now is when my own activities will be a small part of the total activity around the project. Then I will be able to relax for a while. (I started working on this project a little over 3 years ago and I have had two kids in that time.) Currently I am less concerned about my private income than about generating a budget to keep clever people engaged in the project while they get enough experience to get commercial projects of their own. Once enough people reach that point I will feel really satisfied (and their experience will make them too expensive for a guy like me to hire anyway :-)).

So that is the picture...

Generally speaking it is a major "boom" time in the networking industry at the moment so I was lucky that it was easy to find consulting work and there are a bunch of ambitious projects going on. Having said that, another perfectly valid way to fund work on the project would be to attract people who already have day jobs to contribute in their spare cycles. Some of our best and most consistent contributions come from people who are able to do this. So it is not at all the case that everybody needs to be a service provider: that's only one part of the ecosystem and I focus on it only because it's what I do myself.

ximbled commented 9 years ago

Thanks @lukego for making me feel my ambition and business plans are viable. Happy for this conversation to me marked as resolved.