Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

reggae phobos build triggering autotester #4194

Closed
wants to merge 19 commits into from

Conversation

atilaneves
Copy link
Contributor

This isn't a real PR, please disconsider. It only exists to trigger the autotester

@atilaneves atilaneves force-pushed the reggae_autotester branch 4 times, most recently from 2b5fd17 to 5588936 Compare April 14, 2016 09:04
@atilaneves atilaneves changed the title reggae-generated makefile autotester reggae phobos build triggering autotester Apr 14, 2016
@wilzbach
Copy link
Member

Ping @atilaneves - did you get it to work?

@atilaneves
Copy link
Contributor Author

No, I couldn't find a working dmd on the autotester machine to build and bootstrap reggae.

@DmitryOlshansky
Copy link
Member

No, I couldn't find a working dmd on the autotester machine to build and bootstrap reggae.

Wouldn't ENV['DMD'] be it?

@atilaneves atilaneves force-pushed the reggae_autotester branch 2 times, most recently from 602c70a to 3f07df0 Compare April 26, 2016 20:14
@atilaneves
Copy link
Contributor Author

$DMD points to ../dmd/src/dmd, which doesn't have a standard library built yet. I meant a working dmd installation.

@yebblies
Copy link
Member

HOST_DC gives the path to the installed compiler, although it might only be set during DMD builds.

@atilaneves
Copy link
Contributor Author

Yeah, from my last attempt, HOST_DC wasn't set

@wilzbach
Copy link
Member

Yeah, from my last attempt, HOST_DC wasn't set

what about downloading the dmd compiler then?

Linux/MacOS

curl -fsSL --retry 3 "http://downloads.dlang.org/releases/2.x/$DMD/dmd.$DMD.linux.tar.xz" | tar -C ~ -Jxf -
dmd --version

Window:
https://github.com/dlang/installer/blob/master/bootstrap/bootstrap-dmd.bat

@atilaneves atilaneves force-pushed the reggae_autotester branch 2 times, most recently from 08067de to d8b2507 Compare May 4, 2016 10:24
@wilzbach
Copy link
Member

wilzbach commented May 6, 2016

@atilaneves what were the result of your informal poll yesterday?

@atilaneves
Copy link
Contributor Author

@wilzbach The poll result was 20 in favour of getting rid of the Makefiles, 10 didn't care, 3 liked them as they are.

@wilzbach
Copy link
Member

wilzbach commented May 9, 2016

@atilaneves wow 20 vs 3 is an 86% majority. Did you by chance also ask Walter or Andrei?
What do other people think about this topic? Would a public poll on the newsgroup be the best way to go?

@JackStouffer
Copy link
Member

@wilzbach Makefiles are a DSL and no one wants to maintain them (how many times have people forgot to update the win32 file). Replacing it with D is a good in and of itself.

I don't think a poll need at this point.

@wilzbach
Copy link
Member

wilzbach commented May 9, 2016

@wilzbach Makefiles are a DSL and no one wants to maintain them (how many times have people forgot to update the win32 file). Replacing it with D is a good in and of itself.

I fully agree, it just felt that we need to show @atilaneves that once reggae is ready, we are willing to replace the makefiles.

The main issue isn't technical, it's getting Andrei and Walter on board. If
they'd given the green light it'd've been done last year.

atilaneves/reggae#20

@atilaneves
Copy link
Contributor Author

... And the autotester is green. Now I can really start playing

@wilzbach
Copy link
Member

Hmm unfortunately this seemed to have gone stalled, so I will close this with regrets :/
@atilaneves: I really don't like the Windows Makefiles and I do encourage you to restart the discussion about replacing them.

@wilzbach wilzbach closed this Dec 26, 2016
@atilaneves
Copy link
Contributor Author

@wilzbach I don't like any of the Makefiles, but I don't know what else I can do at this point.

@joakim-noah
Copy link
Contributor

