II preface this by simply stating that if I truly didn't care about Linux, I wouldn't bother spending my time typeing this. Secondly, I may not have contributed a kernel patch, but this is my contribution back to the community that gave me something for free.
f Linux can do these five things, then I think it has a change of taking some more share of the market. It will not beat windows, simply because most windows users wont appreciate what Linux can do for them. No point in Ferrari making station wagons for families, is there? Because there are more families who just want to move shopping than sports car enthusiasts, it would be silly for Ferarri to base their success on selling more cars than Toyota. If they do, then it would mean that the Ferrari is no longer a Ferrari but a poor quality clone of something else.
Likewise, if Linux ever takes over Windows, it will only be by becoming an imitation of Windows, thereby removing the 'alternative' aspect to the desktop alternative.
1: Software installation.
Imagine if I could compile code into a binary, put that binary on a website, and anyone with a machine with the physical horsepower to run the code can do so. I wrote DOS programs in Assembly and C on a 386 then a Pentium, and I was able to copy the .EXE and run it on my old XT system. Likewise, I can download the latest version of the 7zip GUI version for windows, and run it on ANY windows machine, including Win98B. With Linux, even though your PC has the capability of running the program, you can't because you dont have the right libraries, or the latest OS version. OR you have the wrong distro, which doesn't have the necessary libraries in the reposity etc.
If people could create ONE final product, and it runs on all Linux system, including ones a few years old, and the method of installation is the same (so they cal all install it), then it becomes far easier for software developers to write apps for Linux, and ALL Linux users can enjoy those apps instead of grapple with the system.
2: User Friendliness.
The secret to user friendliness isn't flashy design, but simply being logical, consistent and having a UI which behaves as the user would expect it to behaive, and provides all the information necessary in a manner the user can understand and manipulate. I've written DOS software which is still used by factory workers today and never had any complaints about it being difficult to use. Because it was written precisely with a clueless user in mind, I had to drop all prior assumptions.
GNOME seems to take the 'make the UI spartan and remove features and information' approach, as if extra information somehow confuses people. It doesn't, lack of consistency confuses people. A more complex, feature rich GUI will win out in user friendliness over a simplistic, scant UI if its more consistent, more logical, and presents information in a meaningful way which the user will understand, or can surmise the basic gist.
Windows wins because of consistency. The changed the start menu once or twice, but you can change it back to exactly the way it was in Windows 95. And changing the start menu was just a marketing gimmick I think. I've worked as an IT Co-admin for a company, working closely with all users and the thing that causes the MOST problems for users, is when something unexpected happens or something changes. Yes, some users struggle to learn, but generally, computer illeterate people can cope quite well with even complex interfaces, as long as it operates consistently and predictably.
Linux doesn't have to emulate windows, but it does need consistency within the destop environments and windowing systems. Rigid, disciplined consistency, ie leave out redesigns, only enhance and add.
3: The hackish aspect to get things working needs to go.
I'm not saying the CLI must go, or the capability to edit text files must go. Just that Linux must be developed with this one question in mind.
"To get this software/hardware/driver to work. Will the user suddenly need to learn something unrelated to the direct operation of the software/hardware/driver aside from the standard isntallation procedure?"
If the answer is 'yes', then there is something that needs attention. Examples of this include having to learn to edit a 'makefile' to get a graphing program to work (editing makefiles has nothing to do with the function of the program, so the user shouldn't have to learn it). Because the user wants to generate graphs, they should only need to learn how the software works and just how to get it on the computer. This is because they CHOSE to use this program. Of course, if the program itself is hard to use, this isn't the fault of Linux.
Editing config files and recompiling the kernel to get a driver to work. The kernel code and unrelated config files have nothing to do with the drivers or the hardware.
To use an analogy, if you have built a car, where the driver all of a sudden needs to learn about auto-electrics to tune the radio from AM to FM, then you've failed somewhere. Linux advocates call this 'learning about your computer', but they forget that people should learn what they WANT to learn and what they directly NEED to learn.
To install a program or hardware, I should only have to know the procedure for putting the software on, or for installing the driver and connecting the hardware. This isn't remaining ignorant, its giving the user FREEDOM. If the user WANTS to learn how to compile software, or patch the kernel, then by all means they should be able to. If they WANT to learn the intricacies of the guts of some apps, then they should be able to. But it should be a choice, not something they are forced into because the app is incomplete and the developers deem that they should expend the time and effort. Again, this requires consistency.
4: Choice ain't always a good thing.
PEople have a choice, Windows, Macs, Linux. "Freedom of choice" has become a meaningless mantra. Sometimes having something that works and I can use,is more important than my ability to 'choose'. Besides, there is no true freedom of choice, unless you actively research all the distros and their versions and try them out. Sorry, but I disagree that having 500 versions of Linux is a good thing. 5 maybe, one desktop, one server, one 'desktop lite', one bootable live version, etc, would satiate people but 97% of computer users don't care nor should they. I reckon 90% of people who want to try Linux, again, dont' really care about distros, they just want to use Linux and use one that works.
Imagine walking up to a vending machine and there were 40 versions of coke, each with a different name, and when you asked which one you should get, you get 50 different responses as to which is the best.
At the very least, it should be done so it doesnt MATTER which one you choose. That is, if I run Debian, or Xandros or RedHat or Slackware or VectorLinux or Xubuntu, I can install that version of aMSN I downloaded off the net and put on a CD and it will install and run, putting a menu entry.
Again, it shouldn't matter which desktop environment I choose to run, or which windows manager, I can just install that program and it will install and run, putting a menu entry. So the question really becomes "How can we do it so Fluxbox, KDE, GNOME, FVWM, XFce, IceWM, etc can all source the same menus so someone writing a program for Linux only has to create one menu entry and any Linux user will be able to use it".
5: Ditch the Freedom/Open Source rhetoric as being the prime reason to adopt Linux.
Software freedom is good, but it's not a panacea. I can program in C/C++ but most of the time, I don't care to rewrite OS's or rewrite parts of software I think should work differently. I don't particularly believe that I should cripple my computer and not run games and lots of apps I need and hardware for abstract ideals. I run my computer first and foremost to get stuff done, which is what an OS is supposed to facilitate by enabling people to run and distribute software.
Most people don't really look through thousands of lines of Firefox source code to see if there are backdoors, or privacy issues.
Most people don't really rewrite their OS of they dont like this or that feature. Most people don't care that they dont have Windows source code, because even if they DID have it, personally fixing Windows to their liking is too much effort to be worth it. Its CHEAPER just to buy a MAC. Likewise, its CHEAPER, if your running a 100% open source system that doesn't filfill your needs to outsource the code writing to create an OS more to your requirement, than do it yourself. Well, thats what in essence your are doing, if you buy a copy of Windows to install over Linux, isn't it? You're just paying someone who's done the work for you rather than spending your days recoding an OS and DE, which costs much more.
Don't get me wrong, there are some valid points to be made against some business practices in the software world. I do believe that hardware vendors SHOULD release specs, and that each customer is entitled to have the knowledge to use their product as they see fit. I don't dispute that, and nor do I dispute it as being a reason that Linux's hardware support is behind windows.
But I really dont think that the majority of people who enthusiastically enjoy computers, would really, really make a significant change to their OS of choice, for the rather impractical promise of being able to do this and that with the source code.
I say this as someone who isn't a 'point and click' computer user, but someone who has been using computers since 1989, who has built PC's, programmed for various platforms in various languages including assembler and has maintained and done all that tricky stuff under Linux. I guess I'm one of those who wants to use my PC as I see fit, free from the dictates of a company, free to use the CLI if I want to and to have complete control over how I use my computer and to be able to tinker, to have the inner workings transparent.
Thats why I went to Linux. That and the fact I thought it was technically superior to Windows. At the time (mid 2000), it was in terms of stability and raw power.
But sadly, I realised that there are many things which are holding this potentially great OS from those who really want to use it. I have friends who WANTED to get away from Microsoft, and still want to, but Linux just doesn't cut it. They're not 'retards' or 'idiots' as many Linux geeks would call them, they are just struggling with things they shouldn't have to struggle with. Things the Linux community rarely acknowledges because its too busy contratulating itself.
And I realised on thing. Everytime someone I knew went to try Linux, I knew, I just knew that I would have to be there to break through the stonewalls. I knew that if someone was going to install it on a spare partition and want to access their FAT32 or NTFS partitions, that unless I made myself available to do all the 'clickly clicky' stuff editing /etc/fstab, setting permissions, etc they would be turned off and go back to Windows.
I've even read comments from Linux users who set up their mums system, that they set it up so they can SSH in and do installs, updates, maintenance etc. That is, I know, and i think many other Linux users know, though don't admit it, we have to be there to make Linux look like it runs smooth and try to explain away all the obstacles. Obstacles that people who are quite adept with windows, would stump them. Quite simply, I think Linux's usability comes from having an army of 'geeks' constantly babysit and smooth over the problems. Either by repackaging software and maintaining a repository, or by doing the admin stuff themselves for a friend or relative, and leaving that person stuck within the confines of "Only install from the repository" and "dont do this, or that, you don't need to. Dont but this hardware, or that hardware". If you can't give the CD to someone, and leave them be and be confident, then thats not freedom.
It shouldn't have to be like that, and it DOESN'T have to be like. But I don't see it heading in the right direction yet.
Linux Doesn't Suck. but i
Linux Doesn't Suck.
but i must admit that most of the points you make in your article are valid.
1: Software installation.
1: Software installation. [...] If people could create ONE final product, and it runs on all Linux system [...]
It's important to realize why this problem exists. There is a one-final-product, and it is the source code. Unfortunately, source code breaks point #3, any package managers, (etc).
This is why the process is supposed to work like this:
Unfortunately, when users are trained "you download free software from the author" they move step #3 into #2, and disrupt to process.
What I would suggest is that all Developers agree to only distribute their code through revision control systems, such as SVN. This means that Users aren't deceived by "download" links which ask them to understand some wizardry gibberish.
Once we have that in agreement, we need a common location to publish developer's repositories, and log the latest release branch. This way centralized, automated routines can alert distributors when a new release or a bugfix becomes available.
The Developer of the software may then create "get this software" buttons that link to this central location. The central location will keep a log of what Linux distros each program been packaged for, and directs them towards instructions for the Linux they are running. Further, the system must distinguish between "Official" and "Unofficial" channels. "Official" should mean "from-the-distribution" or "from-the-software-author" and "Unofficial" should mean everything else.
I know that there are many systems which do several of those above points, but there are very few which do such in an almost completely automated manner.
5. Ditch the Freedom/Open Source rhetoric as being the prime reason to adopt Linux. [...] Well, thats what in essence your are doing, if you buy a copy of Windows to install over Linux, isn't it? You're just paying someone who's done the work for you rather than spending your days recoding an OS and DE, which costs much more.
Excellent point, something that definitely is worthy of consideration by many people.
"#3. Users go through
"#3. Users go through official channels to get their software."
Why is this desirable? Open software, closed channels? I thought the point of the whole fucking thing was CHOICE. Now you're telling me I will have this propaganda beamed into my head whether I like it or not, and I can't even pick which satellite it's coming from?
Fuck, I thought that was what we hated about MS and Apple...
I'm kidding. Of course I know why "official channels" are desirable, but they are antithetical to the theory of an open OS.
this attitude that users
this attitude that users should stick to "official channels" is to
a) mask the fact that there is massive binary incompatibility.
b) to hide the fact there is little distinction between finished 3rd party software and unfinished third party software.
c) to CONTROL the user, making sure the Linux "works for them" by corralling them and spoon feeding them.
Yes, I agree, the idea of using 'official channels' is completely contrary to freedom, choice and the user having control. It also takes away control from other software developers who cant put their software in those official channels.
It is ironic that I moved away from Linux, precisely because I wanted to AVOID a sitation where the distributor of the OS has in place mechanisms to decide how I use it.
If Microsoft had "official channels", the OSS community would blast MS for it..
I understand why the problem
I understand why the problem exists, but relying on "official channels" means that
a) there IS an official channel.
b) Its up to date and maintained for at least several years. (The shelf life of Linux distros is astonishingly short)
c) You have available internet access on that particular machine (in poor areas this cannot be assumed, you know, the poor areas where a free OS is a REAL benefit but internet access might be limited to just a few users, or even just the local net cafe).
d) You can't really sell your program or stop others screwing around with it.
e) Software can't be redistributed by third parties. That is, I can't go to my friends PC with the binary on a USB Stick/CD and say "Here, try this!", or download it, archive the file and install it on another machine (to save redownloading the same damn program each time I want to install it). Unless they have the same distro, and the same version of it, but even then, I wouldn't know how to do it because how to I tell apt or whatever GUI frontend to do this?..... Tell me, if I decide to uninstall a program downloaded from a repository, then decide to reinstall it, do I have to download it again?
You call that freedom?
It also means that if I want to write a program, and put it on my website, I'm disadvantaged. I have to hope the kind people who work for all the distros are nice enough to package my software. I have to provide SVN access (SVN wont install on my Linux distro) Again, is that freedom? An OS where I can't distribute software to customers and work independantly of the people who maintain the OS? What if I want to put it on my own website?
I can't tell you how much that sucks! This is just what I would have pictured MS doing, clamping peoples scope of computer use even further down and dumbing things down even more. This is even more Microsoft like than Microsoft!!!! It's a travesty!
The system you prescribed is suitable for the least computer literate Windows users who want their hand held every step of the way and don't want to deviate outside the parameters that Microsoft/The Linux Community decide they should stay within.
"We'll take care of it for you". Thats the motto.
A free OS FREES the user from being reliant on the creators of the OS, or having their computing experienced shaped, or dictated to by others. That was why I moved away from Windows because I thought this was where MS was heading, only to find out that Linux has developed into something WORSE! I never thought I'd say it, but in many respect, Windows offers MORE freedom. I can download software from anywhere and it will work. I can write my own Windows/DOS programs and anyone can run them. I can archive installer files if I want and they are useful later on, even if I upgrade my machine. I can keep running Windows 2000 or even Windows 98 if I want and not bother upgrading. With Windows 2000 I can STILL run pretty much everything, including all the older stuff I purchased and still like to run. With Linux, do I have to redownload the same software all over again?
The fact is, with Windows, once you've bought it and installed it (or purchased the computer with it installed), you can end any reliance or relationship with MS and forget they exist and keep using your computer productively and independantly, for ages, with the ability to install nearly all new software and games and any hardware your PC might support. You can go live in the woods.
Once you have the OS, you should be FREE to do what you like, keep it as long as you like, and not have to be ever suckling at Fedoras, Debians or SuSE's teat, upgrading every 6 months because they think you should, downloading software from them because its too hard to get it from the author and having the OS change to what they think you should use.
Linux is by developers for developers, so then why do you guys need this system? Who is it for? The kind of people who are happy with Windows anyway and don't appreciate the extra power and flexibility Linux gives?
Good points. Except for
Good points. Except for (c).
Let's really avoid the whole Freedom discussion; I find that the Freedom that the FOSS guys talk about has nothing to do with "little red tape" and nothing to do with "low cost." Instead we've got a bunch of amateur political science students talking about something they haven't really studied. Really, let's not go into that topic; right or wrong, it's not our area to critique the ideas and systems they propose.
Instead, lets assume we're dealing with first-world nations. And lets assume preponderance of bandwidth. Would the system I described work for most of the problems? Note that the description of an "official channel" includes the author of the software; he can handle the big distros, and let others handle the rest.
As for (e), the act of putting a program on a flash drive, and taking it to a friends, as long as we've got the root user (which is a good thing, but confusing to new users), that wouldn't be possible even on standardized systems. But that's what projects like Klik are for. Most of them just haven't ossified sufficiently to be of significant visibility.
Speaking of ossification, that really is the whole problem; core libraries continue to evolve; the kernel itself evolves constantly; everything is in a constant state of flux, and nothing has ossified. Now this type of environment is almost akin to "primordial soup" - and that is extremely beneficial to the creation of some amazing organisms... but not to something that is consistent to user expectations.
So it comes down to a simple question; either you love to surf, or you're trying to swim. In the former? Go Linux. In the latter? Go FreeBSD. Unfortunately, market dominance of Linux means products aren't written with FreeBSD in mind initially - chalk that up to the GPL advocates. But we really don't want to get into that flamewar. Suffice to say, having used both, I wish that the roles were reversed; that Linux was the playground for new ideas and hardware, and FreeBSD (or DragonflyBSD, which I really like [as a code monkey myself]) was what the majority of users used.
Lets forget RMS style
Lets forget RMS style "Freedom" and just talk about the freedom to be unencumbered by having others dictate requirements. If a system allows me to choose to continue practices I'm familiar with, to do thing MY way, then it offers freedom. I will just say this, usually, the most important freedom is "Freedom FROM" rather than "Freedom TO". Thats why Linux was initially appealing, because I thought that it, more than Windows, would offer freeom from having to adapt my computing practices, freedom from having to upgrade my computer when some developers think I need too, free from essentially being coralled into a particular paradigm or technology set, or some form of new dependance etc. I think its important, because most of the people I know who were interested in Linux, wanted this freedom, yet it rarely gets more than just mentioned here and there. I think Linux suffers greatly as an OS because of this, because it tries to be as "dumbed down" and automatic as Windows, which turns away the 'power users', yet at the same time, make harsh demands on time and knowledge once someone steps outside the cotton wooled set up designed for Aunt Mavis.
You state " lets assume we're dealing with first-world nations. And lets assume preponderance of bandwidth.". Well, thats kind of the problem. Once you start "assuming", you make it a requirement. Cars were initially optional, but at a point, everyone "assumed" that most citizens would have a car, and then it changed from being something optional, to almost mandatory. Same with mobile phones, with housholds having dual incomes, etc Wages and house prices were based on one wage earner per household. As two wage earners became more common, that became the new assumption and prices and wages adjusted accordingly, removing the option for a household to have one wage earner and a reasonable standard of living. Cities were redesigned after the advent of cars so now you CANT go shopping, or go to work, or travel about easily without a car. Even crossing the road is dangerous. If you're lucky to live in a city with good public transport, you have one other alternative for transport. Same with broadband. If you assume that everyone is going to have fast broadband with generous limits, then people start to design software to REQUIRE it, and it ceases becoming optional, to becoming something mandatory. Whereas previously I could quite easily get away with not having fast, always available internet, now the OS's (Windows AND Linux, but Linux unfortunately much more so) REQUIRE it. So if I live somewhere where internet access isn't at this standard, and in my home country Australia, a first world country thats pretty much all the bush, even many suburbs in larger towns, big cities, I'm kind of stuck. It's classic red queen scenario. You have to run as fast as you can to stay in the same place. Technophiles tend to just concentrate on what you know CAN do, without looking at the flip side. Technological development often takes away fundamental freedoms, so it must be approached with great caution. Yes, there is a luddite side to me, and I think with good reason.
And again, I'll repeat, the problem is that the whole repository system is a cover up for a larger problem, the lack of standards and binary compatibility, as you've already described. But rather than address the issue, Linux developers and Distro developers have pushed the 'cost' onto the consumer by essentially requiring them to dedicate more online resources, and make these available. Technology which people can control, repair themselves, maintain themselves, and use within their own frameworks is empowering and liberating, a point that Ivan Illich made in his book "Tools of Conviviality". Technology which is centrally controlled, which people have to make concessions to maintain and use, which maintenance and development is done centrally and without the users control, where they forfiet opportunities and abilities to accept it, do the opposite.
If I choose to write software ( and I do, a little), I do not have the means to test it on all distros, nor the time or networks to ask for it to be made part of everyones repository. Even then, I cannot choose my method of distribution, or have a direct trade betwee me, the supplier, and the user. Whereas before I USED to have this freedom with DOS and Windows (and still do with Windows), with Linux, the system which is prescribed deprecates this freedom. That's not empowering. My argument is that Linux could offer something which offers the user more self empowerment, autonomy and allows greater freedom for them to choose their computing circumstances and freedom from the choices and opinions of others. A REAL alternative. Thats something I know a lot of 'potential' Linux converts, who dislike Windows and have been interested in Linux, would want. But in reality, Linux offers more of the same trends, just under a different name. Probably precisely because developers are mad keen on pleasing those who like "The Windows Way", who dont care about computing other than playing games, downloading torrents and browsing the net for lolz and safe in the knowledge there is no CLI at all. Rather than offer fruit juice, iced tea or water as an alternative to Microsofts Coke, they've just given us Pepsi.
Just remember, people dont go to Linux because its easier to use, and nor SHOULD they, its not the advantage Linux gives. The kind of person who would use Linux in the first place won't care if they have to download an RPM or DEB and use Kpackage or GnoRPM to install it. I doubt Linux will ever ossify though. I've been using it for 8 years, and its been around longer than that, over a decade. In computing terms, that a lifetime and I think it might possibly be too late. Linux has developed too far along the wrong path I think. Too much would have to be re-written and discarded and obsoleted to fix it. Besides, its not a technical issue, its a CULTURAL one. Most developers just don't seem to care for broad compatibility, or users for that matter. (Witness the famous remark from the KDE team about KDE 4 not needing users (!?!?!?!!?)).
For the first paragraph, you
For the first paragraph, you always have to sacrifice something. To make decent UIs, you have to have a design. If you just expose raw power, you end up with something only the programmers understand [I've built enough of those to appreciate the people who advance HCI...]. The ability to do things your own way comes at the cost of doing research, or time spent coding... I know that's a cop-out, but unless shown an alternative, it's what I agree with.
What design methods would you suggest that would allow users to do things their way, in a GUI? Personally, I use wmii+cli not GNOME or KDE because it suits my keyboard-intensive lifestyle, but it still took some time finding it, then configuring it. As pointed out, the CLI isn't for most users... but it's still the most highly combinable interface, and, IMO, the biggest strength of Linux (and *BSD, and Mac OS X) over Windows. ...Right now, my most hated program is the web browser, since I need to use the mouse to click links, and that violates the otherwise clean setup.
For the second paragraph, I ran Gentoo Linux over a 56k modem in rural Canada over a sporadic connection [just up until a few months ago]. Still, I've heard (from the Chaser, specifically) that things really do suck in Australia regarding network infrastructure. (Also, I'm the single income earner in my household, I don't have a cell phone nor a pda, I car-pool with the neighbours, and I cross the streets without fear - no snakes up here, /grin/.) I agree that making assumptions may appear dangerous, but if you want to build something, you sometimes just have to assume the infrastructure is there. And in free markets, that often is the only way to make enough demand so that it ever gets built.
I've never read "Tools of Conviviality." I take it you recommend it. Regarding binary compatibility and such, I just accept it won't happen anytime soon, and I'd rather try to figure out a way to abstract the development stuff from the user. Then the system will be free to evolve to create a single dominant entity, and we'll have something. Either that, or it will constantly stay fighting one another. I couldn't care, as I already said I'd prefer a BSD be dominant - and that doesn't look very likely.
On to the fourth paragraph, that's where one would introduce little "partnerships" into the system I described. Partner with a company that runs a build farm, with virtualized instances of every popular Linux distro. Now you've got (a) network for source code, (b) official channels, (c) a build farm, (d) network for binaries. Heck, next go even more nuts, and offer people the ability to "save a program" to a flash drive - the resultant installer saves just enough information to kickstart the download on someone else's machine (or, the user could chose the "offline install" mode which include binaries for the most popular Linux's, binary-diffed for space savings).
Back to topic, you say "A REAL alternative" - any design suggestions for that? I find wmii a real alternative to GNOME, KDE, etc. But I recognize most users won't. Perhaps some examples of "technology which people can control, repair themselves, maintain themselves, and use within their own frameworks" would help clarify your point.
On the fifth paragraph, I agree completely. There is something fundamentally broken. But I don't think we really know what it is, nor how to fix it. Perhaps there is a point you are making which I keep missing.
Lastly, that comment was horribly taken out of its meaning. I think that the KDE 4 team, Aaron Siego in particular (being a fellow Canadian), has done an excellent job with pushing KDE 4 towards the future. It's not a future I want to be a part of, but it is a future none-the-less.
I think you missed the point
I think you missed the point of my post.
I wasn't recommending any specific technical solutions. The problem seems to be that anyone involved in developing technology, is so caught up in the immediate technological problems they face, they rarely draw themselves back to see the bigger picture. An economist looking at a financial crisis would propose a solution which involves the application of some economic theory, when in reality the problem could be a cultural one, or one of expectations people have or lifestyle.
Let me put it this way. Imagine the government wanted to implement ID chips for everyone. You know, voluntary at first. People involved with the technology would see privacy and use issues purely in terms of "How do we ensure data is encrypted", "How do we stop ID theft", etc etc, you know, technical issues which technicians can fix. In the real world, the issues are not technological, or about which encryption method, etc, they are about implementation. The real privacy issues is that this exists in the first place, etc. But speak to the companies which make the chips, and the only issues will be technical ones.
The problem with Linux is because EVERYONE involved is a developer, every problem faced is viewed as a programming problem, one that can be fixed by writing a different program, or another program. Thats why Linux is full of wrappers around programs and scripts which create scripts to manipulate programs. Users having problems installing software? Lets write another program. It's like trying to build a house, and everyone involved has a hammer. They will approach every problem as a nail.
What I mean, by allowing the user to do things their way, is basically to adapt your fundamental design principles along the computing practices that your target audience is accustomed to and would expect from your OS. People who have moved to Linux don't go to Linux because they want 'one click install'. They want control over their machine. They want more autonomy and more freedom to fully exploit their hardware. Well, they the reasons to use Linux that were given to me. It's not nothing to do with "which GUI", or "Which CLI" or how to intergrate. People don't want a 'new' best, they want what they know. They have based their computing methodology around certain structures and paradigms and capabilities and different people have different structures. Linux users USE the CLI, so unlike Windows, having a strong CLI in Linux isn't an issue. Windows and DOS users (and unix ones too I think) are used to the OS being somewhat transparent, and the focus being on the programs they run, which are independant of the OS. The OS only provides the means to allow software to install itself and to launch it. The Linux equivalent would be downloading an RPM and installing it.
Before anyone begins to write code for any OS or system, they need to think "How will this be used?" and "How can this be designed to satisfy the expectations of my target audience?"
Windows is designed to be a commercial product, hence it's target audience is as many people as possible, therefore it is designed to meet the expectations of the lowest common denominator. On top of this, it's marketing campaign creates expectations and essentially says "This is what you should want and expect. We have it for you!".
Linux on the other hand, because its not a commodity product, has the freedom to forsake a large number of users to cater to the expectations and styles of a smaller number of people who find the competitor insufficient, restriction and possibly even oppresive.
This is what Apple do. They don't have the majority, probably never will, but they have a loyal (very loyal!!) base of users because they expect their computer to behave a certain way, and to be used a certain way and Apple constantly caters for it. All their products are like that.
I think the length of our
I think the length of our posts is getting in the way of our ability to understand one another. So I'm going to write this one the way I would for my boss.
These are what I think your points are:
1) Niche markets are good.
2) Niche markets can be supported by general purpose systems.
3) Holistic views of problem + system must exist.
4) Linux is too much of a developer playground.
5) "Learn-once, use-forever" trumps "easier every time you relearn it!"
6) Keep compatibility, even when versions break (this is, after all, one of the FOSS selling points).
7) Stop being such rock stars, and try for once to think of the people working on the system.
8) Tell the truth. Even when it sucks, tell the truth. Listen to the users, then tell the truth.
And if it isn't clear what any of those point means, then I didn't make very good ones.
Youre right, my post was too
Youre right, my post was too long.
I'll just add a few points to yours
1+2) Absolutely. No shame in being a niche market, you can achieve success if you understand your niche. Far better for Linux which is inheritaly a niche product, to find its niche than compete for the same niche as Windows.
3) Design is often more important than technical details.
4) More that Linux's development has only been by developers, and solutions have always been approached from the angle of 'what software can I write to fix this?'. Kind of like the "If you have a hammer, you see every problem as a nail" scenario.
5) Absolutely. So much emphasis is put on developers on reusing code, so why can't the users 'reuse' what they've learned?
6) No compatibility = No platform. Period.
7+8) No OS HAS TO please users. If a group of developers wanted a wierd working OS for themselves, they're free to do that. But with Linux the cat's kind of out of the bag. So make the choice. Either you want people outside the clique to use it, in which case, think of that niche, or else just be honest and say its not a general purpose OS. People get narky with Linux because it's sold on the idea that its a platform that the general public can use, then later find out that thats not the case. That is, first and foremost, you're developing a system which facilitates and provides a computing environment which the niche market expect, which incidently, means not catering for the needs of the rest.
I believe that potential Linux users would largely want an OS that lets them use their system THEIR way, under their terms with freedom to do things, and not to do things, and to do so without a horrendous learning curve. I could be wrong, but I read many more articles about Linux users putting Linux on their unsuspecing mothers, grandmothers, aunts and kids PC's, than about what it is that makes the non-developer computer enthusiast move to Linux.
1+2) Agreed, mainstream
1+2) Agreed, mainstream success can often come from targeting the niche, then convincing the mainstream market they want to be a part of that niche. Right now everyone is doing the latter, but hasn't yet finished the former.
3) Design and Technical are both important to consider, and neither should trump the other. Designs must evolve with technical ability, but the end vision for a particular component should stay consistent.
4) But if every problem has a solution, is this not a valid approach? The flaw, IMO, comes not from trying to solve problems, but from how we see the problems.
5) Because Linux is mis-marketed. IMO, Linux is, and should remain, a sandbox for the free flow of ideas. The issue is that most people don't give a rats arse about ideas, they want their job done [or, as JWZ said, "to get laid"].
6) The question is "how do you accomplish this, when the available talent has found more interesting ideas?"
7+8) Agreed. But that's a really hard call to make. Politics, eh? Personally, I'm in the "we're different, enjoy the ride" camp.
---
Many would suggest all your comments will be addressed once Linux gains market share. That some company will produce the consistency that people want, that device manufacturers will write drivers themselves, etc.
That is a possibility, although it's hard to see, since as you pointed out, it seems we're in a Red Queen scenario - both technically, and with the markets.
---
I think that you and I will find ourselves on opposite ends of the camp, however. While I do agree that the issues you've pointed out do exist, I do not consider them to be insurmountable with present strategy and tactics.
Myself, I started running Linux (with RedHat 5.2) before I was writing any software. There was a lot of push/pull, but eventually, with Gentoo in 2003, I finally - by doing a (semi-)manual install - understood how it all worked together. Working with Linux has produced whatever skills I may now have. So, to me, I was a non-developer, technical, power user. And Linux worked, eventually. I just had to find the right lens for my glasses. Turned out I'm an anal-retentive hole. Who knew?
1+2) You could argue that
1+2) You could argue that McDonalds must have the best hamburgers in the world, as they are the largest hamburger chain. Majority of people using computers these days barely understand them. Britney Spears sold more CD's last year than Bach or Mozart I'm sure.... People talk of indie and metal bands 'selling out' by becoming commercial. Bach didn't write Die Kunst Der Fuge as a consumer item. Linux is the indie band to Windows' N*Sync. So some people prefer the 'easily consumable' OS, thats their choice.
4) If someone manufactured a car which always stalls, and the user complains about constantly having to restart it. Do you a) put in a device to detect when the engine has stalled and automatically restart it without the driver having to turn the key or b) design a better engine. a) is probably a more interesting solution to design, and this appears to be the "Linux way" of solving similar issues.
6) The problem is there is no authority to state that THIS is the Linux standard.
You won't get market share unless you provide the platform. Linux has to move first.
I consider myself a non-developer technical power user too, having programmed on the VZ200, Vic20, C64 since I was 12 and also done Assembler programming and C/C++ programming on various PC's which I've built myself. I've written production software to interface with a scale to perform QC statistical analysis for a pharmaceutical manufacter and worked on software for Linux to interface a Internet Kiosk program with a coin counter device for an internet terminal we were going to build
A lot of what I write about Linux, I write on behalf of the people who have also used it, and like us are 'technical power users' to varying degrees. Same poeple like me who have boxes full of PCI and ISA cards and cases and can hobble together working systems blindfolded, yet because they didn't have the zeal to get Linux working that I used to have (used to, not now), they still struggled and didn't get things. These are people who dislike Windows and the MS agenda and like the 'hands on' approach. I consider these type of people to be Linuxs' 'niche', but I could be wrong. I think these are the people that the Linux community should aim to woo, technical users, not Aunt mavis and their mums and grandmothers. So they would be better off with Windows, BIG DEAL!! I'm here with literally years of experience observing others, trying it and without the rose coloured glassed, or the 'the user must be dumb' mentality or 'it will all be fixed soon when project X takes off' naivety.
4) Point taken. I recently
4) Point taken. I recently worked on a project where (a) was the solution devised. The software our supplier gave us was buggy and faulty. So we wrote other software to restart it constantly. Wasn't really the best move, but they took 5 months to review each error case we gave them, so not much else to do (except do their work for them, but that costs more). So this problem isn't really limited to Open Source.
6) Aside from POSIX and ELF. Imagine not even having those... Having more standards certainly would make Linux adoption a lot simpler. Still, I'm distrustful of authority, so I don't really see this as a failing. Of course, a fear of totalitarianism does not mean anarchy is a legitimate system.
---
In my books, anyone who can write assembler is better than me. I've read textbooks about it for ages, but just can't seem to wrap my head around it... which is a shame, since I'd love to learn cryptography, and all my crypto textbooks assume the reader can grok assembly. And I wish I had more opportunity to work with hardware, it'd be fun to do make some designs for low-level communication systems...
Anyways, floated off-topic there, but absolutely - it's very foolish to focus on being able to set up Linux for grandmothers/aunts/etc. The popularity of such articles seems to me to be half elitist, half asserting independence: "look how smart I am, I managed to make all the decisions, and picked something simple enough that my stupid aunt could figure this out." ...Well, they'll mature out of that. Although, one must admit that such articles are effective at providing a counter to any fud (the real misinformation, not this buzzword I hear being used a lot) that people may have heard. But it would be best to (a) counter; (b) be truthful.
Zeal... good word. Yeah, I definitely had to have zeal (and a serious complex) to get my Linux systems working. But it wasn't as bad as I thought it would be, it just took a great set of documentation (printed all 100 pages!) and the decision to cut off my safety line. Without the former, I'd have been lost. With the latter, I'd have lost that zeal quickly. In the end, I think it paid off. Whatever the cost in time, I expanded my world view - and that is essential.
Yet I still can not perceive any way to resolve the situation, other than blind faith. Or absolute honesty. But then, I'm still young. I have much left to learn.
I've read a lot of articles,
I've read a lot of articles, posts, comments, news etc about Linux and there is no charter or document or even general opinion which explains what type of OS Linux, or GNU/Linux is supposed to be, except be open source. Even if you had just a basic list of statements, it would provide a framework for developers, distributors and the LSB to work off. Something which would say "Linux should provide the ability to run binaries compiled regardless of distribution", "Linux should aim to work on the lowest end computers currently in use (ie machines up to 10 years old)", "A Linux release when installed should provide the capability to upgrade, install and run available software for at least 4 years", "User should expect ability to..."etc, etc.
When you have those basic principles in place, it then tells you what you need to do, technically, to ensure that these principles are met. Problem with Linux, is that because of its development process, there is no requirement for Linux to do anything. Different distros do have their own philosophies, but they aren't guaranteed.
There is no requirement for any particular distro release to be useable for any period of time. There is no requirement for backwards capability. There is no requirement to keep the interface consistent, to keep naming conventions, to ensure old software still runs. Nothing. I could switch to Linux and in a few years time it would be something completely foriegn, different from what I switched to.
People keep saying Linux is 'maturing' because it supports more hardware and has more software. Thats like saying a teenager has 'matured' because they've lost their virginity. Maturity is all about approach, and responsibility. When a computer user knows that when they use Linux they are guaranteed the ability to run this and that software, that they know it will have a certain lifespan, that they know there is this responsibility towards the user, then people will move to it. THEN and only then, will Linux have matured.
Currently, Linux guarantees nothing. I could switch my whole company to Linux and the next release of this distro can break all sorts of compatibilities and break all sorts of programs. I may have no guarantee that I can use it for any period of time without having to upgrade again. I have no guarantee that KDE 3 will be around for X number of years. I install a system and have no idea how long before it becomes 'obsolete'. If its Debian, I can guess longer than Ubuntu, but when it comes to installing programs, who knows... Developers can choose to make the current distro I'm using obsolete on a whim.
Indeed, there is no central
Indeed, there is no central planning committee guaranteeing compatibility. For people who want that, GNOME + Ubuntu come closest. GNOME won't do API/ABI breaks in the 2.x line (even 3.0 isn't going to be revolutionary) and Ubuntu has the LTS releases.
But what you've described goes beyond that, to having a party whip keeping every library in line and on the same release schedule. That's what you'll get in BSD, not Linux... and Linux isn't a BSD. You want that steady, careful, planned maturity - not the hasty, experimental stuff in Linux? Use FreeBSD (or DesktopBSD - same thing, different optimizations). Just remember that careful maturity also means slower development.
---
Of course, that stability is all in the system itself. And what you pointed out in the original post are all user interface points. But remember that thing about keeping a holistic view? If we break Linux apart into major components we've essentially got: a) Kernel b) System c) X d) GTK/Qt e) GNOME/KDE. Those first two will effect the other three. So it's important to approach any analysis by considering all elements.
And that's where Ubuntu comes in. For each release, it keeps the first three stable, while allowing the other two to float. And GNOME, since 2.8, has kept the top two stable. I know you weren't very impressed by Ubuntu, but the above is why it's the strongest contender for "industry" creation.
You did complain about GNOME losing features. This is a common complaint, but usually for people who have a memory pre-2.8 (2004). Since then, (IMO) nothing that otherwise went unused has ever been removed. If 2004 sounds pretty late to you, remember that Linux GUIs are really, really, young - GNOME 1.0 was released in 1999, so this was only 5 years later. And GNOME 1.0 was about as annoying as working with Win 3.1, and then in 2004, we've got a release on par with Luna (XP's UI)? I can't find fault with that, nor with what they've done since then.
I'm becoming more and more
I'm becoming more and more interested in BSD as it seems more to my style than Linux. It's just hard to figure out whether Linux is supposed to be for developers specifically or for everyone or for technical users or whoever. Attitudes from the development community seem to scream all three, which is schizophrenic. Users are probably right to steer clear of such a system designed for experimentation, rather than general use, but then, if you SAY that, the Linux community tears you apart, which is probably why people hate Linux, but don't hate BSD. BSD doesn't claim anything. With Linux, the cats out of the bag. Can developers 'withdraw' it from the public?
Personally I would like Linux to succeed because I think it has a lot to offer to those disenchanted with MS Windows and the "MS Way". It's also intolerable for there to be a pure monopoly on the PC desktop market. A devopers OS seems kind of pointless. Its like road workers building an access road so they can go somewhere to build another access road so they can go somewhere to build another access road ad nauseum. ie a means to a means to a means with no ends.
I've never found the DE's in Linux deficient, only in the ability to add items to the program menu, customise, etc. My 16 year old sister with only very basic windows experience was able to use KDE 3.1 without any help, and I find it a very usable DE, so I've never understood the need to re-jig everything. GNOME the same. v1.4 wasn't that far behind KDE in the first place. I've rarely heard of anyone having trouble with Linux because of the DE being difficult.
I know what you mean, and I
I know what you mean, and I really like that analogy. It would be nice to have an alternative to Windows, not in terms of "every program for every task" but "it'll probably work on your system." Unfortunately, if you point out the problems with the (disorderly) Linux way, 99% of people can't distinguish between distros, let alone Linux and BSD. So it paints everything Unix with the same brush. I've recommended Linux to some of the people I know... and I haven't to others. It all depends on what type of person they are. Of the 10 people I've recommended it to, 2 stayed with it, 2 went to a Mac, and 6 went back to Windows - although one of the Windows group got a FreeBSD server.
If users want to be exposed to the Unix world, then Linux is the best option, if only for the wider hardware support. If users are interested just because they want everything gratis, they should go to hell. If they try Linux, experience Unix, and decide "it's pretty good, if only it wasn't schizophrenic" (like you have) they'll probably either move to BSD, or go to Mac OS X (which is BSD anyways).
I find Linux a difficult beast to understand. On the one hand, I agree with you, having watched Arch break some program every other week on my Laptop, Gentoo (community) ski downhill on the wrong slope, Mandriva break the fscking login manager on me, Fedora upgrades trash system boot, etc. But on the other, I've also been happy to use Slackware and Debian (Testing) for years on end as my main work systems - laptop and desktop respectively.
On the subject of DEs, you'll probably like Matt Fuller's rant about Usability vs. Learnability [www.over-yonder.net]. (He also has another one explaining the difference between Linux and *BSD). Right now, Novel (and HCI consultants) are pushing the DEs all to all change their style to maximize Learnability. Every HCI change is backed up by "time it takes an ignorant user to do this" while forgetting "ignorance is fleeting in the face of knowledge."
I work in the Quality
I work in the Quality Assurance field, so I guess lack of QA kind of really sticks out with me. I notice this in third party software too, where you download a tarball and files are missing, or C code with variables declared after code. QA is very weak/
With commercial DE's, because the potential market comprises 90%+ of people who EXPECT to be able to sit down at a new computer and do everything without so much as reading a manual, it makes commercial sense to appeal to these people. Thats where Linux can be different. Mat Fuller's rant was interesting, but in the end, Windows does what it takes to move software off the shelves and move computers off the shelves. They give consumers what they demand, even if what they demand is unreasonable or not the best option.
5 very thought out points.
5 very thought out points. I can relate to them.
1: Software
1: Software installation.
Imagine if I could compile code into a binary, put that binary on a website, and anyone with a machine with the physical horsepower to run the code can do so. I wrote DOS programs in Assembly and C on a 386 then a Pentium, and I was able to copy the .EXE and run it on my old XT system. Likewise, I can download the latest version of the 7zip GUI version for windows, and run it on ANY windows machine, including Win98B. With Linux, even though your PC has the capability of running the program, you can't because you dont have the right libraries, or the latest OS version. OR you have the wrong distro, which doesn't have the necessary libraries in the reposity etc.
If people could create ONE final product, and it runs on all Linux system, including ones a few years old, and the method of installation is the same (so they cal all install it), then it becomes far easier for software developers to write apps for Linux, and ALL Linux users can enjoy those apps instead of grapple with the system.
You're not the first who thought it was illogical that a piece of software can't work, just because a given library isn't installed on the system. Most Linux distributions (if not all) provide some kind of package manager, which helps the user to install all kind of software. The files that are delivered (packages), RPM or deb to name the most common ones, have a field in which the distributor can specify the libraries necessary.
It's probably not the answer you were looking for, but I thought, why not mention it.
3: The hackish aspect to get things working needs to go.
I'm not saying the CLI must go, or the capability to edit text files must go. Just that Linux must be developed with this one question in mind.
"To get this software/hardware/driver to work. Will the user suddenly need to learn something unrelated to the direct operation of the software/hardware/driver aside from the standard installation procedure?"
If the answer is 'yes', then there is something that needs attention. Examples of this include having to learn to edit a 'makefile' to get a graphing program to work (editing makefiles has nothing to do with the function of the program, so the user shouldn't have to learn it). Because the user wants to generate graphs, they should only need to learn how the software works and just how to get it on the computer. This is because they CHOSE to use this program. Of course, if the program itself is hard to use, this isn't the fault of Linux.
Editing config files and recompiling the kernel to get a driver to work. The kernel code and unrelated config files have nothing to do with the drivers or the hardware.
To use an analogy, if you have built a car, where the driver all of a sudden needs to learn about auto-electrics to tune the radio from AM to FM, then you've failed somewhere. Linux advocates call this 'learning about your computer', but they forget that people should learn what they WANT to learn and what they directly NEED to learn.
To install a program or hardware, I should only have to know the procedure for putting the software on, or for installing the driver and connecting the hardware. This isn't remaining ignorant, its giving the user FREEDOM. If the user WANTS to learn how to compile software, or patch the kernel, then by all means they should be able to. If they WANT to learn the intricacies of the guts of some apps, then they should be able to. But it should be a choice, not something they are forced into because the app is incomplete and the developers deem that they should expend the time and effort. Again, this requires consistency.
Make files are configuration files used by the compiler, they can be a pain in the ass on all OS's. I personally believe a user who is not interested in the inner working of his OS can better stay with a package, delivered by his package manager, or by the creator of the piece of software in question. I know that not all software (sometimes even whole types of software ) can be delivered in package form, but by using a relative popular distribution, most software (which the distribution's owner thinks is most used) will be included.
Doesn't really answer the
Doesn't really answer the question.
I'm working on a simple game for Linux/DOS/Windows Its a Deal or no deal game modelled on the Australian show. Simple stuff, but I've only found crappy flash versions of the game which suck. I'm using Allegro as its cross platform.
With DOS/Windows I can just make one .EXE and one .DAT file and a .TXT file, zip it up and people can download it, unzip it and run it. No fuss, no muss. I can do this with ANY program I write for DOS/Windows, even GUI ones.
But I can I write a small GUI program in Linux, distribute the binary, and be sure that any Linux user who downloads it from my site can run it and enjoy it?
Yes, try either klik or
Yes, try either klik or 0install. I've installed games on knoppix systems with it.
As I understand it, you need
As I understand it, you need to install the client, so you just can't download a package and install and it WILL work. You just end up having to install a third part app. So do I include the kick client with the disc? Do I have a Suse version, Fedora version, gentoo, Puppy Linux, etc? I couldn't actually get it working on my, admittedly a little dated, Linux distro.
See, this is the very problem I talk about. The problems are fundamental design issues, but because Linux users are developers, they approach every problem as one to be solved by writing yet another piece of software, or software layer.
Also, klick, 0install are not 'standard' methods of delivery. I cant install Xandros for instance, then install all my klik packages. And if even if one of thes two DID become standard, it would make every Linux distro obsolete.
This is why I dont hold much hope for Linux ever being serious competition for MS. Its advocates just dont get it.