Live data from Hacker News

A Generation Lost in the Bazaar

queue.acm.org

321–330 of 353 posts

Re: A Generation Lost in the Bazaar

#321
post #106
post #58

OK, I'll make a couple of general observations here. First: It would be a big help for this discussion, if we could have the informal convention that people who were employed in an IT job before 1990 marked their post. I think it would show a quite clear divergence of attitude. Second: It's very obivious, that a lot of you have never been anywhere near the kind of software project posited in the "cathedral" meme, ins…

I think a lot of people, especially around here, eschew college education in the computer sciences, because you can get a job without it and you can build a website without it, but I really think the decline of formal education in computer programming concepts has led to a lack of cathedral thinking. Of course, I'm biased, because I have such a degree. However, when I compare what I build to what is built by a busine…

I'm not I'd like to get on either side of this argument, but I'd like to point out a steady decline in systems and operating systems (both research and teaching) across the academic world. Rob Pike wrote a polemic touching on it, and he wasn't entirely off base.

This isn't to say that they don't exist, but there are a wealth of examples demonstrating the transition of major progress in those fields to companies like Google and Amazon. For anecdotal examples, see GFS, MapReduce, and Dynamo; there are many unpublished/trade-secret examples that will take years to come out.

Additionally, many schools have reduced their requirements for what exposure students should have to systems and OS:

A Harvard CS concentrator, for example, is not required to take either the introductory systems or operating systems classes; he/she may opt to take a high-level mobile programming class instead. Indeed, the operating systems and distributed systems courses are taught every other year, further reducing enrollment. The last time CS 161 (intro OS) was taught, there were only 23 students. 25 in CS 153 (Compilers). This is a stark contrast to the 100-200 students who took other upper-level CS classes (189 in mobile, for example).

While I will not contest the value of the formal CS education, I see some of the 'naive'(for lack of a better term) CS proliferating even there.

Re: A Generation Lost in the Bazaar

#322
post #288

Earlier quoted context omitted.

I was intimately involved in those discussions and decisions. There seems to be some underlying assumptions of omniperfection hung of the "cathedral" meme in these parts. That is simply unfounded in both theory and practice. Second, cathedral vs. bazaar is not really about governance, but about architecture, and they are two separate power-structures, although most organizations, including FreeBSD, mingle them, to th…

I just wanted to quickly point out that you have referred to Linux as "much more cathedral than...". Considering that Linux was the original motivation for "The Cathedral and the Bazaar", identified as "the Bazaar", I highly suspect that you are not using the terms in the same way the original essay intended. Indeed, throughout this discussion it has become clear that you regard anything with a sense of design and so…

ESR seemed to target linux userland and GNU-toolchain/utilities in his description of Linux as a Bazaar, although not to the exclusion of the kernel.

I think it is plausible to describe the kernel as much more Cathedral-like, at least in parts where Linus is very strict about how components should be integrated. I can see where parent could have got this impression.

At the same time, there are parts of kernel that are bazaars. Virtualization/Hypervisor support is the area I'm most familiar with; the various hypervisor vendors basically crammed their paravirt calls and passthrough drivers in, without unifying the interface at all. Yes, Linus and others were very aggressive with maintaining the code quality, but less with the architecture. There are other areas of kernel (particular drivers), where we've seen similar situations.

Re: A Generation Lost in the Bazaar

#323

Earlier quoted context omitted.

That is true. But the article decries autoconf's implementation, not just the need for it. It implies that cathedral designers would never implement it, or if they did implement it, do a better job.

I suppose this is the essence, because however much he may chaff at autoconf's implementation (and it surely is ugly), it actually works pretty well. Users (in this case, "user" = "developer") never see the ugliness for the most part. With more open development communities there are tradeoffs, but often the result is that you can do stuff you simply wouldn't have the manpower to do in closed communities. I think most…

No stop it! Don't defend autoconf, it is not worth it and the software does not deserve it. Users of autoconf, that is developers that try to use that POS to build their software definitely experiences its pains.

It is not just that M4 is a horribly ugly, badly, inconsistent language. You also have about a million leaky caches in the build process to deal with. Autoconf rewrites the build scripts in three stages, each which is cached and also keeps an autom4te.cache directory around. So what happens is that you update something in the M4 build script and then have to spend hours hunting down why the change didn't change anything because some stupid autoconf cache wasn't flushed.

What autoconf has done is to separate free software developers into two categories. Those who can hack the source (the .c and .h files) and those who understand the "autoconf magic." It should be telling that people refer to it as "magic" - it's a fing build system, not rocket science.

