OT: 'conduct unbecoming of a hacker'

Joakim via Digitalmars-d digitalmars-d at puremagic.com
Thu Feb 11 01:51:16 PST 2016


On Thursday, 11 February 2016 at 07:32:00 UTC, Ola Fosheim 
Grøstad wrote:
> On Thursday, 11 February 2016 at 06:20:33 UTC, Joakim wrote:
>> Eh, there were always the BSDs and essentially nobody runs GNU 
>> code today.
>
> Uhm... Many do. And beyond GNU, the GPL/LGPL are the most 
> common licenses in community driven open source productivity 
> applications: Gimp, Inkscape, Blender, Audacity...

All of which are decades-old projects from the heyday of the GPL, 
when many mistakenly attributed linux's success to the GPL and 
copied its license blindly.  Almost nobody starts new projects 
with the GPL today, and it seems they've also given up on such 
OSS productivity apps.

>> My point is that people see the success of open source and his 
>> early role as a vocal proponent and assume he was "critical," 
>> when the truth is more complicated, as his extreme formulation 
>> of completely "free software" has not done that well.
>
> It has not done well with corporations, but it has done very 
> well with open source end-user software! Even projects that are 
> not GPL tend to use LGPL code.

Define "very well." :) Because I've listed multiple 
permissively-licensed projects that are a couple orders of 
magnitude more widely used, and I see almost no GPL software even 
close.  It's basically just the linux kernel and that's it, and 
that only because it was piled high with permissively-licensed 
and even closed software on top, with Android.

> Yet, Linux did manage to scare the juggernauts, so now even 
> Microsoft is starting to publish under liberal licenses (first 
> very restrictive, now very liberal).

It did nothing of the sort, as GNU/linux basically went nowhere 
and MS didn't care.  It is only once permissively-licensed 
software like Android and parts of iOS hit billions of devices 
that MS started doing so, under permissive licenses like those 
projects, not the GPL.

>> This is why you should generally only work on something you 
>> actually need, which is a great discipline.  Even if it's 
>> rejected, you can code it up and use it yourself, though 
>> that's not always possible with certain language changes and 
>> DIPs.
>
> Well, yes. Unless you are designing a standard library.

Anything you want to add to a standard library can easily be 
maintained in a private fork or put up on dub, as you've 
suggested doing to all of phobos.  So even if you don't get a 
change into the standard library, there's nothing stopping you 
from using it or distributing it, so this comment seems pointless.

> The original open source projects were mostly about recreating 
> existing designs, but with a open source license. So the 
> missing features were obvious. In the case of GNU (Unix), it is 
> a cluster of individual small programs. So if people was 
> unhappy they wrote a new version from scratch. And the most 
> popular ones survived.
>
> Creative designs that went open source tended to be research 
> projects... so you had a clear vision (and people who were 
> experts in their field leading the design).
>
> So, the linked rant is pretty clueless IMO. You need to form 
> consensus in order to gain focus. If you don't have focus 
> you'll never end up with something coherent. If the author 
> believed in what he wrote, then why did he write it? He 
> obviously wrote it because he believe that communication  can 
> lead to change. And thereby he undermines his own argument...

I agree with everything till you start espousing consensus.  If 
anything, consensus often leads to the most incoherent designs, 
ie design by committee.

> What brought original FOSS projects focus was the fact that 
> they were not implementing original designs. And there has been 
> LOTS of advocacy and arguments on usenet about every creek and 
> cranny in software... since way before the Internet existed.
>
> So, it was an entertaining rant... and nothing more.

It had some good points, but was inconsistent.  Perhaps one 
reason OSS projects have become less willing to take his patches 
is that they've become much more widely used, where if your 
project ships on Android, it will be used by a billion and a half 
people.  Given that these projects are still way understaffed- 
look at OpenSSL and its Heartbleed bug- it's understandable that 
some would be conservative.  Of course, it's possible that the 
projects he talked to had almost no users, so it all depends on 
the scale of the project, as I said before.

