How Would You Refocus Linux Development?
buddyglass writes "The majority of Slashdot readers are no doubt appreciative of Linux in the general sense, but I suspect we all have some application or aspect of the platform that we wish were more stable, performant, feature-rich, etc. So my question is: if you were able to devote a 'significant' number of resources (read: high-quality developers) to a particular app or area of the kernel, and were able to set the focus for those resources (stability, performance, new features, etc.), what application or kernel area would you attempt to improve, and what would aspect you focus on improving?"
Better hardware support
Better performance
Maintain excellent reliability.
What else could you need?
There is no "I disagree" mod for a reason. Flamebait, Troll, and Overrated are not substitutes.
If you are looking for a completely GUI drive *nix I would say OS X is your best bet (yes, I know you can use the CLI in OS X, but you never have to unless you so desire).
That just freaking works. I never understood why every distro can't just use the same install method. Whatever it may be, rpm, apt, yast whatever. And I don't mean the 3 step make install method. Wouldn't it be great to go grab a package from freshmeat or sourceforge and...oh look that's the package type I need....
That which does not kill me only postpones the inevitable.
Why is it that all the developers seem to be able to code to a standard API - but they can't even come close to agreement on the way a program is operated? Maybe it's time to create a UI standard for Linux apps?
This would go a long way towards making Linux the favored choice for desktop machines. Ease of use is a great way to unseat the dominant OS; it's not exactly easy to use and it's very possible to beat them at this game.
The first of those two is self-explanatory. High-quality, high-performance Free 3D drivers for good hardware.
The second...
I want some (not all) kernel developers to stop using throughput based metrics to measure performance, and instead use a metric based on interactive performance. I have a suggestion for such a metric...
The time between user input and the user input having a noticeable affect on an output device like a display. And I don't think this time should be as short as possible, though that's a good goal. The time should be as consistent as possible while remaining short. I propose a metric that measures this latency and plots the standard deviation of the latency and uses that as the main metric with that average latency being a secondary metric.
Need a Python, C++, Unix, Linux develop
1) Wifi networking
Too many wifi cards (especially the Broadcom chipsets) are painfully difficult to get working correctly. WPA2 encryption support is flaky. Wired and wifi should switch gracefully.
2) Better sound support
There are too many conflicting ways of producing sound, some of which dislike working together. Midi support should be built-in. Currently, it's a pain to install. Hopefully KDE's Phonon subsystem will help here.
3) Better a/v
Too many movies have unsynced audio and video. Also, many codecs are unsupported. Yes, I know they're proprietary, but I don't really care. Ubuntu is making codec installation easier, but frequently the codecs only work with some particular backend. (For instance, even with mp3 support installed for gxine, Amarok (a KDE app) still needs to install it's own. The desktop environment should provide a generic way for apps play audio, and if a KDE app is running under a Gnome environment, it should be able to "just work".) Don't forget the wonderful closed-source
graphics card drivers!
4) Easier windowing subsystem
No one should have to edit xorg.conf to get anything working. Fortunately, the next release of X windows is supposed to finally do away with this by adding dynamic configuration with xrandr. Also, it will be nice when CompizFusion is more robust. Lots of people really like the eye-candy, and I find some of the features useful.
5) Applications
It should be easier to keep applications up-to-date. I love Ubuntu, but it drives me nuts seeing bug fixes or major enhancements to applications that I can't easily obtain because either the OS updates don't include application upgrades, or the OS repositories are simply not adequately maintained. I don't want to have to
litter my package manager with repositories, or manually install packages just to keep my apps updated.
6) Laptop support
Suspend and resume don't always work very well. Some laptops don't come back, and frequently networking
is messed up.
bytesmythe
Hypocrisy is the resin that holds the plywood of society together.
-- Scott Meyer
I can get Ubuntu, Gentoo, Debian, RedHat, etc., etc... I can't get "Linux".
There's your problem...
This issue is a bit more complicated than you think.
Seems like everytime I click the help menu, I get some skeleton outline, if anything at all. I don't mind googling around for the information, but if usage is going to grow outside of the techie segment, the help systems are going to have to catch up with Windows 95 era chm files, at least. I'm not talking about technically, but rather actually having some useful content in the systems. I understand that writing documentation is no fun, so I don't hold out much hope for this.
Sure would be nice though.
I think Linux has always had this "everything at the same time" feeling to it; so things move ever so slowly. Some languish, some die, sometimes people get angry about it and things get fixed. So many people pulling in different directions ; many projects died but their best ideas live on.
It used to be a nightmare to configure hardware -- its now easier than installing XP on a Vista machine. X had (and has) so many problems it wasn't funny; but these days you can click around for days and it mostly just works. Wine was a joke for years -- but I can run my favorite online (DirectX) games at decent frame rates and progress is fast. For years it felt like all Linux coders lived in the USA; now proper Unicode support & multi language support make for example Chinese/Japanese input much easier.
Linux is a giant wave always moving slightly behind the edge, companies can make money by living on the bleeding edge. But slowly all of them get washed away.
If you want to win the desktop war, you can, in a few years, by asking yourself a single question:
Could my grandmother (who is already "sort of" computer savvy) use this without calling me every five minutes?
It's been a minute since I've used Linux as my desktop, but if users are still being forced to edit text files to change common program preferences, you'd better get used to your third seat behind Windows and OS X. I'm not telling you to have some crazy xml schema with a billion pieces fronted by a hefty GUI - I'm just asking you for the option of using a lightweight GUI to parse and store my preferences to the same text file.
Keep your CLI, and -color-code-for-Klingon-language-support options, but don't even try to force that on every day users. Leave stuff exposed so you can work your admin magic, but build some sane GUIs for everyone else unless you enjoy end-user support.
...with good support for building from source. We obviously need a standard package format with robust support for complex dependencies. The build-from-source part is also really important: right now, no distro (not even Gentoo!) makes it easy to, for example, compile your own Mesa libraries and have them used by the pre-compiled X server. Right now, you can pull a project from cvs/svn and do a make install. But it will overwrite the version from the package and break dependencies. This greatly raises the barrier of entry for testing new code, making the "open source" aspect of Linux software far more accessible.
Once we have a unified packaging system, the meaning of a "linux distro" will change. There will be a lot more sharing of work for the base system, and separate distros will really become sets of config files with just a few changes from the upstream code. Kubuntu is a great example of this: it is a low-maintenance specialization of Ubuntu.
Linux has achieved near parity with Windows in a lot of places. I've been a Linux desktop user since 1995. Between 1995 and 2005, I always used some kind of Windows emulation to run Microsoft Office and FrameMaker, because there is no Linux equivalent. Since 2005, OpenOffice has become sufficiently powerful, compatible, and stable, that I have not felt the need, at all, for Microsoft Office, and so I have completely given up using Windows emulators.
However, Linux is still sorely lacking in 2 key application areas:
Bingo. This is what keeps me from recommending Linux (more enthusiastically) to my friends and co-workers. I find myself saying things like "They've come a long way on wireless... but they still have a ways to go." Same thing for hibernation. And don't get me started on installing -- I know what "make" does, but I've been at it for several years now. God forbid I try to get a Python app going. (Yes. I do know about the install front-ends on Ubuntu, SuSe, Fedora, etc.]
You want to be 31337? Great, more power to you. Some people have work to do, and aren't interested in matching skillz with you.
I'm aware this is boring shit to focus on. But that's the stuff I want to see.
What if I do the same thing, and I do get different results?
1) PDF support. Almost all PDF readers on Linux except for Adobe's product have difficulties with large PDF documents. What's with the "LOADING" message that takes forever? Adobe Reader looks horrible (inconsistent with the native GUI). There isn't a single PDF reader besides Adobe Reader that supports subpixel rendering which makes the font rendering hurt my eyes.
/etc directory and has three windows: a list of text config files, a window that displays the file, and a window with a paragraph or two of explanations and examples on how to change the file.
2) MIDI support
3) A "configuration manager" that knows most of the contents of the
4) More active development of Fluxbox. It could use more features like shading on mouse wheel scroll and multiple backgrounds for each workspace.
5) A publicity website for Linux! This is probably the most important thing the Linux community could do. Features are nice, but who cares if no one uses them? The website would contain among other things:
-Step by step guide and interactive application to help people select a distribution
-Explanation of all major window manager/desktop environments, again to help people select.
-List of most mature Linux apps with description, screenshots, reviews, and commentary by users
-Discussion forums
-Latest on Linux section: demos of CompizFusion, new apps, tips and tricks, etc.
-Section specifically for articles on switching from Windows difficulties
-User friendly, designed primarily for noobs
-Linux store with quality Linux clothing
-Professional design
"What lies behind us, and what lies before us are tiny matters compared to what lies within us." Ralph Waldo Emerson
For an 'outsider' (using a Mac at home and Windows at work) there seems to be a stack of overlap occuring - why have KDE and Gnome when the combined resources could probably make a single product? Further all the different bits are made by separate groups. It is confusing for someone (a mainstream user like me) to the point where it is 'easier' to just go buy a Mac if you want something different to Windows.
Kernel?
Bring down the barriers relating to kernel development. We're talking documentation, convenience interfaces between the kernel-level stuff and userland, so forth. Spend a bit of time making kernel modules VERY feature-laden. Make them very easy to play with and ensure there are plenty of user-space tools to help you out. I've mucked around with a lot of stuff and have been developing software for a couple of decades now, but the Linux kernel STILL scares me.
Layer a set of version-consistent APIs above some of the low-level kernel stuff so driver developers don't have to target as many different setups or rely on a compiler being on the system to do their magic. I know this is a very unpopular idea in the kernel circles, but I think it would be very beneficial.
Of course I'm going to get ripped apart on the prior two paragraphs from people who know much more than me in those areas, so let's just say that these are just my thoughts from an external perspective.
Now moving on...
Operating system?
Somebody PLEASE develop a consistent library and API with minimal requirements that can interface with a whole bunch of windowing environments- including GNOME and KDE at a minimum. It should load the specific windowing interfaces dynamically so that using this common library adds no further dependencies to an application that uses it. From this interface I'd want to see fully-customisable keybindings, macros, and GUI controls of various sorts, an ability to hook to interesting events (eg. about to suspend, woken up, user logged out of GUI), info about screen layouts, access to user preferences regarding these applications (window positioning for particular apps, etc), and some assistance in loading and restoring state.
The library could then be taken and developed so that it is so appealing to developers they really have no reason not to use it, and the interfaces appealing to enough of the windowing environment developers so that they want to integrate it as well. It'd have a very liberal license (say BSD) applied to it to keep people using it.
Along with the library you'd have a set of tools that build on a whole bunch of environments (say: GNOME, KDE, and something that uses straight X). They would be used to set up all of the customisation that users could possibly want. The interfaces would have a simple mode for users that like very basic interfaces (actually to keep the people who claim that people want this happy), and a simple checkbox to enable "expert" mode that displays everything in obscene detail. The tools would have a sharing license (say GPL) to keep people pitching in their changes.
And then you'd need a whole bunch of people to promote it to make sure people know about it.
Imagine being able to fully configure all of your graphical apps to act how YOU want, drop in extra controls, keyboard shortcuts, trivially add in macros for remote app control, so forth- all without the developers of those applications needing to worry about it themselves. Why? The library handles it for them. The GNOME people and the KDE people can keep going about things their own way as well, and they'll keep making their own advances too. But they'll both be saved reinventing the same wheel in this common ground, whilst still having full control to take their projects to where they want to go.
I have been awfully tempted to attempt this myself but I know it would be far too large a project for a single person. I'd never finish it on my own, and I'm not interested in the politics it would take to get traction on such a thing.
But I'd love to see it.
I keep hearing this. I remember reading ESR's essay on how horrible it was, long before I installed my first free operating system. But you know what? It was very easy to set up. I'd say it was less than thirty seconds to set up all of my printers [neither really popular, neither really recent, one is USB though] and print the test pages. I find it hard to believe that foomatic gui could be hard to use.
We at slashdot are scientists, specialists and kernel hackers. Your FUD will be found out.
I think (hindsight is always 20 20) that the biggest mistake has been allowing code copyright to disperse and remain untracked. Some contributors are DEAD now. The problem with this is that it makes project relicensing just about impossible, amongst other things. This is one of the reasons why other projects require joint copyright assignment if not straight assignment, such as apache.
Legal environments change; without wanting to descend into a GPLv3 flamewar, I think it's critical that free software projects ensure they have the flexibility to relicense appropriately in the future to adjust.
Linux does not enjoy this distinct advantage.
The Banjo Players Must Die!
1. An easy, approachable Hardware Compatibility lookup website. It would consolidate all the compatibility info from kernel & X11 devs, major distros, OEMs and also allow end-users to add their input. FWIW, the HCL at linuxquestions.org is an interesting start but nowhere near exhaustive or current enough to empower Linux users (not hackers) to confidently purchase new equipment.
1a. A certification program for drivers that allows products which meet criteria to bear a special Linux compatibility trademark emblem.
2. Fix the sound architecture. Blocking of sound output still occurs after many years of ALSA. There is no GOOD reason why Harriet shouldn't hear her softphone ring or calendar alarms just because a minimized web page contains a Flash object. Telling her to muck about in the CLI, to buy a pricier multi-channel soundcard, or to learn about sound servers and juggle them is beyond the pale.
3. Create an excellent default IDE for the LSB Desktop environment. The IDE will be geared to target the LSB Desktop spec by default, with desktop applications as the focus. Something you would write a video editor or DVD burner with, not so much a video card or disk driver. GORM on steroids: If it doesn't inspire budding application developers like XCode and Visual Studio then Linux will not inspire application developers to write. Linux will not benefit from many more systems developers at this point because its the apps that matter: The apps sell the platform.
3a. Well-rounded API documentation for the LSB Desktop target, ala MSDN or Apple Developer Connection, eventually integrated with IDE.
4. Enable app developers to become as independent as possible, such that distro managers do not insert themselves between the developers and their users. Distros ought to distribute OS software, and for the most part stay the F*ck away from controlling installation of particular applications. High-level package managers like APT, YUM, etc. should stick to managing (or mangling) the OS dependency tree and leave apps the hell alone! Provide dependency targets in the OS repo like "LSB Desktop", and only one or two others like "Java 6". Then, accept that all the extra stuff you supply on top of LSB is ONLY extra, and will get used when and if the user decides in specific cases.
4a. Ensure those budding app developers can easily share their work with friends and customers. Make appdirs like on OS X and Gobo Linux a standard. Dear God, please.
5. Hacker culture works extremely poorly for application software today. Fund efforts to spread the discipline of user-centered product development. Teach FOSS developers the concepts and ropes of SDLC and Rational Unified Process, with emphasis on adding actor definitions and use-cases to docs and project wikis so that these elements are continually refined and re-thought eventually becoming the centerpiece of requirements. Create use-case instances (scenarios) in close association with unit/app testing scripts. Anything to keep developer minds on the kinds of users and situations the software is meant to satisfy. Encourage budding Business Analysts to do 6-12 month stints with FOSS projects.
6. Create settings persistence (configuration) APIs for crucial system services like X11, Samba, Apache, sound, etc. Get these projects to set and manage their own config files, as no one else seems capable for doing this consistently or well. Maybe when they have to write AND parse their own config data, they will stop creating needlessly bizarre & open-ended formats that umpteen distro tools only understand halfway.
7. Next-generation, object oriented shell based on something like Ruby, Python or even Groovy.
Lastly, all of the above must be in the spirit of fulfilling primary personal computing scenarios like app and driver installation, and configuration of essential services (change screen res, use a network share, etc) in a predictable manner. Unlike MS and Apple, Linux does not yet grok PC land because
IMHO the toughest job facing the OSS community is education: teaching, learning, and how to document.
This is compounded by the issue that most developers do not find documentation fun. If the common perception that geeks tend to be nerdy and poor at communication is true, then we have a triple whammy. This is one reason I say documentation and communication and education is our collective biggest failing.
The learning curves for _any_ of our packages are steep. SysAdmins rejoice in the job security they perceive they gain as their expertize for apache, mysql, postfix, postgreSQL and so forth increases. The thing is each package has so many options that it takes forever to learn how to set them up. At last count Debian boasted over 30,000 packages available. How is one suppose to even know what a small percentage of these packages do? That is much less than to learn how to install, support and maintain them?
But this is just the systems administration arena. The API's and programming is an order of magnitude more difficult to keep up with.
Then the documentation. To use WxWidgets for instance I am faced with over 3,000 pages of main manuals, I need to decide if I use DialogBlocks or CodeBlocks or neither. I need to figure out what each does and what each doesn't, and after I buy Julian Smart's book - its another over 500 pages to read. In spite of the fact he's written DialogBlocks there is no useful information on same in his book. Thanx.
This is only one (1) package. I have not addressed version differences and library dependencies and so forth. I have not considered the issues of limitations and bugs.
To keep up is typically information overload to the gawd-zillion'th degree.
---
M$ recognized this and attempted a solution. From what I can tell in around w95 they pulled all the error messages out of the system. I experienced the great joy of accidently turning off the external SCSI hard drive on a W95 computer while the system was accessing the disk... reading it actually. No error message was reported. We got what looked like "END OF FILE". This was M$ code reading the disk.
Then on another occasion I noted a networking message from NT4.0 had the exact same text as from OS/2. The error number in NT4.0 was missing. Everything else was the same. On a hunch I looked up the message in OS/2 and lo and behold the error number lead to the issue at hand. Of course NT4.0 was no help at all because this information had been removed.
Either it was removed or never put in. I dunno. What I do know is that the systems ability to correctly diagnose was hamstrung.
So what do we have in the OSS world?
1) volumes of crappy documentation layered on more volumes of poorly organized documentation.
2) When problems are found and corrected - no good method exists to upgrade the docs.
Here is an example. Many years ago I ran into a sound configuration issue in Debian Woody. This had to do with esoteric issues of generic SCSI drivers and bad permissions and so forth. I ended up posting in SourceForge a complete description of the problem and how to walk through it and fix it.
Two (2) years later none of this information had been disseminated through the documentation of the package at hand where I had discovered it. Debian was still misconfigured. People were still coming into IRC pleading for assistance on how to get the software running (It was GRIP as I recall).
---
This is just terrible performance and we are not getting much better at it.
There are several websites of documentation. SourceForge does this. IMHO they do it poorly. There are many wiki's dedicated to various packages. Nothing is coordinated. The man and info pages I have in my latest system are still the first place I would like to look for information and they are basically just as bad now as they were in 1997. Probably these documentation sources have not been updated much since 1997. Why not? If there is new
I'd like to see a Performance Squad attack all the desktop apps and their underlying components.
Not the kernel, but kernel hackers do know a ton about how to get good performance, so if they all took time out from the kernel to make the rest of the desktop snappy that would be just fine with me.
Of course I've seen some efforts at this over the years. Dave Jones' perennial "why userspace sucks" talk, some work by Robert Love, some other GNOME folks looking at memory usage, the recent Intel tool looking at CPU-wakeups eating battery life on laptops, and lots of other pieces of the puzzle.
It would be great if the basics of performance "best practices" would become widely known by desktop app programmers again. Instead we're falling into Microsoft's habit of being lazy about performance and expecting Moore's Law (increasing CPU speed and cheaper RAM) to bail us out.
Now my girlfriend's answer would be different: OpenOffice still sucks too much (feature-wise), and it's keeping her from switching from Windows.
Do you know what all the values in the Windows registry mean?
Not all settings are exposed to the GUI, this is hard, slow, and usually unneeded. So when you dig deeper to find them do you want them to be
1) in a system-wide binary database you must read through a specific application
2) proprietary interfaces like Firefox's about:config
3) program specific text files
If the GUI works, all are identical. But, if it doesn't you can either have a straight forward file you can checkpoint with CVS tools, or you'll have a binary blob you can't find your changes in, let alone roll back from.
I think Linux should have a totally different interface to Windows or OSX. The target audience for Linux are server administrators and power users and I think the interface designers should realise this. I really don't think that linux will ever beat Windows or Mac for usability, and maybe it doesn't need to. If Linux rewarded you for learning the bash shell then it would be a really interesting environment. As it is I can switch into the terminal to try and get some things done, and if I typeset my latex document I then have to switch back to the GUI to view the pdf. Linux is confused about whether it should be using a GUI to do something or whether the CLI is the better way. Window Managers for Linux all seem to be relatively similar to Windows or Mac, and there doesn't seem to much reason to use linux for a DIFFERENT or better experience. I think this is mainly due to the many different developers involved and their total lack of interest in consistency for their users. The idea of using the CLI is still basically an essential of the latex system due to compiling software. It should be developed to take over the interface, not be hidden behind an inadequate GUI. This would refocus the idea of linux into a straightforward, techie, scripting style interface. However, the CLI needs to be a lot more exciting than the crappy CLI we have now. They need to do things like allowing usage images and media, using search abilities, fixing file heirarchy addressing (as it makes CLIs really difficult) and doing spotlight like smart folders. An CLI interface of this type would need a really good built in text editor that is not quite as obscure as emacs or vi. Linux should embrace its techiness, but not for techiness' sake.
Why is it that OS X / Windows is "better" and "winning"? .... easy... $$ = motivation. Their employees are getting paid more. Hell, some open source developers aren't paid at ALL. (damn but we do love you all for doing it anyways!)
My solution to all of this, is to pay the "best" programmer(s)/group(s) to get individual pieces done. This can be done in the following way:
Step 1. Set up a foundation or an organization of some kind that has the financial responsibility to hold on to a chunk of money. (This could be the official linux dev. Group, but preferably NOT a distro, as they will be biased. This has to be unbiased towards any distro)
Step 2. Set up ye olde competition of the week / month. Think X Prize (maybe call it the linuX Prize? hehe).... the $ reward will be voted on by the developers of the linux kernel as WELL as the whole open source community. Things like wifi and sound (oss) would be weighted higher than say, getting a good pdf reading system to work. BUT! Still give a prize for the PDF thing. Say... 30-40K for the top winner of the Wifi competition, and say ... 5-10K for the PDF one? Then maybe give something to the 2nd and 3rd place winners too. Hell, maybe not even put a cap on it... donate X for this cause... there might be such a huge call for something like wifi drivers that over 100K+ might be raised. Hellz yes!
Step 3. Generate money. This can be done in a ton of ways. Example: Community support. I'd for example be HAPPY to give 20$ into a pot for someone to come up with a good working easy to use and "out of the box" wifi driver / recognition set. Then add in sponsors. I'm sure we can generate lots of money to keep this going.
Step 4. Advertise. Make a single website. Professional looking, lots of feedback on LINUX. Explain why linux should be used and it's major features (do NOT give specifics on the main pages or you will scare people away. Make the specifics easy to find as a separate tab). This is NOT for a specific distro, but for linux in general. That being said... have a wiki like set of info for each distro... but don't overload it with details (distro watch is very cluttered). Show the BASIC pro's and cons... and have users put their ratings on it. That way when a person decides they want to use "linux" ... they can easily find/see that the most popular or best rated disto is X (this caused me a huge headache when I first got into it). Also add daily / weekly / monthly (potentially all 3?) user polls. Example: "What is the next big thing we should compete for? Option 1,2,3,4,5 or 6)"
Step 5. Reap the benefits. If we have 10 people/groups submit what they think will win them the best prize, we'd have 10 pieces of code that (arguably) will all work. Even if we choose the "best" one, we (the community) might rip them all apart, and take the best aspects from all entries to make a new complete even BETTER version!
Rules for code: a. GOOD documentation for the code. This means "readme's" as WELL as good IN code documentation. b. Portability / Expandability. Is it generic enough to work for everything / most everything? (example: wifi drivers that recognize at least 80% of wifi devices?) c. Speed/optimization. Portability is nice... but if it slows everything else down to a crawl.. then it's really not that useful. d. 3rd party integration. How easy is it to take this code and build on top of it.