News for hackers. Stuff that matters.
Re:A Generation Lost in the Bazaar (2012) by MBCook on Monday December 29, 2014 @11:12PM (#8813290)
His point is someone has to stand up and say "This is how it will be done." Without that you just get tons of wasted effort.

Why do so many developers use OS X instead of Linux? One benefit of OS X is that there is one entity responsible for it, not 250. There is a person (or a few) making the decisions, proving stability and removing things that don't work. It's not perfect (recent transitions in OS X as leadership shuffled) but the different parts of OS X usually feel like part of the same whole.

As much as people 'like' the bazaar I see the same things in open source. Current init systems give you tons of choice and people keep screaming because it's being removed. But a lot of people seem to like having it organized under one umbrella so that it can all coordinate properly. Doesn't matter if you don't like the choices being made (many people don't like Apple's choices) but there is someone in charge.

There are other examples. Ubuntu seemed to get popular saying "This is what it will work like" as opposed to what used to be common of "Here are 6 GUIs, choose one!". Ruby (with Matz), Python (with GvR), Clojure (Rich Hickey), the Linux kernel all seem to be doing pretty well with someone nominally in charge to make hard decisions.

I think his example of build systems was perfect. No one would set out to design a system to generate a file to probe a system for 26 programs that you don't even need to choose build options for a program that only runs on a handful of nearly identical systems.

Re:A Generation Lost in the Bazaar (2012) by lmm on Tuesday December 30, 2014 @06:43AM (#8814195)
> Ruby (with Matz), Python (with GvR), Clojure (Rich Hickey)

Many would argue that Haskell ends up more consistent and elegant than those, despite having been designed by committee.

> the Linux kernel

Ends up with messier code and design than that of FreeBSD; perhaps an inevitable side effect of popularity, but perhaps exacerbated by the person-oriented command hierarchy.

> No one would set out to design a system to generate a file to probe a system for 26 programs that you don't even need to choose build options for a program that only runs on a handful of nearly identical systems.

Actually almost all of libtool's code was written by one person, Gary Vaughan.

Bazaars can produce elegant code, and cathedrals can produce monstrosities; a handful of anecdotal examples prove very little.

Re:A Generation Lost in the Bazaar (2012) by tempodox on Tuesday December 30, 2014 @08:46AM (#8814546)
> Many would argue that Haskell ends up more consistent...

I would argue that Haskell is an outlier in more than one dimension.

Re:A Generation Lost in the Bazaar (2012) by innguest on Tuesday December 30, 2014 @03:51PM (#8816671)
Along with other outliers like Smalltalk and Scheme, neatly grouped together under "experimental languages". Cf. SQL, a language that from the beginning had its industry in mind.
Re:A Generation Lost in the Bazaar (2012) by sedachv on Tuesday December 30, 2014 @05:12PM (#8817032)
Common Lisp would probably be the best counter-example to "language design by committee doesn't work." Despite being developed by a committee over an almost 15 year period and the standard document being over 1000 pages long and full of functions that are there just for backwards compatibility, the language manages to be both more consistent and feature rich than Ruby or Python.

The language most people know as C has been developed by a committee since 1983 (try reading pre-ANSI C). C++ has been developed by an ISO committee since 1993(?) and has expanded hugely in scope (standard library, namespaces, RTTI).

So successful programming language design by committee seems to be the rule and not the exception.

Re:A Generation Lost in the Bazaar (2012) by innguest on Tuesday January 06, 2015 @04:04PM (#8847121)
Common Lisp, C and C++ did not contribute to the field in the enormous way that Scheme, Haskell and Smalltalk did. They're sheeple languages (made with the worker in mind) to control employees, and not languages to empower and liberate the programmer (like Forth, another great example of an experimental language by Chuck Moore).

My point stands.

Re:A Generation Lost in the Bazaar (2012) by lispm on Tuesday January 06, 2015 @07:36PM (#8848133)
> They're sheeple languages (made with the worker in mind) to control employees,

Total nonsense.

> and not languages to empower and liberate the programmer

Also nonsense.

Re:A Generation Lost in the Bazaar (2012) by innguest on Wednesday January 07, 2015 @11:38AM (#8851479)
If you want to refute you will have to do better than just show up; you could start by explaining why do we have so many shops using Java and .Net and now Rails (which makes it possible for Ruby programmers to be fungible for managers) and so few using Scheme and Smalltalk etc.

Ask your manager why you can't switch to a better language. The answer is it's harder to find talent for it. Bingo.

Re:A Generation Lost in the Bazaar (2012) by sedachv on Wednesday January 07, 2015 @06:05PM (#8853937)
> Ask your manager why you can't switch to a better language. The answer is it's harder to find talent for it.

That's a really good point.

IDK if I would say that about Scheme though. There are a lot more people around that know Scheme than know Common Lisp. I learned to program Lisp starting with Scheme; going back to Scheme from Common Lisp feels really disempowering.

Re:A Generation Lost in the Bazaar (2012) by pmoriarty on Tuesday December 30, 2014 @12:37AM (#8813481)
"Ruby (with Matz), Python (with GvR), Clojure (Rich Hickey), the Linux kernel all seem to be doing pretty well with someone nominally in charge to make hard decisions."

So many programming languages. So much confusing choice and wasted effort.

What we need is for someone to be put in charge and consolidate all those programming languages in to one language.

Re:A Generation Lost in the Bazaar (2012) by sysk on Tuesday December 30, 2014 @01:54AM (#8813639)
I think you are getting down voted because you voiced a very controversial opinion without much explanation to to back it. Still, I think there is some merit to it (although I wouldn't go as far as saying we're ready for the "one language to rule them all" yet).

The paradox of choice and duplication of effort are very real problems. Let's take web app development for example. We have PHP, Python, Ruby, Java, C#, etc. Each language has their own set of libraries/frameworks and it takes a lot of time and effort for a programmer to learn all of them. I've been developing web apps for 10 years and yet, I couldn't contribute to a web app written in Java. What if instead of having X libraries in Y languages, we had X*Y libraries for a single language or X libraries of Y higher quality for a single language?

Standardisation has lots of benefits.

The web standardised on HTTP/HTML/CSS/Javascript and it enabled the creation of a massive ecosystem of tools, libraries and pool of developers. Front-end developers can easily switch jobs and contribute to other projects. I personally dislike languages that compile to HTML/CSS/Javascript because I think standardisation trumps their benefits. C is a de facto standard in the embedded world.

In my opinion, sometimes the hammers are so similar (e.g. Python/Ruby) that we should just collectively agree to only use one.

Re:A Generation Lost in the Bazaar (2012) by btilly on Tuesday December 30, 2014 @04:16AM (#8813879)
I know a very good developer who does both Unix and Windows development. He knows both very well.

He points out that with Linux you officially have the ability to customize everything perfectly, but spend a lot of effort just deciding what your stack will be. And if you integrate 4 or 5 things together, you get a lot of redundant crap because they did things differently.

In the C# world, by contrast, Microsoft declares technology winners and everyone adopts them. Those winners may be in principle not ideal, but the fact that everyone actually uses them saves a lot of wasted duplication of effort.

Re:A Generation Lost in the Bazaar (2012) by makomk on Tuesday December 30, 2014 @05:44AM (#8814041)
That's a very idealised view of Microsoft's platform. In particular, they have a habit of periodically declaring new technology winners that aren't compatible with the old ones, which then become legacy. Remember Windows Forms and Windows Presentation Foundation, both of which were Microsoft's officially-sanctioned ways of developing GUI apps with C# and both of which are now legacy APIs in maintenance-only mode?
Re:A Generation Lost in the Bazaar (2012) by btilly on Tuesday December 30, 2014 @01:45PM (#8815964)
This is true.

However the cost is no worse than the cost in the open source world of jumping on technology decisions that then wind up fading away and dying. And the fragmentation in the open source world makes that more likely.

Yes, in principle you can support open source software yourself. But you'd be amazed at the long term costs of doing so when you are locked in to a platform with diminishing market share.

Re:A Generation Lost in the Bazaar (2012) by Silhouette on Tuesday December 30, 2014 @06:59PM (#8817514)
Perhaps a better example of the Microsoft strategy would be Windows itself. For many years and several major versions, they went to extraordinary lengths to ensure backward compatibility and stability, so software that ran on Windows from the mid-1990s would still have a reasonable chance of running acceptably on Windows in the late-2000s.

We had almost reached the point where, notwithstanding any commercial licensing barriers, you could either still run application software natively, or it was so old that you could host a virtual machine containing the old OS within the new one. That's a great situation to be in if you rely on the software, and it's also a very nice situation if you write software, because it basically means that once you've got software that works it works forever. A firm foundation keeps everyone safe.

It's regrettable that under Ballmer and now Nadella they seem to have been pushing hard in IMHO the wrong direction with increasingly rapid updates and more reliance on inherently unstable on-line services, instead of playing to those traditional strengths. This makes Windows just as unlikely a prospect for long term stability as anything from Apple or the Linux world these days.

Personally, all I want is a system that I can buy today to do useful work and reasonably expect to still be doing useful work more than a year or two later. It's disturbingly difficult to find software that meets that apparently simple requirement any more.

Re:A Generation Lost in the Bazaar (2012) by btilly on Tuesday December 30, 2014 @10:04PM (#8818076)
If you want backwards compatibility, you really should look at IBM.

Their mainframe family still runs most serious financial platforms around the world, and it is routine to run code written decades ago on the latest generation of hardware.

No, it is not cool. It is not sexy. It is not cheap.

But it is backwards compatible. With a vengeance.

Re:A Generation Lost in the Bazaar (2012) by chris_wot on Tuesday December 30, 2014 @11:06AM (#8815109)
Silverlight, anyone? Microsoft is excellent at leaving folks high and dry.
Re:A Generation Lost in the Bazaar (2012) by mercurial on Tuesday December 30, 2014 @02:50AM (#8813748)
Parent's post sounds like sarcasm to me.
Re:A Generation Lost in the Bazaar (2012) by Confusion on Tuesday December 30, 2014 @08:06AM (#8814398)
That's missing the forest for the trees.

There is a difference between being able to choose between 15 tools and being able to choose between 15 hammers. The point of the article is that we just don't need 15 hammers -- especially as 10 of those are obviously inferior -- and the existence of 15 hammers is incredibly unhelpful.

Re:A Generation Lost in the Bazaar (2012) by dllthomas on Tuesday December 30, 2014 @06:06PM (#8817259)
http://en.wikipedia.org/wiki/Hammer#Hand-powered_hammers

You're not going to need 15 hammers on a specific job (... for one person), but there are a lot of kinds of jobs in the world with particular needs.

Re:A Generation Lost in the Bazaar (2012) by rev_null on Tuesday December 30, 2014 @06:09PM (#8817274)
That's kind of a poor metaphor, as there are at least a dozen distinct and useful types of hammer.
Re:A Generation Lost in the Bazaar (2012) by DonHopkins on Tuesday December 30, 2014 @03:40PM (#8816625)
Didn't God put Larry Wall in charge of that decades ago? How did that work out?
Re:A Generation Lost in the Bazaar (2012) by lutorm on Monday December 29, 2014 @11:25PM (#8813325)
But the point of libtool or autoconf is not to make it easier to build various programs on Ubuntu, it is to make it easier to build the same program not just on Ubuntu and RedHat, but also on FreeBSD, OpenBSD, Darwin, Solaris, SunOS, Tru64, HP-UX, IRIX, AIX, and god knows what other systems. Even if Linux turned into a perfectly polished and neatly organized cathedral, you'd still need to get it to work on all those other systems. And most of those systems predate "the cathedral and the bazaar" anyway, don't they?
Re:A Generation Lost in the Bazaar (2012) by dietrichepp on Tuesday December 30, 2014 @05:48AM (#8814052)
How much easier does autoconf make things, really?

I think the key phenomenon here is that software is non-portable by default, and portable through effort. If your problem is that the Linux code should use epoll() and the BSD code should use kqueue(), but OS X has quirks in its kqueue() implementation, and you need to fall back to poll() otherwise, autoconf will help... slightly. Then you need Sys V init scripts, or rc scripts, or launchd scripts, or... who even knows, unless you actually convince someone to port your project to that system.

So, you already have people testing and fixing bugs on other platforms, but now you tell them that they need to also learn M4 so they can write an Autoconf macro to test for some... thing... that you need which doesn't have a standard test. I'm not convinced that this makes my life any better.

Whether or not you like Autoconf, however, you have to agree that libtool has serious problems.

Re:A Generation Lost in the Bazaar (2012) by faragon on Tuesday December 30, 2014 @07:43AM (#8814329)
"Build systems", like the GNU one (autoconf/automake/libtool/etc), cmake, or others, theoretically "solve" the need of your project build in a newer/different platforms. However, in practice, in a newer OS "version" or newer platform, you have to "fix" things, again.

In my opinion, when possible, it is better to stuck to standards, and use just a Makefile for POSIX targets (it allows context detection) and a custom scripts or Makefiles for exotic platforms.

In the end, the reason for e.g. Autoconf, is the mess of different non-standard crazy stuff. Why not to agree a build standard base, at least for the C language and library handling?

Re:A Generation Lost in the Bazaar (2012) by mcguire on Tuesday December 30, 2014 @06:04PM (#8817255)
It's a nice, principled idea, but what happens when someone says, "We'll give you lunch money if you'll make your software work on ..."?
Re:A Generation Lost in the Bazaar (2012) by mcguire on Tuesday December 30, 2014 @06:02PM (#8817241)
"How much easier does autoconf make things, really?"

Speaking as someone who was a system administrator responsible for compiling a large number of packages across a wide variety of platforms (let's see, SunOS, Solaris, AIX, Irix, Linux, and HP-UX, all at different versions at different times) through the '90s and early 2000s, autoconf made things much, much easier.

It doesn't help the developers any; each individual difference has to be identified by the developer. (My biggest complaint isn't that it's written in m4, but that there's no comprehensive list of what I need to do with it. That information makes up the m4 tests, but there was no documentation.)

Don't like libtool? http://www.fortran-2000.com/ArnaudRecipes/sharedlib.html

Re:A Generation Lost in the Bazaar (2012) by justincormack on Tuesday December 30, 2014 @02:22PM (#8816179)
Also many of these bugs are somewhat transient, and it is better to not support a buggy platform, or insist on manual patching until it is fixed, rather than build complex tests and workarounds in.
Re:A Generation Lost in the Bazaar (2012) by quesera on Tuesday December 30, 2014 @01:39AM (#8813608)
libtool and autoconf are messy partial solutions to problems created by writing non-portable code. This is an aspect of the bazaar model, where reasonable standards (e.g. POSIX) are sometimes ignored in favor of novelty or minimal adequacy.

The bazaar model embraces the mess, believing that something spectacular will emerge. The cathedral model argues that coherence produces better results.

Both can point to successes. phk is arguing that the open source community has lost more than it has gained from accepting the bazaar as the one true way.

Even in the last ten years, where has the innovation in operating systems come from?

The CatB essay predates the book, and the idea predates UNIX.

Re:A Generation Lost in the Bazaar (2012) by makomk on Tuesday December 30, 2014 @05:22AM (#8813984)
Any non-trivial code is non-portable between Unix systems in practice. No system implements all of POSIX, even when they do they often disagree on how parts of it should be implemented, and some software needs features that simply aren't in POSIX. (For example, high-performance webservers need a better way of polling for events than select/poll, and that's platform-specific.)

As for libtool, anything that deals with shared libraries is inherently non-portable. The file extension they're created with and the compiler and linker flags to create them are entirely platform specific - POSIX won't help you there. (Also, a lot of libtool's hairyness exists because some older proprietary Unix systems don't support shared library dependencies.) If you're only planning on supporting open source OSes you don't actually need libtool though - their native toolchains are either the GNU one or something compatible with it, and include most of its functionality natively.

Re:A Generation Lost in the Bazaar (2012) by regularfry on Tuesday December 30, 2014 @05:51AM (#8814067)
And this is because there is nobody with authority to force the right solution.

Compare POSIX to the Java spec: without Sun forcing coherence, "write once, run anywhere" would have died very early on, and we'd be saying the same thing about Java as you've just said about POSIX.

Re:A Generation Lost in the Bazaar (2012) by chris_wot on Tuesday December 30, 2014 @11:00AM (#8815083)
Curious though, what do you use: maven or ant?
Re:A Generation Lost in the Bazaar (2012) by regularfry on Tuesday December 30, 2014 @12:00PM (#8815412)
Neither.
Re:A Generation Lost in the Bazaar (2012) by quesera on Tuesday December 30, 2014 @10:41AM (#8814987)
> webservers need a better way of polling for events than select/poll, and that's platform-specific.

POSIX was just an example, and it is possible to write portable code using #ifdef. But you have to have a goal of writing portable code.

Re: libtool, most of the reason it's ever necessary is because of the historical rush and the incompatibilities created. Again, a single command line switch could handle that.

Still, plenty of software which has clearly only ever been built for Linux requires libtool. It's just the way things are done, just like autoconf. It works, poorly, inefficiently, fragile-ly -- and to most, mysteriously.

Appreciation for autoconf and libtool depends on one's position on the defeatism-pragmatism-idealism spectrum.

Re:A Generation Lost in the Bazaar (2012) by mcguire on Tuesday December 30, 2014 @06:07PM (#8817270)
"POSIX was just an example, and it is possible to write portable code using #ifdef.."

Yes, two ways. One way uses autoconf (and tests each individual option to see which branch of the ifdef to use) and the other uses Imake (and has a big, continuously maintained database of which option to use on each system).

Re:A Generation Lost in the Bazaar (2012) by MBCook on Tuesday December 30, 2014 @10:22AM (#8814905)
> Ubuntu and RedHat, but also on FreeBSD, OpenBSD, Darwin, Solaris, SunOS, Tru64, HP-UX, IRIX, AIX,

So if you dropped SunOS, Tru64, HP-UX, IRIX, and AIX how many users would you use? How much of that configuration garbage would go away?

Re:A Generation Lost in the Bazaar (2012) by lstamour on Tuesday December 30, 2014 @03:33PM (#8816584)
Oracle's SunOS (now Solaris), HP-UX and IBM's AIX, plus the community-supported *BSDs and Darwin would be the only ones you'd see in the wild today, from that list. IRIX and Tru64 are retired or history, according to Wikipedia. ZDNet in April 2014 reports that Unix server share as a whole is 13.6% according to IDC, Oracle has 4.7% leaving 8.9% to competitors. Since many of these are RISC or Itanium servers, leaving them out means fewer compatibility headaches on multiple fronts. That all said, unless there's a testing service out there for this kind of enterprise hardware, I can't see how anyone writing open source code outside of large enterprises would be expected to support this configuration without patches from the community... which is probably why "standard checks" remain today. Nobody really knows if they're still needed or not, since the original patch might go back to the mid-90s.
Re:A Generation Lost in the Bazaar (2012) by lutorm on Tuesday December 30, 2014 @01:06PM (#8815760)
Yeah, that may be true today, but it certainly wasn't when these tools were conceived. (According to wikipedia, autoconf was first released in 1991.)
Re:A Generation Lost in the Bazaar (2012) by justincormack on Tuesday December 30, 2014 @02:24PM (#8816191)
But you don't have to go on using it...
Re:A Generation Lost in the Bazaar (2012) by walshemj on Tuesday December 30, 2014 @06:18AM (#8814141)
so your in 98-99% of cases not going to be using OSX in production so why introduce more risk by developing on a different system to the end product will run on.