www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - [OT] Leverage Points

reply Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> writes:
A friend recommended this article:

http://donellameadows.org/archives/leverage-points-places-to-intervene-in-a-system/

I found it awesome and would recommend to anyone in this community. 
Worth a close read - no skimming, no tl;rd etc. The question applicable 
to us - where are the best leverage points in making the D language more 
successful.


Andrei
Aug 18 2018
next sibling parent reply Jonathan Marler <johnnymarler gmail.com> writes:
On Saturday, 18 August 2018 at 13:33:43 UTC, Andrei Alexandrescu 
wrote:
 A friend recommended this article:

 http://donellameadows.org/archives/leverage-points-places-to-intervene-in-a-system/

 I found it awesome and would recommend to anyone in this 
 community. Worth a close read - no skimming, no tl;rd etc. The 
 question applicable to us - where are the best leverage points 
 in making the D language more successful.


 Andrei
In your mind, what defines the D language's level of success?
Aug 18 2018
parent reply Walter Bright <newshound2 digitalmars.com> writes:
On 8/18/2018 9:59 AM, Jonathan Marler wrote:
 In your mind, what defines the D language's level of success?
It no longer needs me or Andrei.
Aug 18 2018
next sibling parent reply Jonathan Marler <johnnymarler gmail.com> writes:
On Saturday, 18 August 2018 at 22:20:57 UTC, Walter Bright wrote:
 On 8/18/2018 9:59 AM, Jonathan Marler wrote:
 In your mind, what defines the D language's level of success?
It no longer needs me or Andrei.
Yes, I think this state would be a good indicator of success. This requires attracting developers with strong technical ability and good leadership to manage it. I think requires cultivating a community that rewards good work and encourages contribution. When I was heavily contributing, it was because of people like Seb and Mike who would review pull requests and tried to keep the flow of work moving. But many time it was quashed by other developers and eventually it didn't make sense for me to contribute anymore when dozens of hours of good work can't get through. If this doesn't change, D won't be able to keep good developers. I posed this question to Andrei because I really want to know the answer. The success of a language can mean very different things to each person. The most important aspect of D for me is its continuing progress towards stability/robustness. Though I would say that the language could be considered the best in the world with its balance of safety, performance and practicality, it is very far from perfect. In my mind, D becomes more successful as the language itself becomes better. And if D doesn't continue to improve, it will be supplanted by new languages that continue to be created at an astounding rate. Others may consider D's popularity to be the most important indicator of D's success. I think everyone would agree this is important, however, I would much rather use a good language on my own then a mediocre language with everyone else. I will also say that in order to read that article and apply it to "D's success", you most certainly need to know exactly what that means to identify what D's leverage points are. It was an interesting article. Many of the concepts were familiar and it was interesting to see them all laid out in a simple model and prioritized. Thanks for the link Andrei.
Aug 19 2018
parent rikki cattermole <rikki cattermole.co.nz> writes:
On 20/08/2018 1:51 AM, Jonathan Marler wrote:
 On Saturday, 18 August 2018 at 22:20:57 UTC, Walter Bright wrote:
 On 8/18/2018 9:59 AM, Jonathan Marler wrote:
 In your mind, what defines the D language's level of success?
It no longer needs me or Andrei.
Yes, I think this state would be a good indicator of success. This requires attracting developers with strong technical ability and good leadership to manage it. I think requires cultivating a community that rewards good work and encourages contribution. When I was heavily contributing, it was because of people like Seb and Mike who would review pull requests and tried to keep the flow of work moving.  But many time it was quashed by other developers and eventually it didn't make sense for me to contribute anymore when dozens of hours of good work can't get through.  If this doesn't change, D won't be able to keep good developers.
We need a dedicated project manager to facilitate communication and to keep PR's and issues moving. Nobody to my knowledge is taking on this role and Walter definitely isn't able to do it (which he shouldn't be doing anyway). It may be easier to ask for a company to donate somebody to fill this role than it would be to get developers from them. Either way, we need to hire somebody into this role. Because right now, we haven't got somebody who sits on the fence about issues, who's only goal is to keep everybody working together. This release of dmd should have had a fully reloadable frontend in it. But alas somebody does disagree with me on some fundamental enough points that the PR is now pretty much dead after sitting since DConf. Worse than that was it was only the beginning of the PR's required to make it happen. Point is, somebody should have either forced me to make a change that I disagreed with or had it pulled. But alas, all I see is my desire to rewrite the parser growing (bad sign).
Aug 19 2018
prev sibling parent reply John Carter <john.carter taitradio.com> writes:
On Saturday, 18 August 2018 at 22:20:57 UTC, Walter Bright wrote:
 On 8/18/2018 9:59 AM, Jonathan Marler wrote:
 In your mind, what defines the D language's level of success?
It no longer needs me or Andrei.
I think that is a pretty weak measure. Stroustrup and Matsumoto are still actively tending their babies decades later. A better measure is that "it is the language of choice for programming activity." Note the fine print there. * Choice. ie. Programmers _want_ to use it, not are constrained to use it. * For programming activity, not new projects. ie. The era of vast tracts of green field programming is long gone. We're mostly in the era tinker toys and tidying. By tinker toys I mean gluing and configuring large frameworks and packages together. While the industry does a huge amount of tinker toy development, and has massive package and dependency management tools.... we're still not Good at it. There is a big difference between "Doing a lot of" and "Being Good at". By tidying I mean refactoring legacy code that is way too large and complex to rewrite all at once. ie. A "successful" language of the 2020's is one that can "play nice" with the vast pile of legacy.
 in increasing order of effectiveness
 12. Constants, parameters, numbers (such as subsidies, taxes, 
 standards).
The cost of starting to use D.
 11. The sizes of buffers and other stabilizing stocks, relative 
 to their flows.
The size of pool of people who know of, and know D.
 10. The structure of material stocks and flows (such as 
 transport networks, population age structures).
Current projects, tools and packages using D.
 9. The lengths of delays, relative to the rate of system change.
Time to bug fix, time to answering a newbies question, time to handle and roll out a dip.
 8. The strength of negative feedback loops, relative to the 
 impacts they are trying to correct against.
The effect of bad experiences with D. Bugs in compiler and libraries.
 7. The gain around driving positive feedback loops.
The positive effects on productivity and programmer happiness in using D.
 6. The structure of information flows (who does and does not 
 have access to information).
How well does information flow from the experts to the newbies. How hard is to create and get accepted new info.
 5. The rules of the system (such as incentives, punishments, 
 constraints).
Incentives tend to be, "My change, my suggestion, my package was accepted or accepted up to a bunch of constructive feedback suggestions" Punishments tend to be rejection, especially dismissive or insulting. Constraints tend to be number of and pain due to bureaucratic hoops one has to jump through.
 4. The power to add, change, evolve, or self-organize system 
 structure.
There is a strong push to lock the language standard and standard library down solid. But this merely results in a language and language ecosystem (cough python 3) that cannot evolve. A better goal would be to provide rewrite tools that would allow the language ecosystem to evolve with the language. ie. You need a compiler that reads AND rewrites code!
 3. The goals of the system.
If the D language evolution is directed at ever smaller and less relevant corners of programming activity, yes, it will die. If it is directed and enabling and enriching ever larger portions of the programming activity, it will thrive.
 2. The mindset or paradigm out of which the system — its goals, 
 structure, rules, delays, parameters — arises.
ie. Is the mindset to create a language, or to create a language that is so compelling it will dominate the language landscape.
 1. The power to transcend paradigms.
D is fairly well positioned to take on many of the current language paradigms. This question is more about if a new one comes along, does D absorb it? Or wilt? Again I come back to that rewrite tool. How fast can you evolve the language, the standard library and the whole language ecosystem? If the answer is like, python 3, or perl, no sorry, it takes years. Or like C++, we're going to dance carefully on a head of pin for decades to avoid obsoleting anything. Then your rate of evolution will be the same as or slower than the competing languages.
Aug 19 2018
parent reply Kagamin <spam here.lot> writes:
On Monday, 20 August 2018 at 03:57:10 UTC, John Carter wrote:
 * Choice. ie. Programmers _want_ to use it, not are constrained 
 to use it.
 * For programming activity, not new projects. ie. The era of 
 vast tracts of green field programming is long gone. We're 
 mostly in the era tinker toys and tidying.
That's a matter of choice, some are tidying, but there's a lot of green field programming even in C, and new languages are all green fields.
 There is a big difference between "Doing a lot of" and "Being 
 Good at".
That's why you can't be tidying all the time, you can improve, but can't become good this way.
 By tidying I mean refactoring legacy code that is way too large 
 and complex to rewrite all at once.
Nobody is going to deep refactoring; example: C/C++ (well, you mention them too) and pretty much everything. And it's that large because it accumulated garbage and rewrite will cut it to a manageable size; example: s2n (fun fact: it's written in C, but uses slices for safety just like D).
Aug 22 2018
parent John Carter <john.carter taitradio.com> writes:
On Wednesday, 22 August 2018 at 13:17:00 UTC, Kagamin wrote:
 On Monday, 20 August 2018 at 03:57:10 UTC, John Carter wrote:
 * Choice. ie. Programmers _want_ to use it, not are 
 constrained to use it.
 * For programming activity, not new projects. ie. The era of 
 vast tracts of green field programming is long gone. We're 
 mostly in the era tinker toys and tidying.
