June 25, 2020
On 6/25/20 5:51 PM, Petar Kirov [ZombineDev] wrote:
> I don't recall you or Walter getting involved with the development of dub or the dub-registry in any significant manner. I remember that you criticized the addition of SDLang as an alternative to JSON package description format, but that's it.
> 
> I feel there is a very big disconnect between you and the community. One on hand, I think that Dub and code.dlang.org are one of the biggest assets of the community. On the other hand, it seems to me that you're not interested in Dub at all. It's just another community project that "they"'re free to do whatever they want it.
> For example, my impression (though I'd be happy to be wrong), is that you have never actually tried using Dub for any project of significant size, or such depending on a significant proportion of code that you don't maintain. On the other side, take as an example any company that needs to bring a D web project quickly to market. The first thing they'll likely reach for is dub + vibe-d + mysql-native + some js frontend framework - basically 100% third-party code for that team. Since (as far as I'm aware) you haven't invested much time in projects like this, I'd guess that it would be hard for you to fully appreciate the necessity, challenges, and benefits of using a package manager like Dub. Which is why, to me it seems that Dub is not very high on your radar of important things to improve for to D succeed.
> 
> Different people having different priorities is absolutely normal but on the other hand, if hypothetically most people using D type `dub` in their terminal say 99% of their time compared to 1% for `dmd`, perhaps it's not unreasonable for the community to expect the leadership to take a Dub's issues in a proportional manner. Or at least the community would find it strange that the keywords code.dlang.org or Dub were not mentioned even once in the vision documents, e.g. https://wiki.dlang.org/Vision/2018H1. Yeah, "tooling" is mentioned, but honestly, that too unspecific to be actionable. On a related topic, "mobile" and "wasm" also not mentioned, which areas where D in theory could do very well, and its direct competitors are rapidly gaining market share.

Cool cool cool. (Kind of funny you frame lack of involvement in dub as something to be ashamed of, like having cheated. I'll level with you: I'm just a casual dub user.) So as far as I understand the argument goes "Whatever you've worked on, that was missing the point because you should have worked on dub instead, which was way more important." From a very simple teleological viewpoint, you're entirely right: if D isn't mainstream, clearly there is something we didn't do right. As such, all paths not taken are very attractive. What if we put all that effort in dub? Or an IDE? Or a killer application written in D? No shortage of paths not taken. You seem to believe that dub is the most important, but over the years there have been many ideas from many people about what is the most important.

From where you stand dub would be the thing to focus on, but for years Walter and I have been fighting huge quality problems that now seem to be forgotten. Those would preclude any application work. dmd was be unable to compile anything beyond the most trivial examples of its own flagship features - for years! And when it got it right, phobos got something wrong.

It does seem the presence of a package manager is a contributor to success. Some languages swear by it (Python/pip, Rust/cargo, Haskell/cabal). Yet some others are successful without an official one (Java, C, C++, PHP); and yet others aren't doing well in spite of having a good one (Perl/cpan). So it's not quite the foregone conclusion. Other people would say that an IDE is the thing, and I have been repeatedly asked to work on one. I'm sure those asking were as convinced about the importance of an IDE, as you are about the importance of dub.

The simple fact is I'm not an expert in package management or IDEs. I could probably learn how to do it, but it's unlikely he result would be anywhere close to world-class. In the meantime, I did think I could do a decent job at writing a standard library and helping with the language definition and there was an obvious necessity for those, too.

The main problem with the argument "why didn't you work more on X, when clearly X would have made the D language more successful than working on your core expertise Y" is... there's something wrong with it. Whatever the problem is, the solution can't be let's have fewer people do more work. It doesn't scale.

> Instead, we should compare D to language communities developed in the past 10-15 years. I suggest you look around and see how each one is doing and what were the different steps they took. I can assure you that probably all of their leaders at some points have been accused of not paying enough attention to this or that thing important to some part of the community. That's normal. Leading a small community or organization is very different than leading a big one.

