News for hackers. Stuff that matters.
Re:A Generation Lost in the Bazaar (2012) by vidarh on Sunday December 03, 2017 @06:50AM (#15837190)
A big problem with his thesis is that I see just as much ugly crap in proprietary codebases where there is a clear structure of who is responsible for what.

The problem is often that the economics does not favor the perfect. I'm working on a project for a client now where I know there are lots of ugly warts in the backend because we've been building abstractions in parallel with building the rest of the system and have not always had the time to go back and revise the old code.

I would love to go back and sort that out. But to the client it is an extra expense now, both in terms of money, but more importantly in time spent now, vs. paying for it increased maintenance costs for people to - hopefully - clean it up over time later.

But there's also often the other cost of learning and determining if a shared piece of code is appropriate.

E.g. there's about half a dozen Ruby gems for handling ANSI escape codes, but for a recent project I ended up writing my own, because none of them seemed to cover what I needed, and it's not clear they should. A lot of code duplication happens because the cost of trying to avoid it often far outweighs the cost of maintaining code you know is doing exactly what you want it to.

I do agree with his hate for the autotools family, though.

Re:A Generation Lost in the Bazaar (2012) by jasode on Sunday December 03, 2017 @10:48AM (#15838044)
>A big problem with his thesis is that I see just as much ugly crap in proprietary codebases

One of the reasons I suggested that folks take a look at previous threads[1] is that phkamp clarifies his definitions of "cathedral != closed source / proprietary / commercial" and "bazaar != open source".

It's not obvious in the acmqueue essay but phkamp wants "cathedral" to be synonymous with "coherent architectural design". As a result, his example of having a bunch of open-source hackers add duplicate dependencies such as a TIFF library when the final build of Firefox doesn't even read tiff files is not "cathedral" and therefore not "quality".

The acmqueue article is not written very clearly because he uses metaphors "cathedral / bazaar" which makes people associate "cathedral" with entities like Microsoft which he didn't intend and not associate "cathedral" with pre-1980s commercial UNIX which he did intend. Obviously, he intentionally reused "cathedral/bazaar" because it was a refutation of Eric S Raymond's metaphors but nevertheless, recycling the same analogy sent multiple people down a road of imprecise arguments. Indeed, one of the comments in the 5-year old thread is an ex-Apple employee (jballanc) categorizing iOS development as "bazaar" but phkamp classifies it "cathedral". Talk about torturing metaphors until people talk right past each other!

[1] no need to read all ~300 comments, just Ctrl+f search for "phkamp": https://news.ycombinator.com/item?id=4407188

Re:A Generation Lost in the Bazaar (2012) by vidarh on Monday December 04, 2017 @09:34AM (#15844061)
I don't think that really helps the argument. A lot of these decisions are explicitly made a part of a "coherent architectural design" - accounting for the economics of sorting out duplication vs. building a product is part of a design process.

It may not be the quality he wants, but architecture is not about maximizing quality, but maximizing quality within a budget.

Re:A Generation Lost in the Bazaar (2012) by antod on Sunday December 03, 2017 @01:22PM (#15838711)
I was under the impression the cathedral was eg describing GNU projects and the bazaar was describing eg the Linux kernel. ie it was about comparing different styles of running free/open source projects.
Re:A Generation Lost in the Bazaar (2012) by jasode on Sunday December 03, 2017 @01:42PM (#15838808)
>I was under the impression the cathedral was eg describing GNU projects and the bazaar was describing eg the Linux kernel.

Yes, that was Eric S Raymond's[1] particular examples. However, phkamp extended it with phkamp's particular examples (Bell Labs UNIX (cathedral), Apple iOS (bazaar), Firefox (bazaar), Microsoft (neither bazaar nor cathedral?), etc).

I should emphasize that it doesn't matter whether phkamp's classifications are "correct". (Indeed, the previous thread showed many disagreed with his taxonomy and 2 ex-Apple programmers contradict each other on iOS.)

Whatever idiosyncratic definition phkamp wants to use for "cathedral/bazaar", the point is readers have to be aware of it to understand his acmqueue essay. (As I said previously, the freestanding article does not make his thesis clear so it lead to subsequent discussions that misunderstood what he wrote.)

[1] https://en.wikipedia.org/wiki/The_Cathedral_and_the_Bazaar#....

Re:A Generation Lost in the Bazaar (2012) by saas_co_de on Sunday December 03, 2017 @08:16AM (#15837451)
> economics does not favor the perfect

my observation has been that getting the first 90% of features/quality is pretty cheap and then as you start to try to close in on 100% features/quality for whatever your domain is the cost of improving software increases asymptotically somewhere short of 100% features/quality.

What people will pay for software seems to mostly depend of the costs of failure. 90% working software is almost always a better value prospect than 100% working software, unless your software failing means someone dies, or you place a trade that is off by $100 million.

In industries where the costs of failure are low (consumer, most internet, etc) the quality of software that the market will pay for is very low, and so the quality of the software being produced is very low.

Re:A Generation Lost in the Bazaar (2012) by cleeus on Sunday December 03, 2017 @08:49AM (#15837552)
I think this is more often referred to as the 80/20 rule. The precise ratio is not that important. https://en.wikipedia.org/wiki/Pareto_principle
Re:A Generation Lost in the Bazaar (2012) by charlieflowers on Sunday December 03, 2017 @07:02AM (#15837227)
Interesting ... a system that starts out as understandable/understood can degrade into one that still works, but is not understood (obviously ... we see it every day).

At that point, work (in the Physics sense) is required to lift it back to the outer energy level -- that of both working and being understood.

In many cases, a reasonable option will be to leave it at the degraded level and continue to utilize it (after all, it still "works").

This all seems obvious to me for the first time, as I look at it from this perspective. But it has never dawned on me before, probably because every inch of my soul longs for the beauty of the highest level of the hierarchy -- "works and is understood".

Re:A Generation Lost in the Bazaar (2012) by k__ on Sunday December 03, 2017 @07:35AM (#15837320)
Faster than you think.

First they sell you a REST API, then it is more of a RPC, so you have to restructure.

Later many endpoints return crap, even if they worked, so you start ignoring the responses.

etc. pp.

Re:A Generation Lost in the Bazaar (2012) by flohofwoe on Sunday December 03, 2017 @08:02AM (#15837399)
My experience as well, most closed source code I have to work with has an objectively worse quality than most open source code I choose to work with. Open source projects usually don't need to compromise quality to meet a deadline. This is critical for infrastructure and middleware, less important for user-facing products (thus it makes sense to develop the former in the open, and the latter under the typical restrictions of commercially developed software).
Re:A Generation Lost in the Bazaar (2012) by cleeus on Sunday December 03, 2017 @09:01AM (#15837587)
I had to work with a lot of open and close source. From my experience there is an equal amount of good and bad code on both sides of the fence. It depends more on the age of the codebase and the respective engineering techniques.
Re:A Generation Lost in the Bazaar (2012) by dozzie on Sunday December 03, 2017 @08:48AM (#15837543)
> My experience as well, most closed source code I have to work with has an objectively worse quality than most open source code I choose to work with.

I think this is mostly because

> most [...] code I have to work with has an objectively worse quality than most [...] code I choose to work with.

Re:A Generation Lost in the Bazaar (2012) by vidarh on Monday December 04, 2017 @09:46AM (#15844161)
I think that explains a lot of it in general. There's vast mountains of horribly messy open source code, but most of it will never get any traction unless/until someone cleans it up.

So popular open source code will either be relatively clean and/or have other important qualities that lets people overlook how messy it is.

For proprietary code, on the other hand, we often don't get to pick and choose.

Re:A Generation Lost in the Bazaar (2012) by bunderbunder on Sunday December 03, 2017 @11:14AM (#15838159)
There's more to any apparent difference in the quality of open source code than just deadlines. It's also things like survivor bias. Messy open source codebases don't attract contributors at the same rate.

And deadlines are still a part of open source software development. Most the really widely used projects are heavily supported by corporate patronage, and you'd better believe that those companies are creating deadlines for the people they pay to contribute to those projects based on their own business needs.

For my part, to me it seems that "enterprise vs non-entperise" is a better predictor of code quality than "closed vs open source".

Re:A Generation Lost in the Bazaar (2012) by watwut on Sunday December 03, 2017 @02:50PM (#15839163)
Messy open source projects gets abandoned as author struggle to finish it or does not have time anymore. Messy close source projects continue, because contracts were already signed.

Deadlines are not the only reason for crappy code and projects without them are not necessary shiny examples of beautiful engineering. Whether closed or open, it often takes multiple attempts till you get architecture right.

Re:A Generation Lost in the Bazaar (2012) by mattbee on Sunday December 03, 2017 @08:12AM (#15837435)
> A big problem with his thesis is that I see just as much ugly crap in proprietary codebases where there is a clear structure of who is responsible for what.

I don't think the contrast he's drawing is bazaar/open source vs. architected/closed source. It's versus strongly opinionated & or clearly-led open source, e.g. varnish, qmail, Rails, sqlite etc.

Re:A Generation Lost in the Bazaar (2012) by api on Sunday December 03, 2017 @10:59AM (#15838094)
A great recent example is the ugly Rube Goldberg machine under the OSX GUI that led to the recent root bug. Look under the hood and it's really a mess.

Windows is even worse. It's amazing it works at all. Linux is generally cleaner in the auth department but has many other abominations.

The only clean software is either software nobody uses or software whose scope is rigorously limited. The latter is very very hard to defend when people are using it. Everyone wants it to do some new thing or be compatible with some other system.

Re:A Generation Lost in the Bazaar (2012) by jackcviers3 on Sunday December 03, 2017 @11:16AM (#15838167)
The code that wins isn't the best code, but the code that ships first with bugs that become features.
Re:A Generation Lost in the Bazaar (2012) by szemet on Sunday December 03, 2017 @09:11AM (#15837616)
"there is a clear structure of who is responsible for what"

In a large org it is never clear, who is responsible for what... ;P And the result is sometimes even more code duplication, workarounds and bad examples of Conway's law in operation, than in free software.

https://en.m.wikipedia.org/wiki/Conway%27s_law

Re:A Generation Lost in the Bazaar (2012) by erikb on Sunday December 03, 2017 @02:16PM (#15838964)
I once worked in a project where I had the time to really make it perfect. Then I realised, when you reach that point, you find it's really not perfect. The world has changed, you've learned more etc. An incomplete solution that is used by many colleagues or customers is worth much more.