That's a matter of choice, some are tidying, but there's a lot of green field programming even in C, and new languages are all green fields.
I suspect if you actually lean of the shoulder of the vast majority programmers earning their daily bread, they aren't writing a brand new program... they enhancing, and fixing an existing one.
 There is a big difference between "Doing a lot of" and "Being 
 Good at".
That's why you can't be tidying all the time, you can improve, but can't become good this way.
Oh, I would argue it's the best way. Or this wouldn't be funny.... http://bonkersworld.net/building-software
 By tidying I mean refactoring legacy code that is way too 
 large and complex to rewrite all at once.
Nobody is going to deep refactoring; example: C/C++ (well, you mention them too) and pretty much everything. And it's that large because it accumulated garbage and rewrite will cut it to a manageable size; example: s2n (fun fact: it's written in C, but uses slices for safety just like D).
Whenever I see a rewrite which claims it has made things so wondrously simpler / better, closer inspection reveals it does wondrously less, and supports wondrously less legacy cruft. Thus I do not believe these "experiments" have isolated the effect deleting unneeded or little used features and support for legacy platforms, vs the effect of rewriting vs refactoring.
 Nobody is going to deep refactoring
That I believe could be the paradigm shifting advantage of D. Every time I have written a refactoring or code analysis tool for C or C++, the preprocessor has amplified the complexity of my task by orders of magnitude. And every transformation I might propose.... it is incredibly hard to guarantee that it is safe and behaviour preserving, a sentiment echo'd by every optimization pass writer for C/C++.
Aug 22 2018
prev sibling next sibling parent reply Joakim <dlang joakim.fea.st> writes:
On Saturday, 18 August 2018 at 13:33:43 UTC, Andrei Alexandrescu 
wrote:
 A friend recommended this article:

 http://donellameadows.org/archives/leverage-points-places-to-intervene-in-a-system/

 I found it awesome and would recommend to anyone in this 
 community. Worth a close read - no skimming, no tl;rd etc. The 
 question applicable to us - where are the best leverage points 
 in making the D language more successful.
I read the whole thing, pretty much jibes with what I've already realized after decades of observation, but good to see it all laid out and prioritized, as Jonathan said. I thought this paragraph was particularly relevant to D: "So how do you change paradigms? Thomas Kuhn, who wrote the seminal book about the great paradigm shifts of science, has a lot to say about that. In a nutshell, you keep pointing at the anomalies and failures in the old paradigm, you keep coming yourself, and loudly and with assurance from the new one, you insert people with the new paradigm in places of public visibility and power. You don’t waste time with reactionaries; rather you work with active change agents and with the vast middle ground of people who are open-minded." This pretty much reflects what Laeeth always says about finding principals who can make their own decisions about using D. "Places of public visibility and power" for D are commercial or open-source projects that attract attention for being well done or at least popular. I'm not sure we're doing a good job of publicizing those we have though, here's a comment from the proggit thread on BBasile's recent post about writing a language in D: "I keep seeing articles telling me why D is so great, but nothing of note ever gets written in D." https://www.reddit.com/r/programming/comments/97q9sq/comment/e4b36st Of course, all he has to do is go to the front page of dlang.org and follow those links others gave him, but maybe he means something really big like google's search engine. We could probably stand to publicize D's commercial successes more. I've been trying to put together an interview blog post with Weka about their use of D, got some answers this summer, but no response in months to a follow-up question about how they got their team trained up on D. We could stand to talk more about Sociomantic, D's biggest corporate success so far, I'll put out an email to Don. Maybe Laeeth would be willing to do an interview. On the OSS front, I've sent several interview questions to Iain earlier this year about gdc, after he agreed to an interview, no responses yet. Tough to blame others for being ignorant of D's successes when we don't do enough to market it. Finally, regarding leverage, I keep pointing out that mobile has seen a resurgence of AoT-compiled native languages, but nobody seems to be trying D out in that fertile terrain, other than me.
Aug 19 2018
next sibling parent reply Mike Parker <aldacron gmail.com> writes:
On Sunday, 19 August 2018 at 18:49:53 UTC, Joakim wrote:


 they got their team trained up on D. We could stand to talk 
 more about Sociomantic, D's biggest corporate success so far, 
 I'll put out an email to Don.
I've got a series on Sociomantic in the works for the blog.
Aug 19 2018
parent reply Dave Jones <dave jones.com> writes:
On Sunday, 19 August 2018 at 19:11:03 UTC, Mike Parker wrote:
 On Sunday, 19 August 2018 at 18:49:53 UTC, Joakim wrote:


 they got their team trained up on D. We could stand to talk 
 more about Sociomantic, D's biggest corporate success so far, 
 I'll put out an email to Don.
I've got a series on Sociomantic in the works for the blog.
What you need a blog post saying the GC has been made 4x faster. Stuff like that, hey we made D much better now, not stuff about some corporate user who does targeted advertising. I'm not saying stuff like that isnt valuable, just that it's not gonna crank the faucet very much compared with stuff like "The D xml parser smokes the competition" It would also help dispel the impression that D is kindof stagnant.
Aug 19 2018
next sibling parent reply Guillaume Piolat <spam smam.org> writes:
On Sunday, 19 August 2018 at 19:52:44 UTC, Dave Jones wrote:
 Stuff like that, hey we made D much better now, not stuff about 
 some corporate user who does targeted advertising.
I'm of the complete opposite opinion. Everyone like to make money, especially more than the industry average; and we should push the narrative that using D lets you print money in unsuspecting markets (and that's really not far from the truth). In Reddit recently there was than comment: https://www.reddit.com/r/programming/comments/97q9sq/why_d_is_a_good_choice_for_writing_a_language/e4ce7kx Who wants to be the competitor getting crushed by the competition because of not using a nimbler, faster language to develop in?* Yet that sort of thing happens a hell of a lot in practice. Constant factors matters a lot when you work on high-performance software, if you can develope 30% faster for the same result then it's a huge competitive advantage.
 I'm not saying stuff like that isnt valuable, just that it's 
 not gonna crank the faucet very much compared with stuff like 
 "The D xml parser smokes the competition"
I think that doesn't really move the needle, every native programmer knows that native languages are approximately as fast and that the fastest program had more engineering hours in it. It is _possible_ to have the faster program in any (native) language, now _how long_ will it take? However if you can have something more featureful with less effort that doesn't run slower then it's appealing. Benchmarks where development time is missing just tell half the story.
Aug 19 2018
parent Dave Jones <dave jones.com> writes:
On Sunday, 19 August 2018 at 21:59:15 UTC, Guillaume Piolat wrote:
 On Sunday, 19 August 2018 at 19:52:44 UTC, Dave Jones wrote:
 I'm of the complete opposite opinion.

 Everyone like to make money, especially more than the industry 
 average; and we should push the narrative that using D lets you 
 print money in unsuspecting markets (and that's really not far 
 from the truth).
That's a hard argument to make. I mean it's a good selling point but how do you convince people that D actually does what you say it does?
 In Reddit recently there was than comment:
 https://www.reddit.com/r/programming/comments/97q9sq/why_d_is_a_good_choice_for_writing_a_language/e4ce7kx

 Who wants to be the competitor getting crushed by the 
 competition because of not using a nimbler, faster language to 
 develop in?*
 Yet that sort of thing happens a hell of a lot in practice.

 Constant factors matters a lot when you work on 
 high-performance software, if you can develope 30% faster for 
 the same result then it's a huge competitive advantage.