The only reason this ugly piece of software has lived on is because people treat it as some kind of magical device and inertia. Configuring and building software is an easy problem. It gets even easier if you finally decide to drop support for 30 year old unices that no one uses. The autoconf team consistently refuses to do that which why the software wont ever become better.

CMake, SCons, Waf and probably half a dozen more tools all do a much better job configuring software than autoconf ever will. People really need to try those alternatives and I'm sure they will realize autoconf needs to die, die, DIE.

Re: A Generation Lost in the Bazaar

#324

I doubt the dichotomy is between the cathedral and the bazaar. All software projects have a list of gatekeepers or maintainers, who decide which changes should go in and which ones shouldn't. Some of them have a long list of people with commit access (like Subversion), while others have a handful of maintainers (like Linux). Some of them have grand roadmaps and bug trackers (like Firefox), while others have no agenda…

having a curator decide APIs and standards (OS X) certainly wins over an mashup of billions of packages (Debian). That's your opinion, and you're entitled to it, but it certainly doesn't make it true. To me, Debian has always been the most elegant of operating systems, with a lot of thought put into how things are laid out and making sure that literally thousands and thousands of programs play very nicely together, n…

True, I use Debian myself and can't stand OS X. I meant that for an average end-user, OS X makes more sense.

Re: A Generation Lost in the Bazaar

#325
post #135
post #74

Earlier quoted context omitted.

Nitpick: jQuery exists to make the HTML DOM manageable, not JavaScipt the language. (There are libraries targeted at javascript the language, but you could make an argument that that's the point of all libraries for all languages...) I find jQuery more analogous to tools like configure and autoconf. (in that they aren't actually needed for "modern", standards compliant browsers.) As an example: there are already many…

I don't mean Nginx or Varnish are more hackish themselves than Apache. I could have said Apache instead of Nginx, but I think Back in the day, a "serious" application usually involved a large amount of quite homogeneous source code in a single language (or 2 or 3 different languages for different tasks: C/C++ for the main code/engine/logic, assembly for performance-sensitive code, and maybe some custom high-level scr…

You're basically describing the very nature of distributed systems :) We see many more of them nowadays because of the scale of some modern web apps / sites whereas in the 1990s the internet just wasn't that big or that complicated. Whether every app that ends up being that complicated actually needs to be like that is a different question.

It also comes back to "don't reinvent the wheel" and "not invented here syndrome". You _could_ implement many of these things in your homogenous codebase or you could just reuse something that already works. I'm just saying there are serious and good counterarguments to the "large amount of quite homogenous source code written in a single language" approach.

I agree with some of the details (like AMIs, EC2, different types and versions of linux, different package managers in the same system), but I think in general the things you think of as hacks aren't hacks at all and just the signs of progress. Or at least the nature of large, complex modern distributed systems. You basically described the term "agile development" and you're remembering a time many developers would rather forget with rather rose-tinted glasses.

(I don't really know enough about objective-c to comment.)

Re: A Generation Lost in the Bazaar

#326
post #38

Earlier quoted context omitted.

I think it's perfectly fair. UNIX was originally written as pair-programming. Brooks refers to agile in The Mythical Man-Month (he didn't invent it, check his references)

UNIX was originally written as pair-programming. From http://www.drdobbs.com/open-source/interview-with-ken-thomps... : KT: I did the first of two or three versions of UNIX all alone. Later, he emphasizes that they didn't even look at each others' code: DDJ: Was there any concept of looking at each other's code or doing code reviews? KT: [Shaking head] We were all pretty good coders.

>>Later, he emphasizes that they didn't even look at each others' code:

I remembering reading somewhere (Dennis Ritchie's C History article?) that once they both programmed a solution without consulting each other, and later when they read it, the solution was exactly the same, even down to the variables' name.

Power of C? Two people who thought alike?

>>KT: [Shaking head] We were all pretty good coders.

Which the modern world doesn't have enough of. Demand is so high that quality of supply doesn't matter, just enough to satiate the demand; which is in stark contrast to the early days, when computer science was a research field only privy to scientists and later to hackers and crackers. When it went mainstream, and grew to an industry, its no wonder that it acquired all that which comes with it.

Re: A Generation Lost in the Bazaar

#327
post #291
post #37

Earlier quoted context omitted.

> That's precisely why don't need to use autoconf to compile stuff for iOS. You don't need it to compile stuff for one specific version of Debian with packages X, Y and Z installed, either. You're comparing apples to oranges.

But Debian v.x.y.z isn't a target; "Linux" is.

Not necessarily. Plenty of commercial packages say "made for Redhat X.Y.Z".

The fact that something only runs on iOs means it's a fairly limited piece of software in terms of portability - which is an acceptable tradeoff for many things, but not for others.

Re: A Generation Lost in the Bazaar

#328
post #41

Earlier quoted context omitted.

Right, libtool is the same - the people that wrote it weren't in a position to demand that all the UNIX-likes out there standardise their ld flags, so they routed around the problem instead.

>the people that wrote it weren't in a position to demand that all the UNIX-likes out there standardise their ld flags Agree, but once Linux became the dominant Unix-like, the major Linux distros like Debian and Redhat were probably in a position to replace uses of libtool in upstreams with a distro-wide standard for ld flags.

They could, but what would be the advantage? Such patches couldn't be accepted by upstream, and the Debian/Redhat source packages are mostly only built by Debian/Redhat maintainers, so would the juice be worth the squeeze?

Re: A Generation Lost in the Bazaar

#329
I wrote this analogy to explain this situation to my Facebook friends:

Hypothetical cooking analogy for the non-techies: Back in the day, if you wanted to cook up a fancy meal, there was only one butcher in town, and he did things the "right" way. He only used one variety of beef, because it was the "best", and he only sold the "best" cut of that beef. Similarly, there was only one farmer, who only sold the "right" crops, because they had the "right" flavor. When you wanted to cook a fancy meal, you didn't really have any decisions to make, because there was only the "One True Way": one "correct" cut of meat, one "correct" vegetable selection, etc.

Since then, an explosion of variety has occurred. However, perhaps we have swung too far in the other direction. Rather than choosing among the 6 different makers of pasta sauce, you now must choose among 6 varieties of pasta sauce from each of the six makers. This way lies decision fatigue.

However, the community of grocers got together and came up with an ingenious artificial intelligence agent built into a pick-packer system. Now, you don't need to even know a single brand name of pasta sauce. You can simply arrive at the store, tell the system what recipe you are following, tell it that you prefer your tomatoes from Spain, your beef the organic grass-fed variety, and your garlic from the Mediterranean, but you'll take whatever variety of pasta is local and most fresh. The system then assembles your grocery cart automatically for you, and you can choose to remain blissfully ignorant of all of the decision-fatigue inducing choices which occurred under the hood.

However, if you are of the crotchety-old-man sort, and you "Only buy my rib-eyes from Lambert and Sons, because he's the only butcher who does it right", you can of course choose not to use the AI pick-packer, and you can take it upon yourself to select the "best of breed" ingredients for your meal, and pretend that the explosion of variety never happened.

So here's the deal. Poul-Henning Kamp wrote an article lamenting the fact that the explosion of variety happened and that the AI pick-packer was invented, because now everything is a giant mess, and back in his day, there was only one right way to do it, dammit.

Re: A Generation Lost in the Bazaar

#330

Earlier quoted context omitted.

I suppose this is the essence, because however much he may chaff at autoconf's implementation (and it surely is ugly), it actually works pretty well. Users (in this case, "user" = "developer") never see the ugliness for the most part. With more open development communities there are tradeoffs, but often the result is that you can do stuff you simply wouldn't have the manpower to do in closed communities. I think most…

No stop it! Don't defend autoconf, it is not worth it and the software does not deserve it. Users of autoconf, that is developers that try to use that POS to build their software definitely experiences its pains. It is not just that M4 is a horribly ugly, badly, inconsistent language. You also have about a million leaky caches in the build process to deal with. Autoconf rewrites the build scripts in three stages, eac…

Shrug. You don't like autoconf, great; that's clear. As a user of it, I think it's sometimes ugly, but basically fine for its intended purpose (easing portability amongst POSIX-compatible systems). [If you like Windows, you're probably outside its target audience.]

CMake, SCons, etc, all have their pros and cons. They are hardly paragons of virtue though. [Yes, even as a mere "consumer" of CMake (someone who occasionally needs to build packages that use it), I've been bitten and frustrated by it.]

As far as I've found, there really isn't any build tool that really gets everything right -- which suggests that the problem is harder than you suggest. [Although judging from the number of people who try to write their own build tool (most of which languish and eventually die, but cause some pain along the way), it's clear enough that many people think it's a simple problem...]

> autoconf needs to die, die, DIE

Decaf?

Post reply on HN