Yes, that's a good point. It is self-evident to me that I have not been a good leader, which is part of why I bowed out.

All the paths not taken; surely one of them must have been better. I totally agree we didn't find the right sauce (how could I disagree? D doesn't have a million users). I think something endemic to our community is a certain thorniness, in most likelihood caused by its leadership (it always starts from the leadership) and slow mainstream adoption. Never in my life have I thrown so much work at such an unending pit of hostility. Years and years of my life, and some of my best work ever. Hundreds of thousands of lines written. Many more reviewed, to be fought tooth and nail by people whom I was just trying to help improve. The contrast is fascinating, because many companies are ready to pay handily for the very same thing, and the C++ community has always been happy with much less significant work. I was never able to explain this all to myself. But clearly there's something wrong about it. We seem to be dealing in some counterfeit expertise currency.

To this day, many moons after I stepped aside, there's no week going by without somebody in this forum putting the poop on something I've done, or teaching me how I should have done it.

We could use more kindness around here. Look at the title of this thread. "Why Phobos is cool." Someone found something he liked in Phobos. I knew as soon as I saw the title a poopfest was going to inevitably follow. Let the man have his day.
June 26, 2020
On Wednesday, 24 June 2020 at 21:37:37 UTC, H. S. Teoh wrote:
> Phobos sometimes gets a bad name around these parts, but actually it's pretty cool (in spite of well-known warts).  One of the cool things about it is the batteries-included philosophy that used to be its guiding principle.  Over the course of my usage of D, the following have stood out as being particularly convenient when I needed it:
>
> [...]

I don't think I'm a good enough programmer to know that Phobos is bad.
import std.stdio;
import std.algorithm;
import std.range;
import std.conv : to;

and I'm a happy man!

Jordan
June 25, 2020
On 6/25/2020 3:14 PM, Avrina wrote:
> The only thing the community can do is voice their disdain with what they are unhappy with.
Anyone in the community can step up and appoint themself the leader of Dub. If they do a good job, the rest of the community will naturally follow.
June 25, 2020
On Fri, Jun 26, 2020 at 03:02:20AM +0000, Jordan Wilson via Digitalmars-d wrote: [...]
> I don't think I'm a good enough programmer to know that Phobos is bad.
> import std.stdio;
> import std.algorithm;
> import std.range;
> import std.conv : to;
> 
> and I'm a happy man!
[...]

These days, if you use a recent compiler, it's even easier:

	import std;

And off you go. :-P

Only catch is, sometimes you might run into some unfortunate name conflicts within Phobos (e.g., std.file.remove vs. std.algorithm.remove).  But for the most part, it's very convenient for one-off scripts.

Even better yet, I've recently acquired the taste for one-line D programs using `dmd -i -run -`, and a lot of these take advantage of `import std;` for its conciseness:

	# Why go through the trouble of creating an entire project just
	# to print Hello World? Just do it in a single line:
	echo 'import std;void main(){writeln("Hello world");}' | dmd -run -

	# What's the value of PI again? Easy:
	echo 'import std;pragma(msg, PI);' | dmd -o- -

	# Test a single line of code to see if it works
	echo 'import std;void main(){writeln([1,2,3].canFind(1));}' | dmd -run -

And also, one-line tests of code in the current directory tree:

	# What's the type of that obscure symbol in module 'mymod'
	# again?
	echo 'import mymod;pragma(msg, typeof(mymod.someSymbol));' | dmd -i -o- -

	# Does function myFun actually work with float arguments??
	echo 'import mymod;pragma(msg, is(typeof(myFun(3.14f))));' | dmd -i -o- -

	# What does function myFun return in this case?
	echo 'import mymod;void main(){writeln(myFun(3.14f));}' | dmd -i -run -

Or generate complex output for other programs using the expressive power of D code:

	# Generate test data for some external program
	echo 'import std;void main(){writeln(iota(0.0, 100.0).map!(x=>sin(x)).filter!(x=>x > 0.5));}' |  dmd -run - | sort