Yeah of course, but we're talking about blog posts, press releases, what will get people to even bother clicking on the posts to actually read them. Of course productivity is a big sell, but i think it's also important to be seen to be making progress on the language and ecosystem. And you're talking about getting non D users to click. It's not just about whats important it's about what will make people take notice.
 I think that doesn't really move the needle, every native 
 programmer knows that native languages are approximately as 
 fast and that the fastest program had more engineering hours in 
 it. It is _possible_ to have the faster program in any (native) 
 language, now _how long_ will it take?

 However if you can have something more featureful with less 
 effort that doesn't run slower then it's appealing. Benchmarks 
 where development time is missing just tell half the story.
I didn't mean to say that runtime performance is all that's important although I completely understand why it looked like that. What I'm trying to say is that to generate interest the posts or articles have to have a bit of a bang. Either show real progress, or real advantage.
Aug 19 2018
prev sibling parent reply Mike Parker <aldacron gmail.com> writes:
On Sunday, 19 August 2018 at 19:52:44 UTC, Dave Jones wrote:

 What you need a blog post saying the GC has been made 4x 
 faster. Stuff like that, hey we made D much better now, not 
 stuff about some corporate user who does targeted advertising.
If you look through the blog, you'll find posts like that. One of the most-viewed is titled, 'Find Was Too Damn Slow, So We Fixed It' [1]. There are a variety of posts that we've published. I started the series on Funkwerk last year because we needed more posts about D being used in production. But we're constantly in need of content of all types. So anyone involved in obtaining a 4% speedup in garbage collection and knows the details well enough to write about it is invited to do so.
Aug 19 2018
parent reply Dave Jones <dave jones.com> writes:
On Monday, 20 August 2018 at 03:04:30 UTC, Mike Parker wrote:
 On Sunday, 19 August 2018 at 19:52:44 UTC, Dave Jones wrote:

 What you need a blog post saying the GC has been made 4x 
 faster. Stuff like that, hey we made D much better now, not 
 stuff about some corporate user who does targeted advertising.
If you look through the blog, you'll find posts like that. One of the most-viewed is titled, 'Find Was Too Damn Slow, So We Fixed It' [1]. There are a variety of posts that we've published. I started the series on Funkwerk last year because we needed more posts about D being used in production.
Im not trying to be negative but if Nim or Rust released a blog post saying "We made find faster" is it going to get you to try them out? Is it enough of an enticement to get over you preconceptions about those languages and to think maybe they are worth a try? That's what Im trying to say. Im sure posts like that are popular within the D community but they are not going to make much headway bringing new users in. But the extension of that is that you need to have something enticing to write about and there seems to be very little happening at the moment. DPP is probably the most interesting thing happening atm.
Aug 20 2018
next sibling parent Laeeth Isharc <laeeth kaleidic.io> writes:
On Monday, 20 August 2018 at 08:31:15 UTC, Dave Jones wrote:
 On Monday, 20 August 2018 at 03:04:30 UTC, Mike Parker wrote:
 On Sunday, 19 August 2018 at 19:52:44 UTC, Dave Jones wrote:

 What you need a blog post saying the GC has been made 4x 
 faster. Stuff like that, hey we made D much better now, not 
 stuff about some corporate user who does targeted advertising.
If you look through the blog, you'll find posts like that. One of the most-viewed is titled, 'Find Was Too Damn Slow, So We Fixed It' [1]. There are a variety of posts that we've published. I started the series on Funkwerk last year because we needed more posts about D being used in production.
 Im not trying to be negative but if Nim or Rust released a blog 
 post saying "We made find faster" is it going to get you to try 
 them out?
That is the wrong question to be asking. It isn't how branding works (just because D doesn't try and manufacture an image doesn't mean that that itself doesn't create a brand). A post like that is one element in a campaign that gets across what D is like as a language and a community. I would guess many people that have no attention of trying D might read that because it's an interesting topic covered in an interesting way. By far not every post needs to be a call to action, and in fact people that try to do that become extremely annoying and get filtered out. That's an old-fashioned approach to marketing that I don't think works today.
 Is it enough of an enticement to get over you preconceptions 
 about those languages and to think maybe they are worth a try?