>> For example, I asked about ARM and mobile support for D in 
>> 2011, noting that mobile was starting to take off and that 
>> people had been asking for ARM support periodically for years 
>> even prior to that.  I was told it was one of many priorities, 
>> but nobody knew when it'd be worked on.
>
> Yes, and this is all good, but it is not a language issue. It 
> fits well with what makes contributing to GNU/Unix easy. You 
> can write an isolated piece.

Even with language issues, there is potential for deviation.  For 
example, if you think there might be commercial users for that 
feature, you could sell them a slightly forked version of dmd 
with your feature.  It's what the zapcc devs did with clang:

https://www.phoronix.com/scan.php?page=news_item&px=New-Zapcc-Clang-Benchmarks

If it works out well enough, maybe you could integrate it back 
upstream eventually.

>> While this is not generalizable for all D PRs, ie nobody wants 
>> to maintain a fork of certain language features, it is for
>
> Several people have created their own languages because they 
> have given up on the D development process...

And how far have they gotten?  Entire forks don't get very far, 
but a tracking branch with a few additional features can do just 
fine.

>> for dmd.  Caring enough about a change to code it yourself is 
>> a good test for whether it is worth doing, which is one point 
>> the original post alludes to.
>
> Writing code without a fork, when you know it will be rejected, 
> is pointless.

Then perhaps you didn't really need that code, if you wouldn't 
have gotten much use out of it on your own.  Yes, I've admitted 
that maintaining some language features is too painful or 
different to maintain in a private branch, but many can.

> Spending days or weeks on a DIP, in order to have it dismissed 
> by a "nice technical DIP, but does not fit with our vision", is 
> very wasteful.

I agree that it would be better to nip that in the bud where 
possible or better explain why the DIP doesn't fit, but many 
times such rejection is an inevitable byproduct of maintaining a 
high technical standard.

Now, maybe it's impossible to maintain a high technical standard 
with a community-driven OSS project and you need a business model 
to be able to afford such exploration and possible waste of time. 
That may be a fundamental tension between technical quality and 
the OSS development model that cannot be resolved.  But I see no 
way around such rejection if you want to maintain a high level of 
quality.

> So people create their own languages instead, but without 
> building consensus, meaning they end up in an incomplete state 
> or being to close to D, having a different set of issues. Which 
> is a key aspect of D's problem too, it is too close to C++ to 
> not be compared to it. So fixing some issues and introducing 
> others isn't good enough for adoption.

One of the reasons it's close is that new versions of C++ are 
copying D. :) I don't blame them for doing so or think there's 
anything wrong with it, but there are still enough problems with 
C++ that I don't think it'll be enough.

> Building consensus is very important. Just take a look at 
> politics. Communicating a clear vision and a believable path to 
> implementation is essential. And listening. Good leaders are 
> always very good at listening, IMO.

Yes, politics, look at how much the politicians get done! ;) I 
think we all know and Walter and Andrei have said that they're 
not managers.

But I don't think consensus is useful, what matters is making the 
right technical decisions.  Sometimes that comes from long 
technical debate where everybody shoots holes in everybody else's 
ideas and eventually somebody decides to implement the least 
bullet-ridden idea.  Sometimes it comes from one person going 
down a path only they see the end to.

Consensus is for getting everybody doing the same thing, which is 
not the road to technical quality.  Linus has talked about the 
"wasteful" OSS approach, which he compares to evolution:

http://bobweigel.net/projects/index.php?title=Weigel/Notes#Linus_on_Development

Everything else about vision and listening, sure, but in an OSS 
project everybody is free to ignore that vision.  It's one reason 
why I wish the official vision statement was much more specific 
and daring, because no matter what, we're free to ignore it, so 
there's no risk.

At least you laid out a specific, original vision, and we can see 
if we want to follow it.  But if you make bland, shapeless 
statements like "Improve quality," weren't we trying to do that 
anyway?  It then becomes one of those corporate mission 
statements, which are notable only for stating the bland and the 
obvious.


More information about the Digitalmars-d mailing list