Maybe we should have a Most Useful One-Line D Program contest. :-P


T

-- 
People say I'm arrogant, and I'm proud of it.
June 26, 2020
On Friday, 26 June 2020 at 05:39:59 UTC, H. S. Teoh wrote:
> 	# Why go through the trouble of creating an entire project just
> 	# to print Hello World? Just do it in a single line:
> 	echo 'import std;void main(){writeln("Hello world");}' | dmd -run -
>
> 	# What's the value of PI again? Easy:
> 	echo 'import std;pragma(msg, PI);' | dmd -o- -
>
> 	# Test a single line of code to see if it works
> 	echo 'import std;void main(){writeln([1,2,3].canFind(1));}' | dmd -run -
>
> And also, one-line tests of code in the current directory tree:
>
> 	# What's the type of that obscure symbol in module 'mymod'
> 	# again?
> 	echo 'import mymod;pragma(msg, typeof(mymod.someSymbol));' | dmd -i -o- -
>
> 	# Does function myFun actually work with float arguments??
> 	echo 'import mymod;pragma(msg, is(typeof(myFun(3.14f))));' | dmd -i -o- -
>
> 	# What does function myFun return in this case?
> 	echo 'import mymod;void main(){writeln(myFun(3.14f));}' | dmd -i -run -
>
> Or generate complex output for other programs using the expressive power of D code:
>
> 	# Generate test data for some external program
> 	echo 'import std;void main(){writeln(iota(0.0, 100.0).map!(x=>sin(x)).filter!(x=>x > 0.5));}' |  dmd -run - | sort
>
>
> Maybe we should have a Most Useful One-Line D Program contest. :-P
>
>
> T

I’ll make a mental bookmark of this, thanks!

— Bastiaan.
June 26, 2020
On Friday, 26 June 2020 at 01:58:13 UTC, Andrei Alexandrescu wrote:
> On 6/25/20 5:51 PM, Petar Kirov [ZombineDev] wrote:
>> I don't recall you or Walter getting involved with the development of dub or the dub-registry in any significant manner. I remember that you criticized the addition of SDLang as an alternative to JSON package description format, but that's it.
>> 
>> I feel there is a very big disconnect between you and the community. One on hand, I think that Dub and code.dlang.org are one of the biggest assets of the community. On the other hand, it seems to me that you're not interested in Dub at all. It's just another community project that "they"'re free to do whatever they want it.
>> For example, my impression (though I'd be happy to be wrong), is that you have never actually tried using Dub for any project of significant size, or such depending on a significant proportion of code that you don't maintain. On the other side, take as an example any company that needs to bring a D web project quickly to market. The first thing they'll likely reach for is dub + vibe-d + mysql-native + some js frontend framework - basically 100% third-party code for that team. Since (as far as I'm aware) you haven't invested much time in projects like this, I'd guess that it would be hard for you to fully appreciate the necessity, challenges, and benefits of using a package manager like Dub. Which is why, to me it seems that Dub is not very high on your radar of important things to improve for to D succeed.
>> 
>> Different people having different priorities is absolutely normal but on the other hand, if hypothetically most people using D type `dub` in their terminal say 99% of their time compared to 1% for `dmd`, perhaps it's not unreasonable for the community to expect the leadership to take a Dub's issues in a proportional manner. Or at least the community would find it strange that the keywords code.dlang.org or Dub were not mentioned even once in the vision documents, e.g. https://wiki.dlang.org/Vision/2018H1. Yeah, "tooling" is mentioned, but honestly, that too unspecific to be actionable. On a related topic, "mobile" and "wasm" also not mentioned, which areas where D in theory could do very well, and its direct competitors are rapidly gaining market share.
>
> Cool cool cool. (Kind of funny you frame lack of involvement in dub as something to be ashamed of, like having cheated. I'll level with you: I'm just a casual dub user.) So as far as I understand the argument goes "Whatever you've worked on, that was missing the point because you should have worked on dub instead, which was way more important."
I would say its not about the MOST, it doesn't always have to be the most but one could say without any direct mention of Dub or mobile, dub especially, it calls into question how that document is compiled. For example is there a community wide survey or anything to see which issues are most desired to be tackled. It doesn't have to be all but at least help get a couple these addressed. Especially dub.