I think the relevant question is at the margin of activation energy - the person poised on the edge, not the representative Reddit or Hacker News poster. D is a very practical general-purpose language, and that means most users over time will be in enterprises given that I guess most code is written in enterprises (or maybe academe - and lots of academic code isn't really open-sourced even if it perhaps should be). Large enterprises aren't going to be early adopters of things they didn't create themselves. And people in SMEs have a different calculus from the representative influential person that talks publicly about technology. Have you noticed too how people that actually use D in their business don't spend much time on forums?
 That's what Im trying to say. Im sure posts like that are 
 popular within the D community but they are not going to make 
 much headway bringing new users in.
I disagree. I started using D before the blog, but it was that kind of thing that drew me in, and one way and another as a consequence more new users than me have been brought in.
 But the extension of that is that you need to have something 
 enticing to write about and there seems to be very little 
 happening at the moment. DPP is probably the most interesting 
 thing happening atm.
I think there is lots interesting happening. Dpp (No more manual writing of bindings); Android aarch64; web assembly; continuing improvements in C++ interop; Symmetry Autumn of Code; D running in Jupyter (it excites me, even if nobody else); opMove; the wrappers for D programmatically; a really quite useful betterC (you can use a lot of language and library now); betterC version of Phobos will keep growing thanks to Seb's work on testing; no-gc exceptions; DIP1000 and scope; LDC fuzzing and profile-guided optimisation; GDC moving towards inclusion in GCC finally; adoption of D in bioinformatics; other games companies following in Remedy's footsteps. I haven't even had time to follow forums or github much, but that's all just off the top of my head.
Aug 20 2018
prev sibling next sibling parent Mike Parker <aldacron gmail.com> writes:
On Monday, 20 August 2018 at 08:31:15 UTC, Dave Jones wrote:
n production.
 Im not trying to be negative but if Nim or Rust released a blog 
 post saying "We made find faster" is it going to get you to try 
 them out? Is it enough of an enticement to get over you 
 preconceptions about those languages and to think maybe they 
 are worth a try?
The majority of the page views on the blog overall come from reddit, twitter and (for the posts that are shared there) HN. That particular post generated a lot of feedback in the reddit comments, much of it positive. The same for Walter's BetterC posts. That sort of content is what people like to discuss, and when that discussion is positive it's a net win for D. Whether that specific post brought anyone in is irrelevant.It certainly influenced opinions about D to some degree. Programming languages aren't impulse buys. When you read enough thoughtful articles about a language and see enough positive discussion about it, it will be more likely to come to mind later on down the road when you're looking for something new. I'm working on another project right now that I intend to use together with the blog to continue to build that sort of capital. As for the content, separate that which I target toward the D community and that which I target outside the community. The former goes to /r/d_language and the latter to /r/programming. Invariably, the latter gets many more page views. How that translates into a conversion ratio in actually bringing people to give D a try I couldn't say. I only measure feedback in terms of page views and discussion. I'm continually learning new things about the content, from little things about how seemingly innocuous lines can set off a massive negative thread in reddit to broader concepts about what kinds of content do well with the right taglines. That influences how I write my own posts, what sort of content I'm looking for at any given moment, and how I edit posts. I'm also always on the lookout for new ideas. The type and quality of content is not a concern from my perspective. I've got a good handle on that. The bigger issue is quantity. I need more people submitting content. Period.
Aug 20 2018
prev sibling parent reply Kagamin <spam here.lot> writes:
On Monday, 20 August 2018 at 08:31:15 UTC, Dave Jones wrote:
 That's what Im trying to say. Im sure posts like that are 
 popular within the D community but they are not going to make 
 much headway bringing new users in.
We had "D parser smokes the competition" posts.
Aug 22 2018
parent JN <666total wp.pl> writes:
On Wednesday, 22 August 2018 at 13:28:37 UTC, Kagamin wrote:
 On Monday, 20 August 2018 at 08:31:15 UTC, Dave Jones wrote:
 That's what Im trying to say. Im sure posts like that are 
 popular within the D community but they are not going to make 
 much headway bringing new users in.
We had "D parser smokes the competition" posts.
Unfortunately, with all the D parsers that smoked the competition, we are mostly stuck with std.xml (dxml might changed this) and std.json, because those other projects never made it into the stdlib for one reason for another (not being 100% range based, not supporting XYZ memory allocator).
Aug 22 2018
prev sibling parent reply Laeeth Isharc <laeeth laeeth.com> writes:
On Sunday, 19 August 2018 at 18:49:53 UTC, Joakim wrote:
 On Saturday, 18 August 2018 at 13:33:43 UTC, Andrei 
 Alexandrescu wrote:
 A friend recommended this article:

 http://donellameadows.org/archives/leverage-points-places-to-intervene-in-a-system/

 I found it awesome and would recommend to anyone in this 
 community. Worth a close read - no skimming, no tl;rd etc. The 
 question applicable to us - where are the best leverage points 
 in making the D language more successful.
I read the whole thing, pretty much jibes with what I've already realized after decades of observation, but good to see it all laid out and prioritized, as Jonathan said. I thought this paragraph was particularly relevant to D: "So how do you change paradigms? Thomas Kuhn, who wrote the seminal book about the great paradigm shifts of science, has a lot to say about that. In a nutshell, you keep pointing at the anomalies and failures in the old paradigm, you keep coming yourself, and loudly and with assurance from the new one, you insert people with the new paradigm in places of public visibility and power. You don’t waste time with reactionaries; rather you work with active change agents and with the vast middle ground of people who are open-minded." This pretty much reflects what Laeeth always says about finding principals who can make their own decisions about using D. "Places of public visibility and power" for D are commercial or open-source projects that attract attention for being well done or at least popular.
Read Vilfredo Pareto on the circulation of the elites, Toynbee on the role of creative minorities, and Ibn Khaldun on civilisational cycles. There's not much point focusing on the influential and powerful people and projects of today - they have too much else going on; powerful people tend to become a bit disconnected from reality, complacent and they and hangers-on have too much vested in the status quo to change. When you have nothing, you have not much to lose, but after considerable success most people start to move to wanting to keep what they have. This doesn't bring open-mindedness to new ideas or approaches. But we live in a dynamic economy and time and the winners of tomorrow might look unremarkable today. Linus said it was just a hobby project, nothing big like Minix. Would you have thought a few German PhDs had a chance with no capital, starting amidst a bad financial crisis and using a language that was then of questionable stability and commercial viability? New things often start small, growing at the fringe where there's no competition because at that point it's not obvious to others there is even an opportunity there. It's much better to appeal to new projects or commercial projects where people are in pain and therefore open-minded because suffering will do that to you. D is a general purpose quite ambitious language so I wouldn't expect necessarily that there is a pattern by industry or sector. Probably it will be organic and grass-roots. You have one unusual person in an unusual situation who is open to trying something different. And in the beginning it might not look like much, particularly to outsiders. Note that when you start a small business it takes a long time before you hire significant numbers of people usually. Yet in the US SMEs create more than 100% of the jobs. So there is a lag between people starting to play with D and them doing a lot in it or hiring many people to work with it. Five years even isn't a long time. Perceptions also take a long time to change, but they do tend to catch up with reality eventually. When I started looking at D in 2014 it really wasn't yet ready for primetime. The compiler would crash too often for comfort, and I wasn't even trying to do anything clever. The std.algorithm docs were perfectly clear - if you had a training or sort of mind that understood formalisms. But j tried to interest one ex trader in D - he could work with Python but back then he was absolutely terrified of the Phobos documentation. It's much better today, but the reaction from past improvements is still unfolding. Little things like dpp /dtoh combined with BetterC can make a huge difference I think. Being able to incrementally replace a C codebase without having to do lots of work porting headers (and keeping them in sync) brings down cost of trying D a lot. If DPP works for C++ so you can just #include <vector> then even better but it will take some time. I am trying to persuade Atila to have possibility to just handle some types as opaque. You can always write shims for the parts of the API you need but at least this way you can #include cpp headers and get something.
 I'm not sure we're doing a good job of publicizing those we 
 have though, here's a comment from the proggit thread on 
 BBasile's recent post about writing a language in D:

 "I keep seeing articles telling me why D is so great, but 
 nothing of note ever gets written in D."
 https://www.reddit.com/r/programming/comments/97q9sq/comment/e4b36st
I don't think it matters a lot what people like that think. In aggregate yes, but as Andrei says people are looking for an excuse not to learn a new language. Somebody actually ready to try D will sooner or later come across the organisations using D page and see that the situation is a bit different. One observation - people getting work done aren't going to be in the forums much and they may not have time to spend writing blog posts. It's different for a regular business than a large tech company. So Michael plays a very valuable role in making these as easy as possible for end users to tell their story.
 We could probably stand to publicize D's commercial successes 
 more. I've been trying to put together an interview blog post 
 with Weka about their use of D, got some answers this summer, 
 but no response in months to a follow-up question about how 
 they got their team trained up on D. We could stand to talk 
 more about Sociomantic, D's biggest corporate success so far, 
 I'll put out an email to Don. Maybe Laeeth would be willing to 
 do an interview.
Sounds a good idea.
 On the OSS front, I've sent several interview questions to Iain 
 earlier this year about gdc, after he agreed to an interview, 
 no responses yet. Tough to blame others for being ignorant of 
 D's successes when we don't do enough to market it.
I think we are still in very early stages. Lots of companies in orgs using D I don't know much about. The Arabia weather channel have a YouTube on their use of D, but I don't speak Arabic. Hunt the Chinese toy company is interesting. Chinese tech scene is huge and very creative, possibly more so than the US in some ways. You might ask EMSI and also AdRoll. By early days I mean it's better to look for interesting stories where people are doing real work on a small scale with D than trying to find super impressive success stories only.
 Finally, regarding leverage, I keep pointing out that mobile 
 has seen a resurgence of AoT-compiled native languages, but 
 nobody seems to be trying D out in that fertile terrain, other 
 than me.
I did try, but it's not exactly easy to make a complete app in D, even on Android. It would be great if there were some way to automatically wrap the APIs.
Aug 19 2018
parent reply Joakim <dlang joakim.fea.st> writes:
On Monday, 20 August 2018 at 04:46:35 UTC, Laeeth Isharc wrote:
 On Sunday, 19 August 2018 at 18:49:53 UTC, Joakim wrote:
 On Saturday, 18 August 2018 at 13:33:43 UTC, Andrei 
 Alexandrescu wrote:
 A friend recommended this article:

 http://donellameadows.org/archives/leverage-points-places-to-intervene-in-a-system/

 I found it awesome and would recommend to anyone in this 
 community. Worth a close read - no skimming, no tl;rd etc. 
 The question applicable to us - where are the best leverage 
 points in making the D language more successful.
I read the whole thing, pretty much jibes with what I've already realized after decades of observation, but good to see it all laid out and prioritized, as Jonathan said. I thought this paragraph was particularly relevant to D: "So how do you change paradigms? Thomas Kuhn, who wrote the seminal book about the great paradigm shifts of science, has a lot to say about that. In a nutshell, you keep pointing at the anomalies and failures in the old paradigm, you keep coming yourself, and loudly and with assurance from the new one, you insert people with the new paradigm in places of public visibility and power. You don’t waste time with reactionaries; rather you work with active change agents and with the vast middle ground of people who are open-minded." This pretty much reflects what Laeeth always says about finding principals who can make their own decisions about using D. "Places of public visibility and power" for D are commercial or open-source projects that attract attention for being well done or at least popular.
Read Vilfredo Pareto on the circulation of the elites, Toynbee on the role of creative minorities, and Ibn Khaldun on civilisational cycles. There's not much point focusing on the influential and powerful people and projects of today - they have too much else going on; powerful people tend to become a bit disconnected from reality, complacent and they and hangers-on have too much vested in the status quo to change. When you have nothing, you have not much to lose, but after considerable success most people start to move to wanting to keep what they have. This doesn't bring open-mindedness to new ideas or approaches.
Sure, and though I've not read any of those books, where did I suggest going after the "influential and powerful?" I simply echoed your statement about going after principals who are free to make their own path, who as you've stated before are usually at startups or small projects where everything doesn't have to get past a committee.
 But we live in a dynamic economy and time and the winners of 
 tomorrow might look unremarkable today.  Linus said it was just 
 a hobby project, nothing big like Minix.  Would you have 
 thought a few German PhDs had a chance with no capital, 
 starting amidst a bad financial crisis and using a language 
 that was then of questionable stability and commercial 
 viability?
Yes, the next great kernel developer or Sociomantic is looking for the language to write their project with now. Hopefully, D will be the right choice for them.
 I'm not sure we're doing a good job of publicizing those we 
 have though, here's a comment from the proggit thread on 
 BBasile's recent post about writing a language in D:

 "I keep seeing articles telling me why D is so great, but 
 nothing of note ever gets written in D."
 https://www.reddit.com/r/programming/comments/97q9sq/comment/e4b36st
I don't think it matters a lot what people like that think. In aggregate yes, but as Andrei says people are looking for an excuse not to learn a new language. Somebody actually ready to try D will sooner or later come across the organisations using D page and see that the situation is a bit different.
Looking at his proggit comment history now, he seems exactly like the kind of intelligent, opinionated sort D should be attracting: I don't think he was looking to dismiss D. He could have looked harder, we could have marketed harder: there's blame to go around.
 I'll put out an email to Don. Maybe Laeeth would be willing to 
 do an interview.
Sounds a good idea.
Alright, I'll email you soon.
 On the OSS front, I've sent several interview questions to 
 Iain earlier this year about gdc, after he agreed to an 
 interview, no responses yet. Tough to blame others for being 
 ignorant of D's successes when we don't do enough to market it.
I think we are still in very early stages. Lots of companies in orgs using D I don't know much about. The Arabia weather channel have a YouTube on their use of D, but I don't speak Arabic. Hunt the Chinese toy company is interesting. Chinese tech scene is huge and very creative, possibly more so than the US in some ways. You might ask EMSI and also AdRoll. By early days I mean it's better to look for interesting stories where people are doing real work on a small scale with D than trying to find super impressive success stories only.
We're doing both: most of the material on the D blog and my own D interviews are not with corporate representatives. We could stand for more of the latter though, especially the big successes, because people are more influenced by them. Many devs use large corporate deployments as a litmus test of whether they should explore a new tech. To the extent that we've never published a blog post about Weka, only offhand mentions like when Andrei visited Israel, that is a big marketing failure for D. I know the Weka guys are very busy, but the further success of D will only help them too, so they're undercutting themselves by not making sure that blog post gets done.
 Finally, regarding leverage, I keep pointing out that mobile 
 has seen a resurgence of AoT-compiled native languages, but 
 nobody seems to be trying D out in that fertile terrain, other 
 than me.
I did try, but it's not exactly easy to make a complete app in D, even on Android. It would be great if there were some way to automatically wrap the APIs.
Right now, the Android port is more suited for writing some performant libraries that run as part of an existing Android app. The kind of polish you're looking for will only come with early adopters pitching in to smooth out those rough edges. On Monday, 20 August 2018 at 08:31:15 UTC, Dave Jones wrote:
 But the extension of that is that you need to have something 
 enticing to write about and there seems to be very little 
 happening at the moment. DPP is probably the most interesting 
 thing happening atm.
How about this? The latest release of ldc, 1.11, is the first one to ship with a mostly working AArch64 port, which is the most widely used CPU architecture for personal computing these days as it powers billions of mobile devices (most iOS devices and about half of Android devices). This is the culmination of years of patches worked on by core devs on the ldc and gdc teams- David, Ian, Kai, Johannes, and so on- to which I recently added the Android portions. I'm now able to write and compile D executables _on_ my 5.5" Android/AArch64 smartphone using ldc 1.11, the same device on which I'm writing this long forum post, using a bluetooth keyboard. I've kicked off a build using the Termux build scripts and will soon be submitting a pull so you can do the same on your Android phone or tablet, after running this simple command in the Termux app for Android, `apt install ldc`: https://play.google.com/store/apps/details?id=com.termux&hl=en I'll start writing up a post for the D blog about the Android port, after I edit the wiki page to show how to build for Android/AArch64 too: https://wiki.dlang.org/Build_D_for_Android
Aug 20 2018
parent reply Laeeth Isharc <laeeth kaleidic.io> writes:
On Monday, 20 August 2018 at 11:55:33 UTC, Joakim wrote:
 "So how do you change paradigms? Thomas Kuhn, who wrote the 
 seminal book about the great paradigm shifts of science, has 
 a lot to say about that. In a nutshell, you keep pointing at 
 the anomalies and failures in the old paradigm, you keep 
 coming yourself, and loudly and with assurance from the new 
 one, you insert people with the new paradigm in places of 
 public visibility and power. You don’t waste time with 
 reactionaries; rather you work with active change agents and 
 with the vast middle ground of people who are open-minded."
(Quoting from the article I think). Kuhn and Lakatos. Paradigm shifts don't take place when the dominant paradigm is defeated by logical or empirical means. Paradigm shifts take place when for some reason people say "how about we stop talking about that, and start talking about this instead". I think he described certain political changes in the Western World beginning in the mid to late 60s rather well. I don't think it describes how changes in the sphere of voluntary (non-political ie market and genuine civil society) activity unfold. Supposing it were a good idea (which it isn't), how would one be able to to insert people in places of public visibility and power who put forward a point of view that is very different from the prevailing one? Only via a program of entryism, and I don't think that in the end much good will come of that. So I think the original author has cause and effect the wrong way around (not too surprisingly because he is talking about things that relate to politics and activism). [NB one shouldn't mention the Club of Rome without mentioning what a failure their work was, and it was predictably and indeed predicted to be a failure for the exact same reasons it failed]. It isn't that you insert people representing the new paradigm in positions of influence and power. It is that people from the emerging new paradigm - which is nothing, a bunch of no-hopers, misfits and losers viewed from a conventional perspective - by virtue of the fact that it has something useful to say and has drawn highly talented people who recognise that start ever so slowly to begin things and eventually to accomplish things - still on the fringes - and over time this snowballs. After a while turns out that they are no longer on the fringes but right at the centre of things, in part because the centre has moved. The best illustration of this phenomenon was I think in a work of fiction - Neal Stephenson's Cryptonomicon. I never expected someone to write a novel based on a mailing list - the cypherpunks. It was about as surprising to me then as it would be to see Dlang - the movie - today. And of course that itself was an early indication that the ideas and ways of thinking represented by what was originally quite a small community were on the ascent.
 This pretty much reflects what Laeeth always says about 
 finding principals who can make their own decisions about 
 using D. "Places of public visibility and power" for D are 
 commercial or open-source projects that attract attention for 
 being well done or at least popular.
Well - I understand what you mean, but I don't recognise this as being my point. Principals who can make their own decisions probably aren't today highly visible and visibly powerful. The latter comes much later on in the development of a project, movement or scene and if you're visible it's a tax that takes time away from doing real work. By the time you're on the front cover of Time or The Economist, it's as often as not the beginning of the end - at least for anything vital.
 We're doing both: most of the material on the D blog and my own 
 D interviews are not with corporate representatives. We could 
 stand for more of the latter though, especially the big 
 successes, because people are more influenced by them.
I'm not saying it's a bad thing to go for big stories. But it's a mistake to place the attention people today naturally tend to. It doesn't matter what influences most people - it matters what influences the person who is poised on the edge of adopting D more widely, adopting D as a beginning, or would be if they knew of the language. The latter is quite a different sort, I think. Liran at Weka picked up D because he saw Kent Beck post on Twitter about Facebook's Warp written in D (or maybe it was a linter) and it seemed like an answer to a particular problem he had (if I am remembering correctly). It wasn't because of a grand thing - it was because of a little thing that seemed like it might be a creative solution to a real problem. Signal:noise is much higher away from the limelight too. By far better to have a high share of attention in some specific domains or interest groups than to have a low share of attention of some enormous market.
 Many devs use large corporate deployments as a litmus test of 
 whether they should explore a new tech. To the extent that 
 we've never published a blog post about Weka, only offhand 
 mentions like when Andrei visited Israel, that is a big 
 marketing failure for D.

 I know the Weka guys are very busy, but the further success of 
 D will only help them too, so they're undercutting themselves 
 by not making sure that blog post gets done.
Well, someone could just take the key insights and experiences from their talks, write them up, check with them and post. The latter are a considerable commitment already for a startup that's hitting a revenue growth phase. There are lots of things for them to be busy with beyond just the technology.
 Finally, regarding leverage, I keep pointing out that mobile 
 has seen a resurgence of AoT-compiled native languages, but 
 nobody seems to be trying D out in that fertile terrain, 
 other than me.
I did try, but it's not exactly easy to make a complete app in D, even on Android. It would be great if there were some way to automatically wrap the APIs.
Right now, the Android port is more suited for writing some performant libraries that run as part of an existing Android app. The kind of polish you're looking for will only come with early adopters pitching in to smooth out those rough edges.
If we had autowrap for JNI and could dump the types and method prototypes as part of the pre-build process, what would the next stage be to be able to just call Android APIs from D and have them work? JNI isn't that bad (I know it's deprecated) and I used it already from D in a semi-wrapped way. So I wonder how much more work it would be to have autowrap for JNI. I didn't use reflection on the Java side because I wasn't wrapping that much code. Are there XML descriptions of Android APIs you could use to generate wrappers?
Aug 20 2018
next sibling parent Laeeth Isharc <laeeth kaleidic.io> writes:
On Monday, 20 August 2018 at 12:26:25 UTC, Laeeth Isharc wrote:
 On Monday, 20 August 2018 at 11:55:33 UTC, Joakim wrote:
 Finally, regarding leverage, I keep pointing out that mobile 
 has seen a resurgence of AoT-compiled native languages, but 
 nobody seems to be trying D out in that fertile terrain, 
 other than me.
I did try, but it's not exactly easy to make a complete app in D, even on Android. It would be great if there were some way to automatically wrap the APIs.
Right now, the Android port is more suited for writing some performant libraries that run as part of an existing Android app. The kind of polish you're looking for will only come with early adopters pitching in to smooth out those rough edges.
If we had autowrap for JNI and could dump the types and method prototypes as part of the pre-build process, what would the next stage be to be able to just call Android APIs from D and have them work? JNI isn't that bad (I know it's deprecated) and I used it already from D in a semi-wrapped way. So I wonder how much more work it would be to have autowrap for JNI. I didn't use reflection on the Java side because I wasn't wrapping that much code. Are there XML descriptions of Android APIs you could use to generate wrappers?
For example, could we make something like this for D? https://github.com/opencollab/giws https://en.wikipedia.org/wiki/GIWS_(software) The above requires the user to specify the types in XML, but I guess you can dump them via reflection. I have done some work on wrapping given the types in the internal code below (which won't build by itself). It was written in a hurry and I didn't know Java, D, or JNI very well at the time: https://github.com/kaleidicassociates/import-java-d
Aug 20 2018
prev sibling parent reply Joakim <dlang joakim.fea.st> writes:
On Monday, 20 August 2018 at 12:26:25 UTC, Laeeth Isharc wrote:
 On Monday, 20 August 2018 at 11:55:33 UTC, Joakim wrote:
 "So how do you change paradigms? Thomas Kuhn, who wrote the 
 seminal book about the great paradigm shifts of science, has 
 a lot to say about that. In a nutshell, you keep pointing at 
 the anomalies and failures in the old paradigm, you keep 
 coming yourself, and loudly and with assurance from the new 
 one, you insert people with the new paradigm in places of 
 public visibility and power. You don’t waste time with 
 reactionaries; rather you work with active change agents and 
 with the vast middle ground of people who are open-minded."
(Quoting from the article I think). Kuhn and Lakatos. Paradigm shifts don't take place when the dominant paradigm is defeated by logical or empirical means. Paradigm shifts take place when for some reason people say "how about we stop talking about that, and start talking about this instead".
Not sure why you'd call that anything other than defeat. :)
 I think he described certain political changes in the Western 
 World beginning in the mid to late 60s rather well.  I don't 
 think it describes how changes in the sphere of voluntary 
 (non-political ie market and genuine civil society) activity 
 unfold.  Supposing it were a good idea (which it isn't), how 
 would one be able to to insert people in places of public 
 visibility and power who put forward a point of view that is 
 very different from the prevailing one?  Only via a program of 
 entryism, and I don't think that in the end much good will come 
 of that.
By convincing those with power/visibility that the contrary view is worth integrating? Look at Microsoft's about-face on open source over a couple decades, going from denigrating it to buying open-source producing or supporting companies like Xamarin and Github and open-sourcing several of their own projects, as an example.
 So I think the original author has cause and effect the wrong 
 way around (not too surprisingly because he is talking about 
 things that relate to politics and activism).  [NB one 
 shouldn't mention the Club of Rome without mentioning what a 
 failure their work was, and it was predictably and indeed 
 predicted to be a failure for the exact same reasons it failed].

 It isn't that you insert people representing the new paradigm 
 in positions of influence and power.

 It is that people from the emerging new paradigm - which is 
 nothing, a bunch of no-hopers, misfits and losers viewed from a 
 conventional perspective - by virtue of the fact that it has 
 something useful to say and has drawn highly talented people 
 who recognise that start ever so slowly to begin things and 
 eventually to accomplish things - still on the fringes - and 
 over time this snowballs.  After a while turns out that they 
 are no longer on the fringes but right at the centre of things, 
 in part because the centre has moved.

 The best illustration of this phenomenon was I think in a work 
 of fiction - Neal Stephenson's Cryptonomicon.  I never expected 
 someone to write a novel based on a mailing list - the 
 cypherpunks.  It was about as surprising to me then as it would 
 be to see Dlang - the movie - today.  And of course that itself 
 was an early indication that the ideas and ways of thinking 
 represented by what was originally quite a small community were 
 on the ascent.
I agree that she's looking at it from the point of view of governmental change for her environmental agenda, whereas the market is more likely to have entirely new institutions- it used be new _companies_, but with the internet it's now increasily decentralized operations like the community behind bitcoin or bit torrent... or D- form that become much more important than the old ones: creative destruction. So, significantly open-source Android replaces mostly closed Windows as the dominant OS used by most consumers for personal computing, rather than Microsoft really getting the new religion much.
 This pretty much reflects what Laeeth always says about 
 finding principals who can make their own decisions about 
 using D. "Places of public visibility and power" for D are 
 commercial or open-source projects that attract attention 
 for being well done or at least popular.
Well - I understand what you mean, but I don't recognise this as being my point. Principals who can make their own decisions probably aren't today highly visible and visibly powerful. The latter comes much later on in the development of a project, movement or scene and if you're visible it's a tax that takes time away from doing real work. By the time you're on the front cover of Time or The Economist, it's as often as not the beginning of the end - at least for anything vital.
You're misreading what she wrote: she only said that you place new people in positions where they have some visibility or power, again because of her emphasis on government change, not that you convince the already _highly_ visible/powerful to go your way. Since the former can be almost anything depending on the context, I gave examples of who that might be for D.
 We're doing both: most of the material on the D blog and my 
 own D interviews are not with corporate representatives. We 
 could stand for more of the latter though, especially the big 
 successes, because people are more influenced by them.
I'm not saying it's a bad thing to go for big stories. But it's a mistake to place the attention people today naturally tend to. It doesn't matter what influences most people - it matters what influences the person who is poised on the edge of adopting D more widely, adopting D as a beginning, or would be if they knew of the language. The latter is quite a different sort, I think.
To know about D in the first place, you might have the sort or programmer who's not going to actually use it become aware of it and mention it to the guy who would use it but never heard of it. In other words, there are different ways of getting to the people who would use D: I think this is one of the better ones, but we need to use several ways. One of the best is a track record of successful projects using the language.
 Liran at Weka picked up D because he saw Kent Beck post on 
 Twitter about Facebook's Warp written in D (or maybe it was a 
 linter) and it seemed like an answer to a particular problem he 
 had (if I am remembering correctly).  It wasn't because of a 
 grand thing - it was because of a little thing that seemed like 
 it might be a creative solution to a real problem.

 Signal:noise is much higher away from the limelight too.  By 
 far better to have a high share of attention in some specific 
 domains or interest groups than to have a low share of 
 attention of some enormous market.
Sure, we need to try several ways to attract attention.
 Many devs use large corporate deployments as a litmus test of 
 whether they should explore a new tech. To the extent that 
 we've never published a blog post about Weka, only offhand 
 mentions like when Andrei visited Israel, that is a big 
 marketing failure for D.

 I know the Weka guys are very busy, but the further success of 
 D will only help them too, so they're undercutting themselves 
 by not making sure that blog post gets done.
Well, someone could just take the key insights and experiences from their talks, write them up, check with them and post. The latter are a considerable commitment already for a startup that's hitting a revenue growth phase. There are lots of things for them to be busy with beyond just the technology.
Yeah, that could work.
 Finally, regarding leverage, I keep pointing out that mobile 
 has seen a resurgence of AoT-compiled native languages, but 
 nobody seems to be trying D out in that fertile terrain, 
 other than me.
I did try, but it's not exactly easy to make a complete app in D, even on Android. It would be great if there were some way to automatically wrap the APIs.
Right now, the Android port is more suited for writing some performant libraries that run as part of an existing Android app. The kind of polish you're looking for will only come with early adopters pitching in to smooth out those rough edges.
If we had autowrap for JNI and could dump the types and method prototypes as part of the pre-build process, what would the next stage be to be able to just call Android APIs from D and have them work? JNI isn't that bad (I know it's deprecated) and I used it already from D in a semi-wrapped way. So I wonder how much more work it would be to have autowrap for JNI. I didn't use reflection on the Java side because I wasn't wrapping that much code. Are there XML descriptions of Android APIs you could use to generate wrappers?
No idea, not something I've looked at nor plan to, as I mentioned to you in over email recently. I'd like to use mostly D with not much Java on Android, so I'm not too worried about the interface right now.
Aug 30 2018
parent Kagamin <spam here.lot> writes:
On Thursday, 30 August 2018 at 11:45:00 UTC, Joakim wrote:
 (Quoting from the article I think).

 Kuhn and Lakatos.  Paradigm shifts don't take place when the 
 dominant paradigm is defeated by logical or empirical means.  
 Paradigm shifts take place when for some reason people say 
 "how about we stop talking about that, and start talking about 
 this instead".
