<div dir="ltr">For the sake of the brevity, I'll summarize the claims I heard, and reply to them:<div><br></div><blockquote class="gmail_quote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex; ">
You still didn't bring good enough example, if only the Go project was more complex, they would benefit so much from the autosuite/ they have a really bad build system now, it causes so many problems.</blockquote><div>
<br></div><div>I won't argue with that. The fact is, that the Go programming language is relevant and working now on various platforms. I'll let the wise reader to judge if it's good enough. Remember the philosophy, it has to work OK for 99.9% of the use cases. I just want to assure you I'm not the only one using go ;-).</div>
<div><br></div><blockquote class="gmail_quote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex; ">
Autotools are easy for the client. Just as easy, or easier than any other solution, so what's all the fuss?</blockquote><div><br></div><div>When everything is working correctly, it doesn't matter which build system you use. When there are troubles it is extremely hard to debug an autosuite based project, in contrast to makefile based project. I've had problems with makefile based build systems before and they were easy to solve. I usually decided to bypass problems I've had with autosuite based builds.</div>
<div><br></div><div>Now I want to quote Nadav in order to demonstrate the wrong-nowadays (IMHO) philosophical approach of the autosuite</div><div><br></div><div><blockquote class="gmail_quote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex; ">
<font class="Apple-style-span" face="arial, sans-serif"><span class="Apple-style-span" style="border-collapse: collapse;">At that point, I'd been</span></font> </blockquote><blockquote class="gmail_quote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex; ">
<span class="Apple-style-span" style="font-family: arial, sans-serif; ">developing this software for almost a decade, and had run it on more than</span> </blockquote><blockquote class="gmail_quote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex; ">
<span class="Apple-style-span" style="font-family: arial, sans-serif; ">a dozen different variants of Unix, and many versions thereof, and I've</span> </blockquote><blockquote class="gmail_quote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex; ">
<span class="Apple-style-span" style="font-family: arial, sans-serif; ">accumulated a big ugly Makefile and a big ugly INSTALL instructions, which</span> </blockquote><blockquote class="gmail_quote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex; ">
<span class="Apple-style-span" style="font-family: arial, sans-serif; ">you needed to follow to compile it. Were you using ANSI C? Set this flag.</span> </blockquote><blockquote class="gmail_quote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex; ">
<span class="Apple-style-span" style="font-family: arial, sans-serif; ">Were you compiling on AIX? Set that flag. Do you have matherr(3)? gamma(3)?</span> </blockquote><blockquote class="gmail_quote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex; ">
<span class="Apple-style-span" style="font-family: arial, sans-serif; ">Did your C compiler had a specific bug that was only found on one specific</span> </blockquote><blockquote class="gmail_quote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex; ">
<span class="Apple-style-span" style="font-family: arial, sans-serif; ">machine? Were you using Bison or AT&T yacc? </span></blockquote><div><br></div><div>That's exactly my point! Wondering if your user have matherr(3) or gamma(3)? Don't use it! In a modern system you'll have alternatives for that. Wondering whether your user has Bison or AT&T yacc? Use bison and drop yacc support, in a modern system you can expect bison to be supported.</div>
</div><div>But whatever you do, do NOT set compile time flags in your software. They should be in a compatability layer you should use, not in your code. It will come back and hunt you.</div><div><br></div><blockquote class="gmail_quote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex; ">
Look at the legacy OpenVMS I have in my workplace, we need to support it, and it only has the Metaware compiler. Only the autosuite would come to rescue in this case.</blockquote><div><br></div><div>Listen, autosuite is not a magic powder you mix into your project, and TADA! it compiles against all legacy unices. You still need to compile run and test the code on this platform. And nowadays, there is a small amount of platforms which are relevant to your software, and you're probably not going to invest the time in order to make sure it works there. So if there <b>is</b> a special platform you need your software to work on, your best bet is to stick to as standard C as you can, and make the build system dead simple, to make compiling it easy on this platform.</div>
<div><br></div><blockquote class="gmail_quote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex; ">
I've been in this business for 10 years, and I tell you kid, you aint know nothing.</blockquote><div><br></div><div>But that's my point exactly! When you were in this business, the relevant targets were much more scattered and limited than nowadays. It is no longer the state, modern system are much more standardized, and those who don't are not interesting enough. jwz avoided templates in C++ because they weren't widely supported then[*] can you imagine doing that in a modern software?</div>
<div><br></div><div>[*] <a href="http://www.jwz.org/blog/2009/09/that-duct-tape-silliness/">http://www.jwz.org/blog/2009/09/that-duct-tape-silliness/</a></div><div>--</div><div>Example specific claims</div><div>--</div><div>
<blockquote class="gmail_quote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex; ">
Would Go also compile Solaris? On AIX? On True64 UNIX (if you happen</blockquote><blockquote class="gmail_quote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex; ">
<font class="Apple-style-span" face="arial, sans-serif"><span class="Apple-style-span" style="border-collapse: collapse;">to have an Alpha machine)? On various versions of Fedora/Debian/Ubuntu/Gentoo</span></font></blockquote>
<font class="Apple-style-span" face="arial, sans-serif"><blockquote class="gmail_quote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex; ">
from the last 10 years? You can say you don't care, but I do.</blockquote></font><font class="Apple-style-span" face="arial, sans-serif"><div><br></div><div>1) I think that in modern machines where gcc/gawk can run on, it is very likely to compile.</div>
<div>2) I'm not sure that in this case (ie, gcc is running on the machine) autotools would make much difference.</div><div>3) The main reason that Go might not run on this machines, are lack of testing, and not a bad building system.</div>
<div>4) Even if autosuite will save some time, testing and maintaining the software on so many systems will cost so much more than the cost of maintaining the build system. Here is a summary of the problem with porting Go to Solaris. Automake won't solve any of them.</div>
<div><br></div><div><span class="Apple-style-span" style="font-family: arial; "><a href="https://groups.google.com/group/golang-nuts/browse_thread/thread/2f4f9ceb9cd933a4">https://groups.google.com/group/golang-nuts/browse_thread/thread/2f4f9ceb9cd933a4</a></span></div>
</font></div><div><br></div><blockquote class="gmail_quote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex; ">
Go needs a special directory structure/environment settings</blockquote><div><br></div><div>At least now it doesn't need directory structure to compile. It does need two environment variables to compile, but they are the equivalent of a './configure --to-ARM' command (ie, impossible to figure out automatically) so I'm not sure it's such a bad thing.</div>
<div>Anyhow, from my personal experience, builiding Go is very easy and straightforward.</div><div><br></div><blockquote class="gmail_quote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex; ">
ANT is bad, because...</blockquote><div><br></div><div>I only brought the ANT and the godag examples, as things which makes building simple things simple, in contrast with autoscan which makes building simple projects difficult.</div>
<div><br></div><div><blockquote class="gmail_quote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex; ">
Just as an example, consider the Apache Lucene project, a very useful Java</blockquote><blockquote class="gmail_quote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex; ">
<font class="Apple-style-span" face="arial, sans-serif"><span class="Apple-style-span" style="border-collapse: collapse; ">search-engine library. Would you believe that until the end of 2009, Lucene</span></font> </blockquote>
<blockquote class="gmail_quote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex; ">
<span class="Apple-style-span" style="font-family: arial, sans-serif; ">had officially stuck to Java 1.4 and could not use any new Java 5 features,</span> </blockquote><blockquote class="gmail_quote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex; ">
<span class="Apple-style-span" style="font-family: arial, sans-serif; ">even conditionally? Remember that Java 5 had come out 5 years earlier...</span></blockquote><div><br></div><div>Huh? And having #ifdef JAVA5 sprinkled in the code looks like a better idea?</div>
<div>Yes, having a branch for Java 1.4, and a different branch for Java 1.5 looks like a great solution, much better than choosing it compile-time with autosuite. Eclipse does just that, and I didn't hear any complaints.</div>
</div><div><br></div><blockquote class="gmail_quote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex; ">
Project like the kernel MUST choose their component in compile time.</blockquote><div><br></div><div>The kernel is not that great example, because most of us are using stock kernels (exaclty because having a single binary makes it easier to debug problems in customer's boxes. I know exactly what was compiled into your stock RHEL 5.3 kernel, so it easier for me to figure out the problem).</div>
<div>But indeed you must have an autotools like capability with project like the kernel. Does that means that this is a good idea in general? Does that mean that if I'm writing "hoc" today I'd better of use the autosuite? I really think not.</div>
</div>