As a user of D in a corporate environment and personal at home
environment, I have to say this model won't work for me. In fact
if this model were implemented, I would more than likely have to
move my project to a different language because of it. Let me
explain the issues I see here.
You've proposed a hybrid open and closed source model. Where
certain segments of code (latest patches) are behind a per patch
paywall. As a customer I don't want to have to pay for each bug
fix in the compiler. If there is a bug in the language/compiler
then I want it fixed. I shouldn't be charged to have the language
I'm using work properly. It basically says to customers, here you
can use this language for free, unless you want it to work
properly, in which case you need to pay for each fix you need or
wait till developers don't care about making money off a fix
anymore.
This will also diminish the growth rate of D. I can tell you, it
would be significantly harder for me to use D at my workplace if
this model were in place. Managers are okay in letting me use D
because its an open source project (minus the backend of DMD) and
it doesn't cost them a cent. If all of the sudden I have to ask
them to pay for fixes in order for my project to work, that makes
it a different situation entirely. My company would also frown on
the free option of waiting for fixes to pass out of the pay wall.
Companies like actively supported projects. As such, companies
(at least the one I work for) prefer either fully commercially
supported languages (C# through VS) or fully open source.
Remember, that there are ways to provide commercial support
without putting a paywall on using the language itself. What is
really needed here is buy-in from corporations on the language.
Having engineers from a company working on D would provide one
form of commercial support. But this model is very difficult to
find and the closest to it I've seen is Facebook's involvement
with D. I agree having developers who are paid to work on D would
be a great thing, but reaching that point is a very difficult
road.
While I understand, that D needs some form of commercial support
for some parties, there is also a stigma that the current model
doesn't provide support. I've found to the contrary actually. I
find the full open source model employed here, has a better
support system than a lot of other commercial support models. The
reason is the community, there is always someone around to answer
a question. I find with most commercially supported models the
development team can't be reached and you have to depend on your
coworkers or friends who may know of a workaround (Microsoft
model). Most of the time I see bugs get fixed fairly promptly for
a compiler project despite the fragmented development that is
inherent to open source projects.
I think commercial support for D really comes down to one of two
situations in the future:
* A company decides to make a commercial D compiler that is
closed source but compatible with phobos, etc. They fully support
the compiler. (Doesn't necessarily mean they charge for the
compiler itself, they could but they can also charge for support
plans and/or a IDE tool).
* A company decides to invest engineers in working on the open
source D compiler. Thus providing commercially supported
developers to the project. (This would be a hybrid too, where the
open source developers can still contribute and work but now
there are a group of paid engineers working to advance the
language as well).
On Sunday, 4 January 2015 at 08:31:23 UTC, Joakim wrote:
This is an idea I've been kicking around for a while, and given
the need for commercial support for D, would perhaps work well
here.
The notion is that individual developers could work on patches
to fix bugs or add features to ldc/druntime/phobos then sell
those closed patches to paying customers. After enough time
has passed, so that sufficient customers have adequately paid
for the work or after a set time limit beyond that, the patch
is open sourced and merged back upstream. It would have to be
ldc and not dmd, as the dmd backend is not open source and the
gdc backend license doesn't allow such closed patches.
This works better than bounties because it avoids the tragedy
of the commons problem inherent to open source and bounties,
ie any user can just wait for some other contributor or any
potential individual paying customer has an incentive to wait
and let somebody else pay a bounty, then use the resulting work
for free right away. With this approach, non-paying users only
get the resulting paid work after the work has been paid for
and perhaps an additional delay after that.
Two big benefits come out of this approach. Obviously, this
would provide commercial support for paying customers, but the
other big benefit is that it doesn't depend on some company
providing that support. A decentralized group of