Not sure why you'd call that anything other than defeat. :)
FWIW, it's the point of Lakatos's work: he argues that a paradigm can't be defeated by logical or empirical means. It takes zero effort to not do anything, so status quo is easily maintained.
Aug 31 2018
prev sibling next sibling parent Mike Franklin <slavo5150 yahoo.com> writes:
On Saturday, 18 August 2018 at 13:33:43 UTC, Andrei Alexandrescu 
wrote:

 where are the best leverage points in making the D language 
 more successful.
I'm still internalizing the article and thinking about how it applies to the "D system", but I've always thought facilitating the incorporation of GDC into GCC to be the single most accelerating thing we could do to gain more adoption. It somewhat fits into *7. The gain around driving positive feedback loops*. But there's risk associated with that. Walter has often said that "build it and they will come" is a Hollywood myth, but I disagree. Part of the reason why D hasn't achieved mass adoption, isn't because it's not marketed well, but because it has a number of flaws. Most of us see the *potential* of D, and are able to look past the flaws, with the faith (hopefully not misplaced) that they will one day be addressed. Others only see the flaws and the appeal of other programming languages with more resources, better management, more talent, and especially more velocity toward their goals. I often worry that if we encourage adoption, before we have something worthy of adoption, we'll only leave users with a bad taste in their mouth [0]. I've already seen a number of people, some major contributors, leave D for greener pastures. Most of the contributors that built the D runtime and did the majority of bug fixing in the compiler are gone now. At this point in time, I can only recommend D professionally to teams that are risk takers, have the aptitude to solve their own problems, and have the resources and willingness to be D contributors. We should probably be looking more for leverage points to help us better capitalize on the resources and talent we have and bring in more. Unfortunately I'm seeing an over-correction in *8. The strength of negative feedback loops, relative to the impacts they are trying to correct against*. As we try to get contributors to focus on the things that matter (at least to the powers that be), we frustrate them until they close their pull requests or just give up [1] [2]. It took me a few years to find my "in", and I'm still not really "in", but I learned that the *little things* that some consider a distraction are how people get started contributing to D. I've often said that we actually don't need more contributors; but more reviewers. There's a catch to that, though; they're not going to become reviewers if they can't first become contributors. So perhaps, I need to correct my perspective. So, I'll close with this: We should probably be more welcoming to those willing to contribute, let them work on the little stuff that's important to them, throw them a bone or two, review their pull requests in a timely manner, etc... I think those contributors will eventually become our reviewers, and then they will eventually lessen the burden so veterans can focus on the things that they think are higher priorities. This is a positive feedback loop. Help people become positive contributors, and those contributors will eventually help the next generation. I think there are a few little things the leadership, especially, can do to prime that pump, starting with being more active, helpful, and gracious with things that are currently sitting in the PR queue. Though it's a two-way street, and some contributors could also be more cooperative also. Walter and a few others have been quite gracious to me [3] [4]. I've tried to pay that forward and help other contributors find their "in", but I'm still not able to review and make decisions about many things, so I'm only of limited help. I don't think others have been treated as well. Mike [0] - https://issues.dlang.org/show_bug.cgi?id=14100 - Link in that issue no longer exists, but let's just say the user wasn't happy with D [1] - https://github.com/dlang/dmd/pulls?q=is%3Apr+author%3Amarler8997+is%3Aclosed [2] - https://github.com/dlang/dmd/pull/8378 [3] - https://github.com/dlang/dmd/pull/7395#issuecomment-349200847 [4] - https://github.com/dlang/dmd/pull/7055#issuecomment-320006283
Aug 22 2018
prev sibling parent reply Jonathan Marler <johnnymarler gmail.com> writes:
On Saturday, 18 August 2018 at 13:33:43 UTC, Andrei Alexandrescu 
wrote:
 A friend recommended this article:

 http://donellameadows.org/archives/leverage-points-places-to-intervene-in-a-system/

 I found it awesome and would recommend to anyone in this 
 community. Worth a close read - no skimming, no tl;rd etc. The 
 question applicable to us - where are the best leverage points 
 in making the D language more successful.


 Andrei