>From a very simple
> teleological viewpoint, you're entirely right: if D isn't mainstream,
Right now its about getting D to improve for users. Not potential users per se. Phobos is great for what it doesn't but what it doesn't, dub needs to be a stronghold.

>clearly there is something we didn't do right. As
> such, all paths not taken are very attractive. What if we put all that effort in dub? Or an IDE? Or a killer application written in D? No shortage of paths not taken. You seem to believe that dub is the most important, but over the years there have been many ideas from many people about what is the most important.
>
> From where you stand dub would be the thing to focus on, but for years Walter and I have been fighting huge quality problems that now seem to be forgotten. Those would preclude any application work. dmd was be unable to compile anything beyond the most trivial examples of its own flagship features - for years! And when it got it right, phobos got something wrong.
>
> It does seem the presence of a package manager is a contributor to success. Some languages swear by it (Python/pip, Rust/cargo, Haskell/cabal). Yet some others are successful without an official one (Java, C, C++, PHP); and yet others aren't doing well in spite of having a good one (Perl/cpan). So it's not quite the foregone conclusion.
All those languages succeeded, because they found themselves in a advantageous point in time. So people could put up with it despite its shortfalls. This
could mean it was also immediately interesting to many people (contributors) and companies at that time.

Do you really think any new language now can succeed without a package repository?

> Other people would say that an IDE is the thing, and I have been repeatedly asked to work on one. I'm sure those asking were as convinced about the importance of an IDE, as you are about the importance of dub.
>
> The simple fact is I'm not an expert in package management or IDEs.
There's already efforts. It just need support. Again, not always financially.

 > I could probably learn how to do it, but it's unlikely he
> result would be anywhere close to world-class. In the meantime, I did think I could do a decent job at writing a standard library and helping with the language definition and there was an obvious necessity for those, too.
>
> The main problem with the argument "why didn't you work more on X, when clearly X would have made the D language more successful than working on your core expertise Y" is... there's something wrong with it. Whatever the problem is, the solution can't be let's have fewer people do more work. It doesn't scale.
>
>> Instead, we should compare D to language communities developed in the past 10-15 years. I suggest you look around and see how each one is doing and what were the different steps they took. I can assure you that probably all of their leaders at some points have been accused of not paying enough attention to this or that thing important to some part of the community. That's normal. Leading a small community or organization is very different than leading a big one.
>
> Yes, that's a good point. It is self-evident to me that I have not been a good leader, which is part of why I bowed out.
>
> All the paths not taken; surely one of them must have been better. I totally agree we didn't find the right sauce (how could I disagree? D doesn't have a million users). I think something endemic to our community is a certain thorniness, in most likelihood caused by its leadership (it always starts from the leadership) and slow mainstream adoption. Never in my life have I thrown so much work at such an unending pit of hostility. Years and years of my life, and some of my best work ever. Hundreds of thousands of lines written. Many more reviewed, to be fought tooth and nail by people whom I was just trying to help improve. The contrast is fascinating, because many companies are ready to pay handily for the very same thing, and the C++ community has always been happy with much less significant work. I was never able to explain this all to myself.
You've been a great inspiration. I would often skip other Dconf videos just to see what you'll present.

>But clearly there's something wrong about it. We seem
> to be dealing in some counterfeit expertise currency.

Ok now I also feel bad myself. And I can speak for myself now.

I'm probably sure I'm biased and greedy, probably. For example if we had some of these issues solved, I'd probably be complaining about something else I need.

>
> To this day, many moons after I stepped aside, there's no week going by without somebody in this forum putting the poop on something I've done, or teaching me how I should have done it.

"There's languages people don't use and those others complain."

However agree we need to control how we air out our complaints so it doesn't become a personal attack.

