I don't really see how the comparison to commercial software is useful. Of course there are different pressures when deciding on the feature sets of Photoshop vs Django. Would Adobe make more money, for example, if they gave all their developers veto power over their products' features?
His point was that the quality of open-source software tends to go up, while major closed-source projects' declines. Profit margin and quality don't always correlate, especially in software.
You are right that some crappy software is highly profitable, but to say that Microsoft's software products have gotten worse with each release is to have a very non-standard definition of "worse". You still might not like Windows or Office, but on the basis of stability and usability, two attributes that most people would correlate with quality, there is really no question that relative quality improved from one release to the next.
That's a lot more debatable than you think. Vista was crashing all over the place back before they added some patches and service packs, and from a usability standpoint many people despise the new ribbon interface.
Yet Microsoft have an awful lot of research suggesting the ribbon is an improvement, which you can read about from their blogs. You could also try it and give them feedback. I refer you to http://blogs.msdn.com/jensenh/archive/2005/09/14/467126.aspx and the rest of detailed and interesting posts in his blog about the Ribbon design process.
Anyway, the parent post claims windows has got better and you say "no, it was bad now it's been improved" - that's not debatable that's you agreeing.
Django is about you making a web framework that makes your/other's life easier. Also doing good stuff, being in control, getting recognition, and what better resume than "I am the lead developer on the Django project"?
In the corporate world its more about making money, not getting fired, people thinking up better ways to make money with what you already have, using your talent to make money, in fact the only reason to create anything in the corporate world is either to better make money or to save money on something that currently costs more money than building + using would cost.
Granted there are exceptions, like 37signals, but they got maaaaaaaaajor recognition for ruby on rails, and that is in itself making them money, or getting them tallent (which helps them make money).
Funny thing is, in my experience, commercial software gets better with time.
I, for one, am not pining for the days of Windows 95, Office 95 and IE 3.0.
Open source, on the other hand, gets more incompatible with time. To keep up with it, you need to constantly rewrite / re-architect your apps, or stick with an ancient but maintained setup, if you can find one, and probably pay for it too.
One might be able to defend the proposition that proprietary money-free software gets worse and worse over time, and open source money-free software gets better and better, as does commercial not-free software. That pattern seems to hold much better, though there are still some exceptions. The apps that give software a bad name are the stupid "free" antivirus apps and Adobe PDF reader and other things that eventually turn into everything but rootkits in a desperate attempt to monetize by any means necessary.
(I'm only covering the end-user experience, not the question of whether you have a problem with updating your own apps written against free software.)
That strongly depends on which open source community you are dealing with. For instance I know people running Perl applications that I developed a decade ago without any changes on current versions of Perl. On the other hand I've heard that migrating Drupal applications to a newer version can be fun.
However there is similar variation within closed source. For example the AS 400 remained binary compatible for 20 years across multiple CPUs and even a migration from 48-bit CPUs to 64-bit CPUs. (And your applications still run today on IBM hardware, but they've changed the name.) However if you developed an complex application in VB 5 a decade ago, have fun porting it to any language supported by Microsoft today!
So backwards compatibility is orthogonal to the question of open vs closed source software.
Your VB app will still run perfectly happily on the latest Windows, even if it's 16-bit, it's worth mentioning. I'd be willing to bet the VB5 toolchain could too, or at least run in a VM.
The VB 5 code may run, but Microsoft doesn't support it. And migrating VB 5 to a platform that Microsoft does support can be challenging. Which is why I said, "...any language supported by Microsoft today!"
Furthermore the rationale for a lot of that VB 5 code was integration with MS Office software. But that software isn't compatible with current offerings. Therefore if you were integrating that VB into your office workflow, the fact that it still could run doesn't stop you from being under pressure to port.
According to http://msdn.microsoft.com/en-us/vbrun/ms788707.aspx VB 6 was end of lifed in March of 2008. You can no longer buy support or licenses for VB 6. Microsoft is trying not to break running applications in Windows 7, but has officially said that this will be the last version of the OS with support.
On the Linux example, didn't I just say that attention to backwards compatibility is orthogonal to the source being open? I didn't use Linux as my poster child for good reason! And even within Linux, you'll find wide variation between distributions. (Debian being an example that is pretty good, Red Hat being mediocre at best, and Gentoo being infamous for regularly breaking things.)
As the author notes, there are many exceptions on both sides, and he's not claiming that it's impossible for projects with closed development models to improve; he's merely indicating that the way in which their software is developed lends itself to a final product of lesser quality (because developers are rushed to meet expectations set by other groups, like sales or marketing).
I think the analogy is most relevant in the case of well-matured and widespread software. Microsoft has an incentive to continually release new versions of Office (namely, there will always be many people who will buy new versions of Office), and because people don't like to pay for bugfixes, there has to be new features to print on the box. Furthermore, these features must seem relevant to your average user.
"Mature" software almost by definition includes the standard featureset its users demand. As we all know, there's always something useful you can do to your project, but once your project hits a certain point, those useful, in-demand features apply to a narrower and narrower audience.
The lack of general applicability on the reasonable "New Features" list for the next release probably upsets marketers and others determined to milk more revenue from a successful franchise, so they go back and demand re-engineering of something that already works or the addition of bloat that nobody really wants or uses but that sounds good on the back of the box.
Open-source software has none of these woes. There are no constraints imposed by the uninformed or the ignorant and the BFDL, whom in all cases I'm aware is a technical person, has the last word on a feature's inclusion.
The difference is that in the commercial world, non-technical considerations and individuals generally mandate changes and unless something is just not possible, technical is rarely given a veto. In the open-source world, technical considerations and individuals generally mandate changes, and unless the project just can't continue without it, non-technical rarely gets a veto. One of these methods obviously leads to better software. Can you pick which one?
I'd argue that, in general, all software gets better over time. I'd also argue that there are as many exceptions to that rule in commercial software as there are in open-source.
Software that doesn't improve over time is generally forgotten and replaced by software that does. Given that, the software we are using at an arbitrary point in time is likely to be in the latter category.
The open source is heaven and closed source is hell propaganda is getting really tired. The irrationality of many members of the open source community hurt its image in the larger world outside.
When you say things as wrong as those said in the blog post, it makes people skeptical of other arguments in support of open source.
Its not about open source vs closed source, its about corporate development in which you are a developer with non-developers deciding what is important VS the developer has the last say.
There are times UI suffers from this, this is why we need some non-developers involved in these projects, we need to reach out to them.
However this is not just about "open source r0x0rs, close source s0x0rs" argument.
Its not about open source vs closed source, its about corporate development in which you are a developer with non-developers deciding what is important VS the developer has the last say.
So, to sum it up, developers are claiming developing software is better when developers are in charge ? I'm shocked.
Propaganda certainly wasn't my goal; I'm sorry the post came across that way. It's a fact that open source consistently produces incredible software; I'm trying to feel my way towards some reasons why that might be. Thinking out loud is tough work; hope you'll cut me some slack.
Feature-creep is definitely something to be careful of but I absolutely love the features that were slowly added to apps like Excel over time. Same with MS Project and even Windows. Why do so many people in the OSS and startup world think that good apps must be minimalist? For web-apps, it makes sense to keep things simple but I would rather have a dedicated icon and keyboard shortcut for the tons of different tasks that I regularly do in Office apps.
It seems to me that a lot of the developers have never seen real users use commercial software on a day to day basis and I don't even mean real power-users. The customer service manager at my work breezes through Excel, Outlook, and Dynamics Nav while on the phone with a customer to give them estimates on product lead-times and changes the sales orders on the fly. She uses tons of shortcuts and keyboard shortcuts in all the apps but in no way would be considered a geek or techie. She's a user who has been doing this for a long time and while she doesn't care about DB2, she is glad to have a toolbar that can refresh external data in an Excel sheet with a single click. It makes her life easy and enables her to take orders worth tens of thousands of dolalrs daily. Commercial software exist not to win design or elegance awards but to increase productivity. Also they tend to support integration with Active Directory/LDAP, Terminal Server, Office, Outlook, and tons of Microsoft apps that makes my life as an IT admin really easy and thus productive.
Honestly, I think us developers/designers have it wrong when it comes to UI. We think there is only one kind of right interface and it must be a clean-cut page with a big green call-to-action button that says "Sign Up". Anything other than this is a mess and confuses users. Maybe this is true for webpages visited by grandmas but I think in typical business environment, it's quite the contrary. Users are accustomed to words and icons and expect them to work in a similar way in every application. So if there is a Print icon in Firefox or Excel, it must do only one thing and that is print the current document. However, while we developers think that the 100 other icons in the same window confuse the user, I've noticed that users don't even notice the icons they don't immediately recognize. What does that mean? It means Office and such feature-rich apps aren't mess but rather have a lot more functional icons that users recognize and can immediately access. The extra icons i.e. the feature-bloat is invisible to the user.
Also his point about not having to be bullied by management makes no difference to anyone other than him. The users and junior developers are still at the whim and mercy of someone who says "no" based on their own personal opinion, no matter how technically correct it might be. I'm not saying commercial software is superior to OSS or vice versa. I'm just saying I find it hard to believe that OSS is getting better while closed-source software is getting worse based on these arguments.
I believe minimalist approach is wrong and right at the same time. Wrong in it's incarnation, right in it's philosophy.
1) Do one thing, do it REALLY REALLY well.
being open source, other projects can take parts of your project and build on top of it to create a different projects (say you create a widget, and widgets have utility functions which are useful for creating sprockets, so the sprocket project depends on the widget project, but still remains it's own thing.)
Often the mentioned above fact can go overlooked "I can do it better" vs "what can I take away from that project to make a better one for my needs"
2) We still need the overarching giant featureful project. So if you create a bunch of tools which when working together can make a web framework, why not put some effort to make a good web framework that borrows from multiple projects?
As a response to the article: Create the Django Complete project. In it you integrate Django, migration, DB2 support (say a new project that gets started), The Django bar, but in the end you don't actually get the feature creep going into Django EVER to incorporate everything period. Instead you have multiple specialized independent projects, all meeting together in one project to make it better for the community.
I strongly disagree, OpenOffice and firefox are just trying to drag their weight, and they still try to integrate shiny stuff even when they're still far from the par. Moreover, a bunch of dev saying "no" to a marketing team and choosing technical stuff first is not the same as a product manager saying "no" to everybody, being developer or marketer or customer or presales.
I used to be in this position of saying "no" (even to my boss), and you have no friends there.
31 comments
[ 5.0 ms ] story [ 72.1 ms ] threadHis point was that the quality of open-source software tends to go up, while major closed-source projects' declines. Profit margin and quality don't always correlate, especially in software.
The ribbon was yet another dramatic change that was long overdue. Everybody loves it once they 'get it'.
Anyway, the parent post claims windows has got better and you say "no, it was bad now it's been improved" - that's not debatable that's you agreeing.
Django is about you making a web framework that makes your/other's life easier. Also doing good stuff, being in control, getting recognition, and what better resume than "I am the lead developer on the Django project"?
In the corporate world its more about making money, not getting fired, people thinking up better ways to make money with what you already have, using your talent to make money, in fact the only reason to create anything in the corporate world is either to better make money or to save money on something that currently costs more money than building + using would cost.
Granted there are exceptions, like 37signals, but they got maaaaaaaaajor recognition for ruby on rails, and that is in itself making them money, or getting them tallent (which helps them make money).
I, for one, am not pining for the days of Windows 95, Office 95 and IE 3.0.
Open source, on the other hand, gets more incompatible with time. To keep up with it, you need to constantly rewrite / re-architect your apps, or stick with an ancient but maintained setup, if you can find one, and probably pay for it too.
(I'm only covering the end-user experience, not the question of whether you have a problem with updating your own apps written against free software.)
However there is similar variation within closed source. For example the AS 400 remained binary compatible for 20 years across multiple CPUs and even a migration from 48-bit CPUs to 64-bit CPUs. (And your applications still run today on IBM hardware, but they've changed the name.) However if you developed an complex application in VB 5 a decade ago, have fun porting it to any language supported by Microsoft today!
So backwards compatibility is orthogonal to the question of open vs closed source software.
Furthermore the rationale for a lot of that VB 5 code was integration with MS Office software. But that software isn't compatible with current offerings. Therefore if you were integrating that VB into your office workflow, the fact that it still could run doesn't stop you from being under pressure to port.
Try running an app compiled for a 1.x Linux kernel on 2.x... Or even a different libc!
On the Linux example, didn't I just say that attention to backwards compatibility is orthogonal to the source being open? I didn't use Linux as my poster child for good reason! And even within Linux, you'll find wide variation between distributions. (Debian being an example that is pretty good, Red Hat being mediocre at best, and Gentoo being infamous for regularly breaking things.)
I think the analogy is most relevant in the case of well-matured and widespread software. Microsoft has an incentive to continually release new versions of Office (namely, there will always be many people who will buy new versions of Office), and because people don't like to pay for bugfixes, there has to be new features to print on the box. Furthermore, these features must seem relevant to your average user.
"Mature" software almost by definition includes the standard featureset its users demand. As we all know, there's always something useful you can do to your project, but once your project hits a certain point, those useful, in-demand features apply to a narrower and narrower audience.
The lack of general applicability on the reasonable "New Features" list for the next release probably upsets marketers and others determined to milk more revenue from a successful franchise, so they go back and demand re-engineering of something that already works or the addition of bloat that nobody really wants or uses but that sounds good on the back of the box.
Open-source software has none of these woes. There are no constraints imposed by the uninformed or the ignorant and the BFDL, whom in all cases I'm aware is a technical person, has the last word on a feature's inclusion.
The difference is that in the commercial world, non-technical considerations and individuals generally mandate changes and unless something is just not possible, technical is rarely given a veto. In the open-source world, technical considerations and individuals generally mandate changes, and unless the project just can't continue without it, non-technical rarely gets a veto. One of these methods obviously leads to better software. Can you pick which one?
When you say things as wrong as those said in the blog post, it makes people skeptical of other arguments in support of open source.
There are times UI suffers from this, this is why we need some non-developers involved in these projects, we need to reach out to them.
However this is not just about "open source r0x0rs, close source s0x0rs" argument.
So, to sum it up, developers are claiming developing software is better when developers are in charge ? I'm shocked.
It seems to me that a lot of the developers have never seen real users use commercial software on a day to day basis and I don't even mean real power-users. The customer service manager at my work breezes through Excel, Outlook, and Dynamics Nav while on the phone with a customer to give them estimates on product lead-times and changes the sales orders on the fly. She uses tons of shortcuts and keyboard shortcuts in all the apps but in no way would be considered a geek or techie. She's a user who has been doing this for a long time and while she doesn't care about DB2, she is glad to have a toolbar that can refresh external data in an Excel sheet with a single click. It makes her life easy and enables her to take orders worth tens of thousands of dolalrs daily. Commercial software exist not to win design or elegance awards but to increase productivity. Also they tend to support integration with Active Directory/LDAP, Terminal Server, Office, Outlook, and tons of Microsoft apps that makes my life as an IT admin really easy and thus productive.
Honestly, I think us developers/designers have it wrong when it comes to UI. We think there is only one kind of right interface and it must be a clean-cut page with a big green call-to-action button that says "Sign Up". Anything other than this is a mess and confuses users. Maybe this is true for webpages visited by grandmas but I think in typical business environment, it's quite the contrary. Users are accustomed to words and icons and expect them to work in a similar way in every application. So if there is a Print icon in Firefox or Excel, it must do only one thing and that is print the current document. However, while we developers think that the 100 other icons in the same window confuse the user, I've noticed that users don't even notice the icons they don't immediately recognize. What does that mean? It means Office and such feature-rich apps aren't mess but rather have a lot more functional icons that users recognize and can immediately access. The extra icons i.e. the feature-bloat is invisible to the user.
Also his point about not having to be bullied by management makes no difference to anyone other than him. The users and junior developers are still at the whim and mercy of someone who says "no" based on their own personal opinion, no matter how technically correct it might be. I'm not saying commercial software is superior to OSS or vice versa. I'm just saying I find it hard to believe that OSS is getting better while closed-source software is getting worse based on these arguments.
1) Do one thing, do it REALLY REALLY well.
being open source, other projects can take parts of your project and build on top of it to create a different projects (say you create a widget, and widgets have utility functions which are useful for creating sprockets, so the sprocket project depends on the widget project, but still remains it's own thing.)
Often the mentioned above fact can go overlooked "I can do it better" vs "what can I take away from that project to make a better one for my needs"
2) We still need the overarching giant featureful project. So if you create a bunch of tools which when working together can make a web framework, why not put some effort to make a good web framework that borrows from multiple projects?
As a response to the article: Create the Django Complete project. In it you integrate Django, migration, DB2 support (say a new project that gets started), The Django bar, but in the end you don't actually get the feature creep going into Django EVER to incorporate everything period. Instead you have multiple specialized independent projects, all meeting together in one project to make it better for the community.