I don't have much influence on the first 4 types of "leverage points" in D, but I have a suggestion for a new "rule of the system" (5th most important type of leverage point). Require reviews from any user before merging their pull requests. There's a number of ways you could implement the requirement, maybe every PR that a user creates needs to have at least 1 review of another PR associated with it. You could require more or less reviews depending on the size of the PR queue. You could also look at developer's "review to pull request" ratio. Just to get an idea, I wrote a script to calculate some of this data (github.com/marler8997/githubstats). Here's the data for dmd, sorted by review to pr ratio: user review/pr reviews open_prs merged_prs closed_prs ZombineDev 25 250 0 7 3 stefan-koch-sociomantic 19.5 39 0 2 0 andralex 17.95833333 431 0 17 7 jacob-carlborg 16.18 809 2 41 7 kubasz 12 12 1 0 0 dkgroot 9 18 0 2 0 trikko 8 8 1 0 0 timotheecour 6.5 65 0 3 7 iain-buclaw-sociomantic 6 6 0 1 0 majiang 6 6 0 1 0 JinShil 5.858895706 955 6 129 28 TurkeyMan 5.529411765 94 1 15 1 thewilsonator 5.111111111 46 2 6 1 Geod24 4.5 117 6 15 5 marler8997 4.155172414 241 0 30 28 dmdw64 4 4 0 1 0 leitimmel 4 4 0 1 0 schveiguy 3.833333333 23 0 5 1 atilaneves 3.727272727 41 1 7 3 DmitryOlshansky 3.166666667 19 1 2 3 tgehr 3.111111111 56 1 16 1 wilzbach 2.946428571 990 25 250 61 FeepingCreature 2.9 29 3 6 1 mathias-lang-sociomantic 2.846153846 111 0 30 9 belm0 2.666666667 8 0 2 1 n8sh 2.5 5 1 1 0 dgileadi 2.5 10 1 2 1 UplinkCoder 2.186813187 199 3 52 36 rikkimax 2 6 1 0 2 EyalIO 2 2 0 1 0 MoritzMaxeiner 2 2 1 0 0 rtbo 2 2 0 1 0 belka-ew 2 2 0 1 0 RazvanN7 1.893333333 284 8 116 26 ntrel 1.846153846 48 2 21 3 nemanja-boric-sociomantic 1.8 9 0 3 2 MetaLang 1.8 9 0 3 2 joakim-noah 1.571428571 11 1 4 2 Darredevil 1.5 3 0 1 1 skl131313 1.5 9 1 3 2 JackStouffer 1.5 3 0 2 0 arBmind 1.5 3 0 1 1 CyberShadow 1.474576271 87 0 53 6 BBasile 1.36 34 0 11 14 Burgos 1.333333333 4 0 3 0 ibuclaw 1.32967033 484 15 293 56 klickverbot 1.327586207 77 0 53 5 kinke 1.186046512 51 1 37 5 quickfur 1.09375 35 0 25 7 don-clugston-sociomantic 1 1 0 0 1 tsbockman 1 5 1 2 2 rainers 0.9832635983 235 5 221 13 WalterBright 0.796728972 1364 15 1607 90 JohanEngelen 0.7575757576 25 0 22 11 John-Colvin 0.75 3 1 2 1 Biotronic 0.75 3 1 1 2 adamdruppe 0.7333333333 11 2 8 5 yshui 0.6666666667 4 0 5 1 mihails-strasuns 0.6086956522 14 0 12 11 mihails-strasuns-sociomantic 0.5 10 0 19 1 Syniurge 0.5 1 0 1 1 aG0aep6G 0.4666666667 7 0 13 2 MartinNowak 0.4323308271 230 8 458 66 LemonBoy 0.431372549 22 7 27 17 LightBender 0.4 2 0 2 3 IgorStepanov 0.3714285714 13 2 22 11 somzzz 0.3684210526 7 0 12 7 yazd 0.3333333333 1 0 3 0 jmdavis 0.3 3 1 6 3 Ingrater 0.2857142857 4 0 12 2 jpf91 0.1904761905 4 0 12 9 nordlow 0.1818181818 2 0 7 4 WalterWaldron 0.1666666667 1 0 6 0 leandro-lucarella-sociomantic 0.15 6 0 31 9 denis-sh 0.1428571429 1 0 6 1 yebblies 0.05793742758 50 5 767 91 braddr 0.05309734513 6 0 102 11 donc 0 0 0 253 17 michelf 0 0 0 4 3 complexmath 0 0 0 5 3 9rnsr 0 0 14 1861 140 Govelius 0 0 0 13 2 wolfwood 0 0 0 2 0 jnschulze 0 0 0 1 0 rawler 0 0 0 0 1 torarin 0 0 0 0 1 mrmonday 0 0 0 4 1 kennytm 0 0 0 20 11 <unknown> 0 0 0 151 71 Poita 0 0 0 4 0 ckamm 0 0 0 3 0 Marenz 0 0 0 0 1 mleise 0 0 0 2 1 dsimcha 0 0 0 3 0 Abscissa 0 0 0 4 1 alexrp 0 0 0 13 10 llucax 0 0 0 15 4 revellian 0 0 0 0 1 timesqueezer 0 0 0 1 0 jcd 0 0 0 0 3 Trass3r 0 0 0 3 5 ohjames 0 0 0 1 0 carlor 0 0 0 3 1 venix1 0 0 0 0 1 wrzoski 0 0 0 0 1 Safety0ff 0 0 0 8 2 bhelyer 0 0 0 1 0 brad-anderson 0 0 0 14 2 p0nce 0 0 0 2 0 NilsBossung 0 0 0 2 2 chadjoan 0 0 0 0 1 ricochet1k 0 0 0 1 1 redstar 0 0 2 37 6 asterite 0 0 0 1 0 dheld 0 0 0 8 0 jmaschme 0 0 0 0 3 biozic 0 0 0 1 0 repeatedly 0 0 0 1 0 edmccard 0 0 0 1 1 jkm 0 0 0 0 1 pszturmaj 0 0 0 1 0 shoo 0 0 0 1 1 ony 0 0 0 1 1 jholewinski 0 0 0 1 0 bioinfornatics 0 0 0 1 0 monarchdodra 0 0 0 3 0 dsagal 0 0 0 1 0 jkrempus 0 0 0 1 1 sgraf812 0 0 0 1 0 glycerine 0 0 0 0 3 eskimor 0 0 0 2 1 lionello 0 0 0 15 10 hpohl 0 0 1 51 22 jordisayol 0 0 0 0 1 huhlig 0 0 0 1 0 AlexeyProkhin 0 0 0 1 1 Numpsy 0 0 0 1 0 atlant2011 0 0 0 1 0 Kapps 0 0 0 2 0 elvisxzhou 0 0 0 1 0 WebDrake 0 0 0 1 1 Dgame 0 0 0 0 3 AndrewEdwards 0 0 0 7 2 D8174 0 0 0 1 0 schuetzm 0 0 0 5 4 nazriel 0 0 0 1 0 yglukhov 0 0 0 2 2 Yoplitein 0 0 0 1 0 Orvid 0 0 0 9 3 andron 0 0 0 6 1 SSPkrolik 0 0 0 1 0 MasonMcGill 0 0 0 0 1 qchikara 0 0 0 4 0 Hackerpilot 0 0 0 2 1 damianday 0 0 0 0 1 dcarp 0 0 0 1 0 jasonbking 0 0 0 3 0 jcrapuchettes 0 0 0 1 0 teufelsmangagirl 0 0 0 0 2 ltcmelo 0 0 0 1 0 dragoon2014 0 0 0 1 0 jamestn 0 0 0 1 0 9il 0 0 0 4 3 etcimon 0 0 0 3 1 tramker 0 0 0 7 4 asuhan 0 0 0 0 1 Temtaime 0 0 0 1 2 gchatelet 0 0 0 5 2 deadalnix 0 0 0 1 1 cqexbesd 0 0 0 2 0 smolt 0 0 0 6 1 legrosbuffle 0 0 0 4 1 davispuh 0 0 0 1 1 Kozzi11 0 0 1 6 0 burner 0 0 0 1 1 Rajeep 0 0 0 0 1 dsp 0 0 0 1 2 luismarques 0 0 0 6 1 andrej-mitrovic-sociomantic 0 0 0 1 0 AndrejMitrovic 0 0 1 7 3 Cauterite 0 0 0 3 5 TheDharc 0 0 0 0 1 flaviommedeiros 0 0 0 1 1 TungstenHeart 0 0 1 0 0 blm768 0 0 1 0 0 landaire 0 0 0 2 0 Computermatronic 0 0 0 0 1 joakim-brannstrom 0 0 0 1 0 alphaKAI 0 0 0 1 0 rjmcguire 0 0 1 0 0 calexHG 0 0 0 2 0 Passw 0 0 0 3 0 Pursche 0 0 0 1 0 stevepeak 0 0 0 1 0 Jebbs 0 0 0 1 0 NVolcz 0 0 0 1 0 ahmetsait 0 0 0 0 1 andrey-zherikov 0 0 0 1 0 GooberMan 0 0 0 1 0 dhasenan 0 0 0 0 2 mathias-baumann-sociomantic 0 0 0 1 1 MaskRay 0 0 0 1 0 epi 0 0 0 1 0 e-y-e 0 0 0 1 0 e10s 0 0 0 2 1 dukc 0 0 0 0 1 ka7 0 0 0 2 0 DrInfiniteExplorer 0 0 1 0 0 s-ludwig 0 3 0 0 0 nrTQgc 0 0 0 1 0 zachthemystic 0 0 0 1 0 MikeWey 0 2 0 0 0 ReneZwanenburg 0 2 0 0 0 veelo 0 2 0 0 0 jll63 0 0 0 1 0 nmtigor 0 0 0 1 0 dunkyp 0 0 0 2 0 jercaianu 0 0 0 1 0 carun 0 2 0 0 0 monkeywithacupcake 0 0 0 0 1 bausshf 0 1 0 0 0 gautam-kotian-sociomantic 0 1 0 0 0 lgvz 0 0 0 1 0 kubo39 0 0 2 3 1 GabyForceQ 0 0 0 1 0 aliak00 0 1 0 0 0 gapdan 0 0 0 1 0
Aug 23 2018
parent Bastiaan Veelo <Bastiaan Veelo.net> writes:
On Friday, 24 August 2018 at 03:06:40 UTC, Jonathan Marler wrote:
 I don't have much influence on the first 4 types of "leverage 
 points" in D, but I have a suggestion for a new "rule of the 
 system" (5th most important type of leverage point).  Require 
 reviews from any user before merging their pull requests.  
 There's a number of ways you could implement the requirement, 
 maybe every PR that a user creates needs to have at least 1 
 review of another PR associated with it.  You could require 
 more or less reviews depending on the size of the PR queue.  
 You could also look at developer's "review to pull request" 
 ratio.
Interesting idea.
 Just to get an idea, I wrote a script to calculate some of this 
 data (github.com/marler8997/githubstats).  Here's the data for 
 dmd, sorted by review to pr ratio:
[…] Interesting data as well. Seeing that relatively few have a review/pr ratio > 1, you may be onto something. (The list seems to have an issue with ordering though, for those that reviewed without having PRs. Attributing them a ratio of > 1 would be fairer than 0).
Aug 26 2018