And part of it is being a leader on a project is again more than compilers and technically hard core fixes. It also includes managing people and marshalling together talents and empowering efforts. We've also seen people give up DIPs completely because they hit this wall. Communication, communication, people management. We're humans first.

If you don't air out opinions on matters, the void will definitely be filled.

It's not always about Walter do it, or Andrei fo it, or Atila do it. It's about marshalling people together to take responsibility of other things you just can't do. Its existing efforts everywhere. Again how will you as a CEO promote products of your company you don't use yourself or haven't got a gist of.

>
> We could use more kindness around here. Look at the title of this thread. "Why Phobos is cool." Someone found something he liked in Phobos. I knew as soon as I saw the title a poopfest was going to inevitably follow. Let the man have his day.

Ha ha.

Yeah you're right we've ruined the thread. Sorry.

Why Phobos is cool." it is. Phobos

June 26, 2020
On Friday, 26 June 2020 at 05:39:59 UTC, H. S. Teoh wrote:

>
> Maybe we should have a Most Useful One-Line D Program contest. :-P
>

Or a blog post showing off all of this and explaining the compiler flags :-)
June 26, 2020
On Friday, 26 June 2020 at 01:58:13 UTC, Andrei Alexandrescu wrote:
> Never in my life have I thrown so much work at such an unending pit of hostility. Years and years of my life, and some of my best work ever. Hundreds of thousands of lines written. Many more reviewed, to be fought tooth and nail by people whom I was just trying to help improve. The contrast is fascinating, because many companies are ready to pay handily for the very same thing, and the C++ community has always been happy with much less significant work. I was never able to explain this all to myself. But clearly there's something wrong about it. We seem to be dealing in some counterfeit expertise currency.
>
> To this day, many moons after I stepped aside, there's no week going by without somebody in this forum putting the poop on something I've done, or teaching me how I should have done it.

Let me try and compensate by saying Thank You, which I think has not been said enough. The day you announced that you quit your job at Facebook to work on D 100% was like Elon Musk announcing they would build a network of super chargers: it gave a huge confidence boost. Just WOW. So thank you, and I’m glad to see an increased involvement from you again recently.

— Bastiaan.


June 26, 2020
On Friday, 26 June 2020 at 09:23:46 UTC, Bastiaan Veelo wrote:
> On Friday, 26 June 2020 at 01:58:13 UTC, Andrei Alexandrescu wrote:
>> Never in my life have I thrown so much work at such an unending pit of hostility. Years and years of my life, and some of my best work ever. Hundreds of thousands of lines written. Many more reviewed, to be fought tooth and nail by people whom I was just trying to help improve. The contrast is fascinating, because many companies are ready to pay handily for the very same thing, and the C++ community has always been happy with much less significant work. I was never able to explain this all to myself. But clearly there's something wrong about it. We seem to be dealing in some counterfeit expertise currency.
>>
>> To this day, many moons after I stepped aside, there's no week going by without somebody in this forum putting the poop on something I've done, or teaching me how I should have done it.
>
> Let me try and compensate by saying Thank You, which I think has not been said enough. The day you announced that you quit your job at Facebook to work on D 100% was like Elon Musk announcing they would build a network of super chargers: it gave a huge confidence boost. Just WOW. So thank you, and I’m glad to see an increased involvement from you again recently.
>
> — Bastiaan.

Same feelings here.

Thank you Andrei.
June 26, 2020
On Friday, 26 June 2020 at 01:58:13 UTC, Andrei Alexandrescu wrote:
>
> We could use more kindness around here. Look at the title of this thread. "Why Phobos is cool." Someone found something he liked in Phobos. I knew as soon as I saw the title a poopfest was going to inevitably follow. Let the man have his day.

+1

Kindness is powerful.

I think we the community is prompt to point out the few mistakes while ignoring the stream of good decision the D leadership made along the years. One of those being a "big" Phobos that has lured many teams towards D. Considering the package explosion in "thin" stdlib languages, it was a clear win.