Why isn't this "a clear net benefit?" As for what else can be done, how about taking out the reggae source and any changes to the makefiles and just submitting the reggaefile alone, for use by those who have reggae and would rather use it? It was not clear this pull was ever actually submitted, as you kept saying you were working on it.

@atilaneves
Copy link
Contributor Author

IMHO it is a clear net benefit. But not enough interest was generated, so...

@joakim-noah
Copy link
Contributor

OK, because you said a couple comments up that you didn't think it was.

@wilzbach and @CyberShadow, what do you think about just merging the reggaefile alone, as I suggested above, so those who want to use reggae can try building Phobos regularly with it?

I'll note that I'm not sold that a build script written in D is the best syntax, but it's certainly better than Make for a D project. If it's in the repo, we can experiment with actually using and modifying it and decide whether to use it more based on some experience with how well it works for a large D project.

@wilzbach
Copy link
Member

@wilzbach and @CyberShadow, what do you think about just merging the reggaefile alone, as I suggested above, so those who want to use reggae can try building Phobos regularly with it?

First of all - I (and I think @CyberShadow as well) are deeply unhappy about the current Makefile situation. We invest a ton of time in maintaining them across all repos, especially dlang.org is a real PITA (-> just have a look at the history of dlang.org's posix.mak - and this is with dropped support for Windows).

-> I'm absolutely pro dropping the win{32,64}.mak and reducing the Makefile bloat.

I'll note that I'm not sold that a build script written in D is the best syntax, but it's certainly better than Make for a D project.

Hmm, I think no one (except @atilaneves) is 100% convinced that reggae is the best replacement.
While being ugly, Makefiles have the advantage that Make is nearly universally known and usually pre-installed on Posix systems.
However, without giving reggae a shot, we won't know. So I would be in favor of merging the reggaefile.d to give it a try for a few months. Maybe with even a reggae target at the Makefile to make it easy for people to boostrap reggae?
OTOH it only makes sense to go forward with this if there's a potential future in which we can drop the Makefiles...

@CyberShadow what's your take on this?

@CyberShadow
Copy link
Member

Why isn't this "a clear net benefit?"

There is some discussion in a thread from two weeks ago:
http://forum.dlang.org/post/mailman.3317.1497594616.31550.digitalmars-d@puremagic.com

@wilzbach and @CyberShadow, what do you think about just merging the reggaefile alone, as I suggested above, so those who want to use reggae can try building Phobos regularly with it?

Well, I'm not really sure what the benefit of that would be.

For one thing, without some sort of CI or such, the reggaefile is going to be maintained only by people who use reggae regularly to build Phobos, and that's probably not going to be many people. So, it will often be outdated. At this point, the question is why even keep it in this repository? A separate repository which contains the reggaefile to build Phobos seems like it would work better and be completely uncontroversial.

The other thing is that I'm not really clear how useful this is when you still must use Make to build dmd and druntime.

@joakim-noah
Copy link
Contributor

So, it will often be outdated. At this point, the question is why even keep it in this repository?

I've been over this in the forum thread you linked: to try it out.

A separate repository which contains the reggaefile to build Phobos seems like it would work better and be completely uncontroversial.

I don't see why it would be "controversial" to add a build script for another build system, with a note that it's not the main one and to ping Atila or some other maintainer if it's not up to date.

Either way, can you put this online elsewhere, Atila? For example, reggae is notoriously missing good examples of reggae files, especially a big one like this that doesn't do everything at compile-time.

@atilaneves
Copy link
Contributor Author

@joakim-noah I could put this online somewhere but it probably won't build anymore (who knows) so I don't know what the point would be. It's not like the diff isn't visible here, so...

And as much as I wouldn't like this to be controversial, it apparently is.

@joakim-noah
Copy link
Contributor

Nobody using reggae is ever going to find this diff. The point is that reggae has very little docs or worthwhile examples. I know because I actually spent hours trying to build my Android samples with reggae, and when I needed an example reggae file that used environment variables, you pointed me at this one, because nothing in your reggae repo does that.

From your vote listed earlier, this pull doesn't sound very controversial. It sounds more like a very small minority is pulling rank because they're used to the outdated default build system and are blocking any potential change to minimize their own discomfort, at the cost of the project.

It doesn't affect me much as I haven't built these dlang repos in a year or two: I only work with ldc and its CMake build system, which is marginally better. I'm only pushing this because I think it will help the project, it does nothing for me.

@DmitryOlshansky
Copy link
Member

@atilaneves Please don't give up on this. If the leadership fails to recognize how bad our build system is it doesn't mean the rest should suffer.
I'd say it's doubly important to keep pushing because statusquo propenents are so deeply entrenched.

@CyberShadow
Copy link
Member

It sounds more like a very small minority is pulling rank because they're used to the outdated default build system and are blocking any potential change to minimize their own discomfort, at the cost of the project.

What the hell. I sure hope that wasn't directed at me, because I'm one of the loudest to complain about the current state of the build system.

But, listen: dropping an incomplete, under-documented, unmaintained "replacement" in our lap is not a solution. Dividing people into camps does not help anyone. We're all on the same side, OK? There are no ranks in @dlang other than BDFL and contributor.

Any build system replacement is going to require work, lots of it. A proposal is not enough - commitment is mandatory. If someone runs into a problem with reggae, do you expect them to drop what they're doing and fix the reggae bug? If they're dealing with the build system, they're likely already two or three problems deep. Any highly-utilized piece of code in our repos needs an "owner" / maintainer who can address issues when they appear, and when it's something as important as the build system, you can bet there's going to be lots of them.

Finally, almost nothing is going to get in simply by being proposed - someone needs to keep pushing it all the way until it's in. This isn't some "unfair harsh truth", but a simple consequence that almost everyone here is a volunteer, and just because you have a problem doesn't mean that anyone else has to care about it. In this particular case, I do care about this, but definitely not to the point where I am going to single-handedly undertake all the effort of maintaining reggae, all reggae files in all repos, all the support issues that are going to appear with regards to using reggae, pushing reggae to be accepted by BDFLs, and all the running around in between. I'm certain that the only way this has a chance of moving forward is as a collaboration between reggae's maintainer (@atilaneves or anyone willing to step up to the position) and people maintaining D's build infrastructure (essentially Martin, Sebastian, and myself). I've attempted to open a dialogue in this direction in the above-linked forum thread, and what's the result? Grumbling about rank elitism and status-quo entrenchment in GitHub comments.

So, let's talk. And no pro/anti-makefile/reggae-ism please, but purely finding what's best for D.

@joakim-noah
Copy link
Contributor

What the hell. I sure hope that wasn't directed at me, because I'm one of the loudest to complain about the current state of the build system.

I know, I've read that thread a couple times, long before you linked me to it above. You seemed open to change, but I agree with Russel that saying we need a big bang change to all dlang repos to even consider a new build system is excessive.

But, listen: dropping an incomplete, under-documented, unmaintained "replacement" in our lap is not a solution.

What does it matter, since I've repeatedly said it doesn't have to be a "replacement" right away? In fact, that should not be the goal. The only way we're ever going to move off Make is by experimenting with alternatives and seeing what sticks. I suggested a whole scheme in that thread to Walter, where we could let in some experimental build scripts, with no guarantees of maintenance, and see what happens. It could be nothing we try will prove better than Make, but my suggestion was met with silence.

Since then, others keep repeating the false premise that an experimental build script would need to be complete or maintained, when the whole point of experimenting is to see if it would be maintained by people who like it enough.

Dividing people into camps does not help anyone. We're all on the same side, OK? There are no ranks in @dlang other than BDFL and contributor.

The vote for keeping Make was 3 out of 33, it is ridiculous that we're even talking about not experimenting with other build systems given that vote. The only reason I can think of is someone with rank obstructing this.

Any build system replacement is going to require work, lots of it. A proposal is not enough - commitment is mandatory. If someone runs into a problem with reggae, do you expect them to drop what they're doing and fix the reggae bug? If they're dealing with the build system, they're likely already two or three problems deep. Any highly-utilized piece of code in our repos needs an "owner" / maintainer who can address issues when they appear, and when it's something as important as the build system, you can bet there's going to be lots of them.

Experimental build scripts in the repo require none of this overhead. I'll point you at my suggestion to Walter in the the thread you linked, rather than repeating myself while you keep raising objections that I already addressed a couple weeks ago.

Finally, almost nothing is going to get in simply by being proposed - someone needs to keep pushing it all the way until it's in. This isn't some "unfair harsh truth", but a simple consequence that almost everyone here is a volunteer, and just because you have a problem doesn't mean that anyone else has to care about it. In this particular case, I do care about this, but definitely not to the point where I am going to single-handedly undertake all the effort of maintaining reggae, all reggae files in all repos, all the support issues that are going to appear with regards to using reggae, pushing reggae to be accepted by BDFLs, and all the running around in between. I'm certain that the only way this has a chance of moving forward is as a collaboration between reggae's maintainer (@atilaneves or anyone willing to step up to the position) and people maintaining D's build infrastructure (essentially Martin, Sebastian, and myself).

I'm not proposing switching from Make now, only experimenting by accepting some alternate, non-default build scripts in the official repo, so Phobos users can discover and play with them. Maybe we'll find that none are better than Make.

That would require no effort from you or anybody other than the reggae/Meson proponents, yet it's met either with silence or with repeated protestations of too much work for the contributors, ignoring that these build scripts would be experimental. If their proponents don't maintain them much and they don't gain a champion who does, you simply remove them some day, as I said in the forum post.

I've attempted to open a dialogue in this direction in the above-linked forum thread, and what's the result? Grumbling about rank elitism and status-quo entrenchment in GitHub comments.

I agree that you gave a nice overview of what would be necessary to switch over to a new build system someday. Yet, you and Walter have ignored all suggestions of experimentation. I find this weird, given the overwhelming majority who wants to ditch Make or doesn't care if we do. Maybe my concept of experimentally accepting some unmaintained build scripts hasn't been understood, or maybe someone is blocking the will of the vast majority of the D voters.

I can't know which it is, but an objective outsider would find the latter plausible.

So, let's talk. And no pro/anti-makefile/reggae-ism please, but purely finding what's best for D.

I'm not pro-anything, I noted that the reggae syntax is probably suboptimal. But I'll take suboptimal over horrible, which is what I think of Make. Either way, I just want to run an experiment, one that will have no effect on Phobos contributors who ignore it. I wonder who doesn't want to run that experiment and why.

@CyberShadow
Copy link
Member

The only way we're ever going to move off Make is by experimenting with alternatives and seeing what sticks. I suggested a whole scheme in that thread to Walter, where we could let in some experimental build scripts, with no guarantees of maintenance, and see what happens.

Where I agree with you: any potential replacement will need to go through a trial (experimental, if you will) stage and used along-side the current one.

Where I disagree: anything that relies on "seeing what's going to happen" is doomed to fail. Unless there is commitment and critical mass behind a proposal, consensus from all sides that this is something that we may want to move forward with one day, or if it's not even clear that it satisfies the technical requirements, then the whole thing is pointless and just a waste of everyone's time.

Since then, others keep repeating the false premise that an experimental build script would need to be complete or maintained, when the whole point of experimenting is to see if it would be maintained by people who like it enough.

The very notion of "people who like it enough" relies on the uncertain assumption that this group exists, will continue to exist, and is big enough to keep the project going. It's not enough.

The vote for keeping Make was 3 out of 33,

What vote, was it an anonymous Internet poll? A vote could mean anything from "I deal with Make problems every day and I'm sick and tired of it" to "I never touched a D makefile in my life, but Make is old and stinky, meson/reggae/etc. is new and shiny, therefore it is better". They will not convince anyone. What we need is user stories of how Make is making their lives difficult and proposals of how potential replacements will deal with them.

it is ridiculous that we're even talking about not experimenting with other build systems given that vote.

We are talking about it right now. Here's what I don't understand, though: why do you think it's so important that it's in the official repository? What's stopping anyone from maintaining a fork/branch that includes the reggaefile (such as this pull request), or a separate repository with just the build scripts? And why are you so focused on its inclusion here when we haven't even begun to discuss the technical merits of reggae? It seems like a failure of priorities.

Experimental build scripts in the repo require none of this overhead.

Experimental build scripts in the official repository are pointless unless they are backed by the ultimate goal of replacing Make, and that in turn requires commitment.

or maybe someone is blocking the will of the vast majority of the D voters.

OK... do you honestly think that satisfying the whims of an Internet vote is more important than carefully discussing the problems at hand and finding the best solution? If so, I might as well give up any hope of reason.

But I'll take suboptimal over horrible, which is what I think of Make. Either way, I just want to run an experiment, one that will have no effect on Phobos contributors who ignore it. I wonder who doesn't want to run that experiment and why.

If you don't want to discuss things in a constructive manner, then I see no point in wasting my time on this.

Final attempt to salvage this discussion:

Why do you find Make horrible, and how does reggae address it?

@joakim-noah
Copy link
Contributor

Where I disagree: anything that relies on "seeing what's going to happen" is doomed to fail. Unless there is commitment and critical mass behind a proposal, consensus from all sides that this is something that we may want to move forward with one day, or if it's not even clear that it satisfies the technical requirements, then the whole thing is pointless and just a waste of everyone's time.

No, you've got this all wrong. Experimental build scripts require no consensus, just a bare minimum of workability, which this reggae file passes. You put a bunch of experimental build scripts alongside Make, let contributors play with them and then see what consensus develops. The whole point of running an experiment is to form a consensus someday: asking for consensus before accepting anything even as an experiment temporarily is doomed to a veto by ignorance, from those who never used it.

The very notion of "people who like it enough" relies on the uncertain assumption that this group exists, will continue to exist, and is big enough to keep the project going. It's not enough.

The point of an experiment is to see if such a group exists. You don't know the answer and neither do I, that's why you run an experiment.

What vote, was it an anonymous Internet poll? A vote could mean anything from "I deal with Make problems every day and I'm sick and tired of it" to "I never touched a D makefile in my life, but Make is old and stinky, meson/reggae/etc. is new and shiny, therefore it is better". They will not convince anyone. What we need is user stories of how Make is making their lives difficult and proposals of how potential replacements will deal with them.

I don't know where the vote was taken, Atila will have to fill us in. As for user stories, we have two right here in this thread, from you and Seb.

We are talking about it right now. Here's what I don't understand, though: why do you think it's so important that it's in the official repository? What's stopping anyone from maintaining a fork/branch that includes the reggaefile (such as this pull request), or a separate repository with just the build scripts? And why are you so focused on its inclusion here when we haven't even begun to discuss the technical merits of reggae? It seems like a failure of priorities.

Why are you so focused on experimental build scripts not being in Phobos? Obviously no Phobos contributor will ever find some random reggae fork somewhere, or care if the official repo is not experimenting with it. The idea is to put some Make replacements in front of them and see what they like the best. They may still like Make the best, I don't know.

You keep raising the bar of "discussing the technical merits" of an experiment. We could discuss some of that beforehand, but you will never know as much as after trying and experimenting with a technology. There is no point in discussing much about an experiment beforehand, because even if reggae or Meson is missing some features, if we like it enough otherwise, we could fill those in.

Experimental build scripts in the official repository are pointless unless they are backed by the ultimate goal of replacing Make, and that in turn requires commitment.

Obviously the ultimate goal is to replace Make, but I disagree that commitment is required now. We are running the experiment to see if the commitment is there.

OK... do you honestly think that satisfying the whims of an Internet vote is more important than carefully discussing the problems at hand and finding the best solution? If so, I might as well give up any hope of reason.

You keep coming back to discussing a solution, when the solution is almost always found by experimentation, not by design. The time to discuss is after the experiment, not before we even run it.

But I'll take suboptimal over horrible, which is what I think of Make. Either way, I just want to run an experiment, one that will have no effect on Phobos contributors who ignore it. I wonder who doesn't want to run that experiment and why.

If you don't want to discuss things in a constructive manner, then I see no point in wasting my time on this.

I don't know what you don't find "constructive" there: I honestly find it ridiculous that I'm having to justify an experiment with alternate build scripts so much, given the overwhelming desire for a change and basically no one in favor of the status quo.

Why do you find Make horrible, and how does reggae address it?

Make's syntax issues are well known, and reggae being D obviously is somewhat better. But I'm not going to discuss this, because this is not the time to do it. You run an experiment with all comers, keep an open mind, and see what works out best. Your notion that we're going to pass each build system option through a heavy filter of technical debate before we even experiment with it is all wrong.

@CyberShadow
Copy link
Member

The point of an experiment is to see if such a group exists. [...] We are running the experiment to see if the commitment is there.

Err. If you need to run an experiment to find these things out, I'm pretty sure I can tell you the answer right now.

Why are you so focused on experimental build scripts not being in Phobos?

Because a pointless addition is just junk. Why would I not be against adding junk to the official repos?

I honestly find it ridiculous that I'm having to justify an experiment with alternate build scripts so much

I think this whole argument stems from some confusion in how development happens here (and not just). There is this misconception that once something gets accepted, the maintainers will thereon take care of it and it will never bit-rot. There is also another misconception that just because something is written in D, it will get preferential treatment and everyone will want to improve it. There is a third misconception, that putting a project in the spotlight will automatically attract more contributors.

We have plenty experience that show that all of the above are just not true. Dogfooding only works either if you're the software's author or the author is around and can fix issues promptly. If a tool is broken, reaching for another tool is almost always going to be simpler that trying to fix the first tool.

So, to me it seems pretty obvious that without some commitment (and not just some hand-wavy "merge it and they will come"), any proposal is a non-starter. But if you still think that I'm wrong or my experience is irrelevant, feel free to get someone else to merge it - I won't stop you, but I also don't have to help you.

Your notion that we're going to pass each build system option through a heavy filter of technical debate before we even experiment with it is all wrong.

I don't need this merged before I - one of the users you yourself mentioned with use cases against Make - can ask questions about and criticize the current implementation. But if after all said you still prefer discussing politics and process over the technical issues which actually matter, then I see no point in wasting my time here. Good night.

@joakim-noah
Copy link
Contributor

joakim-noah commented Jun 30, 2017

Err. If you need to run an experiment to find these things out, I'm pretty sure I can tell you the answer right now.

Yes, it is obvious you or someone else doesn't want to run the experiment because you know the answer is that Make will be ditched.

Because a pointless addition is just junk. Why would I not be against adding junk to the official repos?

By that rationale, std.experimental is junk and we should throw it all out. Should I open a PR to delete all of it from Phobos?

I think this whole argument stems from some confusion in how development happens here (and not just). There is this misconception that once something gets accepted, the maintainers will thereon take care of it and it will never bit-rot.

The only blatant misconception here is your own. I'm saying let's run an experiment to see if they're liked and do not bitrot much. I have repeatedly said that the Phobos maintainers should just ignore the experiment if they want: there is no expectation of official maintenance for an experiment. Your repeated statement of this canard shows that you are not interested in an honest debate.

There is also another misconception that just because something is written in D, it will get preferential treatment and everyone will want to improve it.

Again, the misconception is only your own: I have suggested accepting Meson, based on Python, and any other build system, as long as someone is willing to put in the time to submit a basic build script for Phobos, no low barrier.

There is a third misconception, that putting a project in the spotlight will automatically attract more contributors.

Sadly, you're now three for three on misconceptions. I said, let us see if being in the spotlight will attract more contributors, a completely different proposition. I never said being in Phobos guarantees anything will replace Make, that is why I always call it an experiment.

We have plenty experience that show that all of the above are just not true. Dogfooding only works either if you're the software's author or the author is around and can fix issues promptly. If a tool is broken, reaching for another tool is almost always going to be simpler that trying to fix the first tool.

So let's reach for one of these other build tools and ditch Make. :)

So, to me it seems pretty obvious that without some commitment (and not just some hand-wavy "merge it and they will come"), any proposal is a non-starter. But if you still think that I'm wrong or my experience is irrelevant, feel free to get someone else to merge it - I won't stop you, but I also don't have to help you.

I think you're thinking about this all wrong. This is not a new department in a company, where we justify a new direction and then give it a budget, whether in committment or money. This is an OSS project, where we lightly experiment with various approaches and depending on what works best and has the most contributors behind it, we pick one.

Any social or sufficiently complex technical domain is all about floating an idea (in this case, merging in experimental build scripts) and seeing what works better and who gets behind it. As Linus notes in the link I gave, you will almost always lose if you try to design a solution to death yourself beforehand.

I don't need this merged before I - one of the users you yourself mentioned with use cases against Make - can ask questions about and criticize the current implementation.

I don't know what you're trying to say here: you want to "ask questions about and criticize the current implementation" of Make? If you mean you'd like to discuss reggae, I've repeatedly said now is not the time to discuss an experimental build script. Almost nobody in this project has much experience with reggae or Meson, that is why we experiment with them first.

But if after all said you still prefer discussing politics and process over the technical issues which actually matter, then I see no point in wasting my time here. Good night.

There was almost no discussion of "politics," and "process over the technical issues" is the whole point of this discussion: your process of deciding whether to accept experimental build scripts is wrong. We should try things out experimentally before discussing the technical issues, not after.

But you're right that this discussion between you and me is pointless, as I keep repeating the same things over and over and you keep having misconceptions about what I'm saying.

@quickfur
Copy link
Member

FWIW, I'm actually in favor of ditching make, especially if the replacement is something based on D. (Dogfooding and all that.)

However, I don't think this PR is the right approach. The current devs are not going to maintain an alternate build script, and it's just going to bitrot. Plus, it will require a stream of continuous PRs to keep the scripts updated alongside the makefiles, which only adds more load to the already clogged PR queue. In the end, it will become a reason not to ditch make. I don't want to see that.

I think a better approach is to fork the relevant repos and maintain the reggae build scripts there, and regularly sync it with upstream. Git lets you do this relatively painlessly. More importantly, refine the scripts to do everything the makefiles do today, except better. Once we get to that point, we can make it do more than the makefiles do today. If interest in a make replacement is strong enough, we ought to get enough manpower to do this. Then we will have solid proof that the new build system is superior to make. Otherwise, if there is really only little interest, then it will languish and we just let it die.

Arguing and getting angry over this PR is not helping the cause.

@joakim-noah
Copy link
Contributor

However, I don't think this PR is the right approach. The current devs are not going to maintain an alternate build script, and it's just going to bitrot.

Nobody has asked them to maintain it and you don't know if it will bitrot or not.

Plus, it will require a stream of continuous PRs to keep the scripts updated alongside the makefiles, which only adds more load to the already clogged PR queue.

I count 43 non-merge commits to posix.mak so far this year, most fairly trivial or having to do with style-checker or docs issues that wouldn't be required of the experimental build scripts. It doesn't "require a stream" of anything, as experimental scripts can fall behind with no consequence, and their PRs can be quickly merged without much thought, as it's up to the submitter to determine if they're worthwhile.

In the end, it will become a reason not to ditch make. I don't want to see that.

I don't know in what world this could be true.

I think a better approach is to fork the relevant repos and maintain the reggae build scripts there, and regularly sync it with upstream. Git lets you do this relatively painlessly. More importantly, refine the scripts to do everything the makefiles do today, except better. Once we get to that point, we can make it do more than the makefiles do today. If interest in a make replacement is strong enough, we ought to get enough manpower to do this. Then we will have solid proof that the new build system is superior to make. Otherwise, if there is really only little interest, then it will languish and we just let it die.

This is the usual forking approach, when the project maintainers are obstinate and won't listen to reason. I had hoped that wasn't the case, but you may be right it is the only option left. It is a much higher barrier, because someone will have to do all that work and then still might be rejected. Since a build system is not a core compoment of a project, nobody is likely to take that risk. A better approach is experimenting in the official repo like I suggested, but you're right that nuclear option is always there, just as ldc ditched Make and uses CMake.

I will be using dub or some other D build tool, like reggae or button, for building cross-compiled Phobos and the sample Android apps in my repo, as I mentioned recently on the forum. Thankfully, I never have to use these Makefiles. I was trying to save others from that pain, but somebody seems to be against running an experiment to see if that's possible.

Arguing and getting angry over this PR is not helping the cause.

There is almost no discussion of this PR anymore, but of my idea of experimenting with other build systems. When people are against running an experiment that costs them nothing to run, it's usually because they know they will not like the results.

@quickfur
Copy link
Member

quickfur commented Jun 30, 2017

Conspiracy theories are not helping the cause either.

It's really very simple. Fork the repo, put in the alternative build scripts so that they replicate everything the makefiles do alongside, make the whole thing streamlined and buildable. In fact, let's do it the Right Way. Have a single build script handle building all of dmd, druntime, phobos, tools, and dlang.org, including generating all the docs, binaries, packages, website files, etc.. Of course, most of this will be optional, the default target is just a working dmd toolchain. But make the build script handle all the other stuff seamlessly: one push of the button, and it builds the whole damn thing, bells, whistles, and all. A single command to do it all, and do it right, as in, modify phobos/std/range/package.d for example, and the single command will update all targets that are affected by the change, including generating the docs, creating the website files, updated tarballs, installers, zips, etc.. Make it so that everything you ever want to do with the makefiles (by manually cd'ing into each of dmd, druntime, phobos, then tools, dlang.org, in some fragile order) can be done in one shot.

That should be the selling point of the alternative build system. I don't think the core devs will be able to resist that once it's actually all working. :-D

@quickfur
Copy link
Member

(And if the alternative build system is unable to do all that, well, then perhaps the devs have a point that there isn't yet a strong reason to ditch make. I disagree, of course, but the point is that we want to eliminate all possible reasons not to switch.)

@joakim-noah
Copy link
Contributor

As I noted earlier in this thread to Vlad, the alternative you two are suggesting is ludicrous, just as Russel said. It is unlikely anybody will put in all that work, only to have the project maintainers likely reject it with the same irrational objections they've given to just accepting some experimental build scripts that don't implement all the "bells, whistles" right away. If they won't even experiment, why would they ever accept a switch from Make?

The whole idea of experimenting in this official repo is for those Phobos contributors who want to switch off Make to experiment with some new build systems, to acclimatize themselves slowly with some alternatives. This is the way real change works, almost never with big bang replacements like you're suggesting. It is why we have std.experimental, to experiment and acclimatize ourselves with new Phobos modules and make sure we're not making a mistake.

I can only repeat myself on this point so many times.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants