Why Linux Is Not Attracting Young Developers
judeancodersfront writes "Jonathan Corbet recently pointed out at the Linux Foundation Collaboration Summit that the Linux kernel team was getting older and not attracting young developers. This article suggests the Linux kernel no longer has the same appeal to young open source developers that it did 10 years ago. Could it be that the massive code base and declining sense of community from corporate involvement has driven young open source programmers elsewhere?"
would also imply more experienced developers. And that's not (necessarily) a bad thing.
Maybe it's because a lot of devs from the 90s were and are quite rude due to their lack of social skills. Most people don't put up with that kind of crap.
Maybe we should drop the code requirement.
Oh wait, that's HAM radio.
END
Dear Old People,
We're busy building iphone, android, facebook and twitter apps, with the delusion of a multi-million dollar payday.
BTW, thanks for all the open source stuff we're using.
Signed,
Young Developers
I've seen a lot of promising college-aged open source devs that seem to have an overwhelming reverence and awe towards the kernel, thinking it far too complicated for them to work on with their own programming abilities. In reality, most of them could pick up the kernel and figure it out quite quickly, but they'll never convince themselves of that.
If you're talking high school and university students.. then yeah.. probably..
If you're talking people working as programmers.. then I think a big part of it is the scarier and scarier policies big (and sometimes even small) dev shops are putting on what people do with their free time.
And if it's not that.. it's the fear of legal action and who owns ideas and skills. There is often a lot of overlap in what people do at work and what people contribute to at home.. and this is becoming a thinner and thinner rope to walk across.
And I know a whole bunch of people are going to reply with their interpretation of what you own vs what your employer owns.. but when it comes to your career.. a lot of people start getting wary even if they probably are in their right.. and I think that takes away a lot of the fun and leads to people simply "not bothering"
Could it be that the Linux Kernel isn't state of the art anymore? Linux is boring... it's bloated... it's no wonder that young blood aren't interested in developing it, they want to do something really cool and cutting edge to light their careers on fire!
What I am noticing in general is that young computer users are just using computers (games, chat, internet), not programming them.
if you're a CS student at many .us universities, Microsoft will give you free-as-in-beer software, including but not limited to Visual Studio and Windows Server.
First one's free, etc. Good way to get them hooked.
Hail Eris, full of mischief...
E pluribus sanguinem
Could it be that since Linux has become somewhat mainstream kernel developement is considered a "solved problem" to young programmers looking for an interesing project? Maybe new programmers are tackling other open source problems instead.
Could it be that there's not as many young coders that have the skills required? We've been trying for years to dumb down development and this may be part of the result. Perhaps if the kernel was written in PHP and javascript ...
Wow, I sound like a cranky old man.
linux should become more modular ... dare say like HURD where individual contributors can own their own slice completely and implement it the way they want as plugin modules rather than monolithic blocks. yes i know about the whole kernel wars but linux grown up. its time for it to be a microkernel and attract developers for long term viability. a monolithic block of code was fine to bootstrap it but not anymore. we have multicore processors with fat pipes ... things microkernels were built for. ipc overhead is negligible if your ipc is your L3 cache.
Young developers are typically interested in Game Development of some form. C# & DirectX[XNA] is worlds easier than the (usual) counterpart of C++ & OpenGL. It's a sad direction, but it's the result of 'path of least resistance'. They are typically not aware of the engines/options actually available when they are newbies.
Could it be that the massive code base and declining sense of community from corporate involvement has driven young open source programmers elsewhere?
Nah, they have all just decided to get paid, rather than work for free... (end.sarcasm)
:)
In all seriousness, a lot of the new generation of programmers are starting out in large corporations, as a means to repay student debt, get themselves established - and are able to do that code work in the open-source world, as corporate acceptance and utilization of OSS for application development grows. This, unfortunately, comes with a flipside - those same developers are not available to do the work the hobbyists were doing a few years back, leading to the perception that the OSS movement is losing developers. The movement actually isn't losing developers - more and more of them are just being absorbed by NDA's
Either that, or they have all decided to start writing flash games for Adult Swim.
0100010001101001011001 0100100000011010010110 1110001000000110000100 1000000110011001101001 0111001001100101
Linux is now mature and nearly unchanging. A young programer isn't going to be able to leave any mark on it. Mobile is the active space where new things are being designed and developed. In enough time that will mature and they will move somewhere else.
This sums it up nicely, methinks.
http://ajayu.memi.umss.edu.bo/rho/files/21/143/im-linux.jpg
In my experience the US educational system just keeps declining. Kids are not very intelligent these days. I couldn't C code my way out of a wet paper bag, let alone create a kernel device driver for a peice of hardware.
All the snotty elitest attitudes you find in 'linux communities'.
Add in that windows and macos are 'good enough' and not nearly as much of a problem as they used to be.
And it's really no suprise that nobody wants to help out the linux devs do anything.
The older linux communities and devs... For so long they acted like THEY were the only ones that matter. Hey the world ignored your brilliance and you're now largely irrevelant. Good job!
But hey... at least you got to be rude and talk down to alot of people for not having your experience and skills. That's something right?
Nope, it's RMS' involvement and the insane GPL, Linux, and anything-else zealots that make, at the surface, the Linux kernel appear to be a group of crazy nutjobs.
Seriously, mark me troll, but as a young developer, I can tell you that's why myself and at least 10 other people I know didn't get involved - that isn't to say the kernel really IS maintained by a bunch of crazy nutjobs, but having those people as part of the community reduces the legitimacy of it and makes it seem like it's no fun to contribute to.
Just my $0.02
Perhaps age difference itself is the reason. Young persons may not like the 20 years older hackers. And old wizened developers may dislike young whippersnappers.
Here's a question to anyone who works at facebook and is willing to reply (even anon):
What is the ratio of engineers at facebook who could work on low-level internal and open source code like HipHop, Thrift, memcached, etc., to engineers who work on features like Superpoke and other higher-level features/systems?
Is there much crossover, if so how, if not why?
If you're right out of college, would you have the experience to work on the kernel IN ITS CURRENT STATE?
The kernel has come a LONG way since Linus first started it back in his college days.
The real question should be whether developers how have never touched the kernel before are joining the kernel team. Not how old they are.
Contributing to and old and large code is much more difficult than contributing to a small one. Getting your head around a large code base is no small task and documentation is often lacking. Even if the code is well commented it could be very difficult to understand the overall design of the software and how things interact with each other.
I'm an intermediate-level programmer, with more than 4 years of practical experience coding C, even more experience learning theoretical computer science concepts, have been using linux for 9 years, AND my top leisure-time activity is to devote time and energy towards learning more about computers and important software systems.
The linux kernel is super complex. This is not due to poor design (comparatively to other popular OS's, anyway) but a programmer must still contend with this. The level of uberness one must achieve (still considerably above my capacity) to participate in kernel hacking is intimidating to say the least.
Documentation, while plentiful, is almost always in ascii form (vastly inefficient to illustrate such things as dependencies and the form and use of data structures) and mostly found in the code. There are decent enough books, but most of those I've read always provide a narrow window into individual concepts, as opposed to bird's eye views, or surveys of overall architecture. Maybe I'm out of the loop with the best books (pretty likely) but the interest has certainly been there, and every time I've bent towards the possibility of playing around with the kernel, the sheer complexity of the task and difficulty in finding information to answer my questions has made me shy away and towards simpler things. It's not 'too' hard, but it certainly is 'definitely' hard, even for enthusiasts with a healthy mind and great curiosity.
If effort was as widespread in making documentation as it is in making top code, I'm sure many more people would dabble, and talk about it.
There must be higher number of people in the field as compared to like 1990 or so, but there is a greater choice available. Coupled with the spin/hype it leads people towards popular fields/technologies. I do not think linux/kernel people do the kind of "evangelism" that gets done elsewhere.
Anyone notice Linux share the same syntax of UNIX? Do you know how old UNIX is? To start Linux even old people like me need to know some history of XENIX, UNIX, SCO, NFS ... some of those things remain unformatted text base, console type (not VT100).
GUI is good, but the back is still those things, that why Mac OSX hide them all. Linux need to clean up those history and simplified those things.
Hong Kong - International Joke Center (after 1997-06-30)
Could someone suggest where should one get started off from?
I have an average level of experience with simple c/c++ , Java and Python programming, but how should I apply that knowledge towards OS development,etc
Any suggestions?
One reason is that Linux is mostly written in C, which is not something that most young developers are familiar with. They're usually familiar with higher level languages like Java or Python. Another is that developing the linux kernel requires high technical knowledge on things that young developers are not familiar with anymore, as programming tends to be more and more abstracted nowadays.
right. it should be something between an exokernel and a microkernel. abstract out device drivers but keep core stuff in the microkernel like cpu drivers and memory access. something where people can own the device but not screw around with the machine itself. the usb userspace driver model is a great example. now if we can only abstract out everything without ending up with HURD like idiots running the show.
I would have loved to help out, but unless there is an IDE and platform that will make Linux development rapid, it is a waste of my time. At this point, I will become a Windows or Mac OS developer and not a Linux developer because:
- I produce twice as much functionality with better quality in the same amount of time using Windows and Mac OS development tools
- Windows and Mac OS are already easier to develop for, easier to install, and more stable as a development environment. I do not need to rebuilt my stuff and waste hours for 15 different versions of the same platform. I do not need to do custom builds and rebuilds of hundreds of components that I would be using and waste weeks.
- I will actually enjoy using the product that I am working on
- Configuration will not feel like a waste of time
- Lack of third level development support for components will not make tough problems waste months, but would rather take a day or two to resolve
- I will deal with a community that seeks to answer tough technical questions, rather than ignore them and look for easy ones to make fun of
- I will get payed more
The few steps I've taken in that direction were met with skepticism and arrogance. The Kernel Boys Club is hard to break into and they've headed in the same direction for years. It's time for some fresh blood and fresh ideas. They remind me of the guy that's always at Karaoke Night carrying a handkerchief like he's Pavarotti.
25 years ago when I started it was a literal *TURN* in technology. We got personal computer (Amiga, Comodore, Thomson, Atari) to not only to play , but also to *program* and show off other. Heck even on my first PC I cracked Ultima 5 because the disk stopped working , and found out which instruction NOP to go on (it had a very weak encryption using a XOR increased by 3 every byte). I digress but let us see basically many nerd, and by that I mean a lot of nerd, even non-nerd, started programming took a taste of it, then went on open source etc... Alot of oldies from mainframe are also part of that group. Nowadays ? *ALL* system are either closed , or too complicated to really go on (remember how easy it was to use CGA or even later mode 10h?) , and among the young nerd I know not many really start programming. There you have it. That in my opinion is alone to make people which would be interested into programming less numerous. And tehrefore less young people interested into open source. Naturally I might be wrong and just be a grumpy old man "it was better inmy old day, now off from my lawn".But it looks that way to my anecdotal viewpoint.
C. Sagan : A demon haunted world:
http://www.amazon.com/gp/product/0345409469/
visit randi.org
that's all folks - the youngsters are much more socially connected and skilled than we were at their age; also, they get the clue of the social context much better than we did 15 years ago. And what they see is a career in an unregulated domain, totally havoc and chaotic, where the abuse and the overwork is the norm. there is no career path marks to follow and nobody can tell you where you going to be in 2 or 3 years. A continuously changing professional knowledge baggage is not attractive, its consequence is obvious - your whole time life should be allocated for keeping up. The dreamland of computing is not anymore there - the harsh reality has taken its place and young people are not stupid; they want to be able to enjoy their life normally instead to enslave to the corporate. 15 years ago the Linux and the Open Source was started with lots of fuel from people keeping strong to a beautiful idealism - this is gone; they are not to blame - myself I have respect for a generation who has the power of the dignity and the will to say NO! STOP! this is my life! - we should all do the same.If a profession takes away your life - forget it, it's just not wort it.
Well, as a young dev myself, I'm more interested in coding apps, and in reaching stable platforms that real people use, like Windows. I'm no open source purist, although I do put everything I make under GPL because I think people should have the freedom to improve on my ideas. I'm not one of those lured by iPhone development: I do object to their awful restrictions on apps and totalitarian management of the development ecosystem, but I'm not bothered by a platform being closed source. For some additional insight, I'm kind of glad 80's computer nerds working at Red Hat are coding the OS: If Linux development was anything like one of my projects, it would broken every few revisions, have something major wrong that I don't really care about each release, requiring a major fix by a second rate coder within a few days, which happens to be when I'm out with friends and can't commit a new release. Leave the platform to the professionals.
I was watching a documentary about FOSS and they talked about Stallman and interviewed him. The dude's a hippy: plane and simple. A lot of the FOSS/Linux guys are from the late 60s early 70s generation.
Colleges are still teaching C, OS, compiler development, etc... but the what the young folks are interested in are the iPhone/iTouch applications, social networking, and other modern problems and ideas. Younger folks are interest in handheld devices because that's what they're using. Desktops are for office drone work. Servers are commodity old hat technology that's been done to death already.
Unix/Linux is an old antiquated idea. Sure, Linux is the metal interface right now but when technology permits it (quantum computing for one), Linux will become irrelevant to future hardware, along with Windows.
Kids are looking to the future. Linux is really the past.
RIP America
July 4, 1776 - September 11, 2001
First, it takes a certain amount of financial security before most people are willing to contribute their time to any effort. I think this is true for everything from the Linux kernel to Habitat for Humanity projects.
Second, this greybeard phenomena is occurring throughout not only the entire s/w industry, but other technical fields in the USA as well. Not enough CS majors, engineers, scientists, etc. Math literacy is suffering and practically every company is screaming for more H1B visas. Or just sending the work offshore.
Finally, some of the noteworthy exceptions to this trend (Microsoft, for example. But also many other big corporations) have an ulterior motive behind keeping their staff green. Hire CS grads straight out of college, put them on a couple of projects and get them built. Once your developers start to get some industry experience and a peek at the big picture of the company, they'll start to second guess management decisions. Out the door with them and bring in some fresh meat.
Have gnu, will travel.
Who the *&^% wants to work for free?? The motivated young developers I've met lately want to code games (XNA et al) or mobile apps, especially the iPhone. I've met very very few young developers who are really motivated to develop open source programs. I can't say I blame them. Regarding Linux the OS, what's left to be solved? Does the core Linux group really need any help? Can anyone really make a meaningful contribution to Linux anymore? People want to go where the action is. And that isn't Linux.
hence Greg KH's hope that retired boomers will help them out.
Linux itself is well established and basically a fulfillment of the UNIX idea, borrowing from other flavors of UNIX (yes, I know Linux is not UNIX). The real world is going on with specialized distributions, and distributions specialized for tools like FreeNAS (which is BSD, but you get the idea).
Futurist Traditionalism
"Show me the code!"
Who cares how they got there as long as their code can be demonstrated to be as good or better than the other approaches?
It's the results that matter.
If some college kid can get better results than coders who have been working on the kernel for 20 years, then that's great.
Now consider again from my previous post about barrier of entry that you go from being a young programmer to programming into the linux kernel (no docs etc...). That is even a worst situation. IMHO we will only see medium to older programmer into the linux kernel.
C. Sagan : A demon haunted world:
http://www.amazon.com/gp/product/0345409469/
visit randi.org
Speaking for myself, I grew up mostly with Windows, did some machine language programming, C, and C++, Pascal, and eventually settled on Delphi RAD (souped up Pascal). The problem with Linux is there are many languages to choose from, who knows which GUI would help out for the GUI side of application design and make design a bit simpler for a newbie (like Delphi or Visual Basic), choice of QT, Gnome or KDE and so on.
As Linux is different to Windows, being able to pick one to start with would be good. At that point I will hear someone shout Mono, but that's in some small part mixed up with Microsoft and don't want any part of that any more.
It's the range of choices and thinking about it, the possibility of ending up designing something with dependencies which as a newbie you've never encountered.
It's all really daunting to a new comer to programming in Linux, and why I've not really progressed in it, even though I have an idea for an application to design.
Take Nobody's Word For It.
Let's not forget that Linux is just a component of the entire GNU/Linux (I know, I know) system. The accompanying software has grown considerably: GNOME, KDE, browsers, various programming languages and environments, utilities, networking tools, etc. all siphon the interest of a young developer into other areas. Linux is, for all its good and bad sides, stable and feature-full. It's not very tasty to hack on unless you have specific interest in OS internals. So while Linux might be losing the influx of fresh blood, there's still lots of energy around it.
Ok I know thats a teaser. No software is ever "done" ... but really, whats left in the kernal that *has* to be done? Sure there can be improvements and tweeks and supporting new devices, but thats all hard work and "engineering". Its not "sexy".
I do agree that more people coming out of collage are more focused on higher levels of software, which I dont really think is 'a good thing' but OTOH is not to be unexpected.
Much like people dont focus on building their own hardware or improving the C compiler much anymore. Whens the last time you heard the masses asking to make the assembler better ?
When I was in collage (80's) it was an exciting challenge to write my own device driver or kernel module ... why ? I think because thats where the "edge" of development was. There were not a lot of "apps", if you wanted to do something new you had to go all the way down to the kernal level. Just to get a file to copy from one system to the other I had to write a network driver !
Nowadays the edge has moved. If your working on a GUI app you dont have to hack the kernel, if you working on a new Web (N+1) App you dont need to write your own device driver.
Its already done.
And at most junior colleges, there are posers on the engineering staff and IT departments manning the labs that actively hunt down students that aren't toeing the Microsoft line. They come down on those students softly at first increasingly hard until the student knuckles under or quits. Often it's just simple bullshit that is enough, such as putting it off indefinitely with kindly sounding blow-off phrases: "sure, we'll look at linux later, if there is time", ensuring that there never is time. Or other bullshit like "start with Windows and when you have proved yourself, you can try other systems", or still more shit like "why, yes, we teach both Windows and Linux" while actually cutting out all non-MS systems and languages except for leaving a handful of electives with NO hands-on lab work. They also find all kinds of ways to break any non-MS packages that the faculty forced them to install. "Oops, sorry, that last upgrade must have erased it. We'll get right on that next month."
Some places even relegate all non-MS technologies to a tiny handful of elective course, only available in the final year, which the student might not even have time for even if the interest and motivation have not been rubbed out.
The problem is not a joke. It's not just kernel developers we are not producing, but programmers, system administrators and software engineers. There are almost no new people coming into the workforce with even a basic knowledge of correct design or methods. Even the big names are noticing this, but they're isolated far enough at the top that they miss sight of the fundamental staffing problems that have allowed Microsoft products anywhere near campus.
Beta is broken and the link to classic doesn't work. Stop wasting our time or there won't be anybody left here.
I'm not young but I tried to get into kernel driver development (out of necessity, not so much itch-scratching) and was thoroughly frustrated by:
1) Lack of useful documentation
2) Constant churn in the kernel
I wanted to allocate memory in a driver. Lots of memory (64MB on an embedded system). I read all of LDD (latest revision) and tried everything: memory mapping, kalloc, vmalloc, ioremap, etc. etc. Nothing worked, and the book was so i386-centric that on my ARM system the explanations didn't really make sense. Eventually (we're talking several DAYS) I made something work using mmap.
And don't get me started on interrupts. Where do they even start? Where's the interrupt handler? WTF is the difference between a hard interrupt, a soft interrupt, and a virtual interrupt? I spent DAYS trying to figure out the exact sequence of code that represents travel from the hardware event to the final driver code (because it was necessary in this case) and had to give up. Interrupts are just magic.
And yes, I can read source (and I did).
As for churn, it seems like every week there's a new scheduler, a new memory allocation strategy, a new filesystem, etc. etc. QUIT IT! Is it really improving things that much? Every major system that gets replaced in the kernel obsoletes a bunch of code that now has to be rewritten to keep up. Worse, it makes whatever documentation there is (e.g., LDD) out of date. It was no fun reading parts of LDD only to look at the actual 2.6.24 source and see that parts of the book were already out-of-date (I can't remember what now).
If the kernel devs are only interested in itch-scratching then their numbers will continue to dwindle and Linux will fade in favor of a system where people actually do hard work: proper documentation.
Wouldn't you rather be writing code for the latest sexiest thing rather than your father's OS?
all the young kids are using apple products that just work and don't require
them to hack or fix anything so they don't even know where to begin
as far as programming for a operating system.
Unlike the older generation that cut their teeth on punch cards and basic.
I'm a veteran Linux user but have moved to OSX some time ago, since it gives me the UNIX I need, and the GUI I so sorely crave.
BUT recently, I was trying to get someone's computer up and running, and Linux was the only thing that would install due to some bug or other, so I temporarily put an Ubuntu install on their computer. Decided it would be a nice experiment for a non power user, to see how well they could cope.
He hated it. He couldn't get flash going, so it wouldn't work with certain sites. He was having trouble doing basic navigation of the OS, and had no idea which programs really did what beyond the basic.
There were a host of other issues I can't really remember now, but it was a very frustrating experience for him, and he was very happy when he got his Windows 7 back.
I sat him down with my macbook and he seemed to figure out OSX handily.
The Kernel works well. The OS handles many things very well internally, but the overall user experience, while MUCH MUCH improved over how things used to be, just is not as easy to use as a Mac or Windows computer.
The real work needs to be done by UI designers with coders to support them. Even connecting to a wireless network can be a chore. God forbid a driver doesn't work or something along those lines and you need to open a terminal.
While you'd think the 'many eyeballs' thing would take care of something like that, it seems all these eyeballs and the heads behind them just want their OS to work, and for a non power user right now, I wouldn't call it ready.
It's easier to fight for one's principles than to live up to them.
I think it's the fact that students these days are now first taught to program in Java, and very few spend any time gaining experience in C. I'm TA'ing a class in database internals this semester, and the class project is to implement a simple DBMS in C/C++, and about half the class is having a hard time because they're unfamiliar with the C++ programming. (And if you ask them to eschew OOP to program in straight C, there are probably even less people who could handle it.) The skills just aren't as common as they once were.
One only has to remember what things were like with Linux 10 years ago, in the year 2000, to know why the interest just isn't as strong today.
At the time, it had a massive advantage over the Windows 98 platform, which was the common desktop at the time -- it crashed constantly and required formatting every few months, and was vulnerable to total crap like TCP/IP flooding, running unlimitedly powerful .vbs scripts, typing "con con" into a console, and giving IE basically Admin access to your system through ActiveX. Doing anything from zipping a file to hex editing to writing code to making simple video and sound files required outright piracy and the use of horrible freeware -- friendly, open source, cross-platform apps and web apps weren't common. Winamp was a shining example of a great, free program back then, and it wasn't open source and came bundled with AOL crapware.
Linux, on the other hand was rock solid. It didn't crash, it had anything you needed readily available and installable. Need a web server, an IDE, a hex editor, an image editor more advanced than mspaint, PERL, an audio player, an IRC client or anything else? It was there, no running keygens or installing adware. Same with using existing things like ICQ, IRC, the web, usenet, etc. And they were actually competitive in terms of friendliness compared to what was on the Windows platform. You could also script them no problem from a totally OP command line.
But it was a terrible pain to install for a young amateur compared to just popping a LiveCD today. Have fun partitioning your HD with raw fdisk (cfdisk if lucky) and setting up XFree86 by hand to see any graphics. Try setting up non-PNP ISA devices with screwy drivers -- often you had to go hardware swapping for something specific, like a $10 Crystal Sound card. Try rebuilding the Kernel with an ALSA patch to get that to run. Try not using a packaging system for anything -- RPM was terrible at the time, you were better off just compiling things.
But socially, if you could pull it off, you were pretty elite. You had a solid, invulnerable, insanely powerful OS with every tool you'd want at your hands. It was rebellious against the suits and it had the promise of an open source world. The programming was much better -- OpenGL was way, way easier to write for than DirectX 6, which was just nasty, and was cross-platform to boot. The internet population was far more technical at the time and also respected it. Social networking / multimedia was years away from being mainstream at the time. Anyone who ran Linux wasn't a 'n00b' or a 'lamer' on primitive web forums, Usenet, IRC, etc.
Today? Windows XP/Vista/7 has been comparatively stable and isn't nearly as vulnerable, unless you're just stupid. There's mountains of OSS software out there for every task that runs under Windows, if it wasn't built to run under Windows. No one cares that you run Linux, and will just get frustrated if you can't run the 10% of things a PC can. Ten years ago, the biggest PC game -- Quake 3 -- ran great under Linux, but try getting MWF2 to run under it today.
So there's no real motivation to get into it now -- it doesn't have the appeal comparatively it did 10 years ago.
I don't think it is Linux as such - it is just that programming no longer new and exciting. When I was young, computers were "electronic brains" far beyond the reach of common people; making electronics was exciting back then. I learned programming in high school - and it was incredibly exciting to sit up a whole night transferring a BASIC program to cards with a pencil. Programming Windows 1.x and 2.x was exciting because it was, again, something new and inspiring. Then finally Linux introduced a lot of what computing was all about - preemptive multitasking, full access to all aspects of the system etc etc, which you've never had in Windows.
But now, I think we have come to the end of the new and exciting things, at least in programming. It is a bit sad, but it had to come to an end, eventually. I've enjoyed it, but it is no longer the hottest of the hot.
Do I get paid working for the kernel? How do I get company backing me up? I am interested, but I still need a job have to pay for the bills and pizza!
It is simply that they follow path of less resistance.
Neither dealing with makefiles or coding in low level language that uses pointers are too interesting to young developers, in fact most younger developers/ new grads struggle with makefiles. At best they know how to write make file that compiles single project without external dependencies.
Same with pointers, less and less courses offer C/C++ coding. Even if they do, it is not sufficient to get involved in huge project.
So environment is not too interesting, it is actually too difficult for most young developers as these things are not covered too much at class. Let's not forget other thing - laziness - learning all this is not easy. There are other easier devel. env. that do most of work for the developer.
It's not new and exciting any more, they have debt which needs a paying job and they're working too hard in that job because they haven't realised yet to not allow their employer screw them and there are so many open source projects and indie development options that may offer a quicker option to cash than kernel development as far as they're concerned.
When I started using computer it was with 8 bit processors. You had to drop down to assembly code if you wanted to do anything useful, at least for the high performance parts of your program. Even the normal environment you had to give cryptic low level commands to load or save a program from tape/disk.
Now the hardware is hidden under 20 layers of abstractions so that you can go a day without even seeing a command, just pointing and clicking and using applications.
And it seems that all the schools are teaching now are applications. I guess it is easier.
I think that every person that takes computer science in school should have to build and program a simple little computer, learn how even a simple little computer is useful. They could use a pic or arduino processor as the CPU. They should also have to build and / or / xor gates from discrete components and build them upto at least a half adder. This could be done with some software.
Have any of you guys ever looked at a picture of the Linux kernel?
My best guess [and I am not trying to be facetious] is that unless you were in on kernel development in the very early days [so that you had some hope of learning it when it was still tractable], then the thing has gotten so big now [what is it - like 20,000 files which get compiled in the basic kernel?], and the learning curve has gotten so steep, that no new developers have any realistic hope of grokking it anymore.
Seriously - at this point, just learning the kernel would be akin to a 6- or 8-year PhD project [in something like a Department of Archaeology, studying ancient Egyptian hieroglyphics].
Kids today don't have no desire for accomplishment. They don't want to make anything, or do anything, they just want to have stuff. Stuff which requires only a minimum of effort.
Because we all know there's so much money to be made in developing for Linux, especially compared to apps for the iStore, or, hell, even flash games... -sigh- It doesn't help that you have recent generations of developing students realistically going through childhood never exposed to Linux proper, or don't realize they're using something Linux-based. Most developers want to play with the things they've used their whole lives, things that their friends or family can appreciate. You could make a Linux application, and have most people never hear of it... or you could develop the next Facebook or Twitter, and become billionaire talk-show-material.
I want to learn C, but I must teach myself as there are no available classes to take in my school. And this is troublesome, especially when I need some sort of push on the back to actually do these tedious learning-tasks... My school only offer courses in Java...
It's not that we're not interested in the kernel, it's that the kernel moves so rapidly along with the sheer size of the kernel, where's one supposed to start?
I've seen some Google tech talks from Andrew Morton and Greg Kroah-Hartman, they both recommend that patching the kernel is the best way of learning it.
Most universities that I know of either use OS161 [http://www.eecs.harvard.edu/~syrah/os161/] , Nachos [http://inst.eecs.berkeley.edu/~cs162/sp10/] or Minix from Tanenbaum. These kernel's are small enough that a student can know all of it, but is that any good for "real" kernel's like Linux, BSD, etc...?
I don't think systems programming has lost it's "cool", any respectable university still has a low level operating systems course where they either work on simulated hardware like SYS161 or work on actual real hardware where they have to get their hands dirty with assembly for context switches/interrupt handlers/low level IO (UART's and Serial/Parallel) and do Processes/Multiprogramming/VM in C.
And no, we're not given any IDE's like Visual Studio, it is still just a text editor (vi or emacs, pick you weapon) along with Makefiles and gcc/gdb. And yes, we were taught Java/.NET/Scheme, and we know when and where to use these languages/tools appropriately.
Its more about transferring these experience from the "Ivory Tower" world of academia to the real world, and we have no idea how to start that.
How did you experienced developers start? Did any of these academic kernel's help at all?
Looks like we forget the "getoffmmylawn" tag on this one. Selective memory I take it?
Who cares? There will always be people who complain about something whether or not there is any factual basis for their complaints.
And there will always be people who repeat those complaints even if they have not taken the time to verify them themselves.
Meanwhile, there are hundreds of projects that run on Linux. From Apache to Samba to KDE.
Does Linux really need developers who have to be told that Linux is easy?
Let the young uns blaze their own trail. Linux is not the pinnacle of technical achievement, and will be even less so within the next decade. There need to be modern alternatives to it, and I'd prefer if they were open source.
My take as a "young developer" isn't that the kernel is too complex or that I don't like developing for the kernel (although it certainly does have its issues) as that the drawbacks outweigh the benefits. I've written device drivers for some stuff I've got laying around as well as done some board support and bringup and the experience isn't any worse than one could expect from such a task. However, working on the *mainline* Linux kernel:
a) Doesn't get me paid.
b) Isn't "hip" - you don't see kernel developers speaking at media conferences or hanging out with celebrities, like you do "web 2.0 kids." The no-e-fame aspect is actually appealing for me but not for many of the people I've met.
c) Involves dealing with a lot of douchebags.
d) Involves wasting my time convincing an old-hands crowd self-assured of their relative place in the development world that my ideas have merit (also see c).
I "develop for the kernel" just fine, but I have no interest or desire in getting my patches to mainline - they benefit few people, Git makes it easy to track trunk while keeping my own code around, and I don't want to waste my time dealing with the douchebaggery and politics involved in reaching the mainline kernel.
1) Modify the source.
2) Make it.
3) RPMify it.
4) Install your RPMs on a machine.
5) Boot it.
6) Test it.
7) It doesn't work.
8) Debug it.
9) Go to step 1.
All that's fine, and it's really rewarding when your kernel is fixed or you make a driver, but making something in Perl/Python/Ruby is actually fun.
I know RPMs aren't required, but we have 'process' here, it's required, and it takes at least half an hour to complete a build. And you may not be able to get test time today, unless you'd prefer 2:00AM. Makes me want to melt on my keyboard.
And all this because I wanted to prove I could do it. Well, ok, now what.
...I heard Mac OS X 10.7 'Cougar' will attract lots of young developers... :)
"Slow down, Cowboy! It has been 3 years, 7 months and 26 days since you last successfully posted a comment."
The kids have all moved on to FreeDOS.
These days the Internet is big focus for people and web applications development isn't done in the sort of languages people write kernels in.
C was a big thing when I started coding, I've not done any in about 10 years.
Eh.. Pardon me? What exactly has the GUI to do with the kernel? Most kernel development I've been involved with in embedded devices and all kinds of different kernels and microkernels used a serial console for development... to hardware-test stuff that was written on an emulator. Even writing to something like memory mapped video (e.g. 0xb8000 on PC-like hardware) is luxury at this level, and VESA-consoles is nearly unheard of! Sorry, but GUI is something for application developers, and simply doesn't belong in the kernel. If good ole text / serial consoles are alien to young people, maybe those young people should learn to use them, before even considering writing system software. That's the easiest part of the learning curve anyway.
cpghost at Cordula's Web.
That *does* seem to attract new people? I.e. *if* you think there are newcomers that would hypothetically be drawn to OS-level function that are somehow uninterested in the linux kernel, what do people see them go for?
I would theorize that there simply exists a large majority of young developers that are at the least disinterested to downright intimidated by low level workings of platforms. They are taught at an increasingly abstract level, where little things like explicitly freeing memory just aren't part of their vocabulary. I don't know what the course load is today, but when I went through, we were forced to take 'software engineering' (I still have a large degree of doubt over the value of that class, it seemed far too susceptible to fads) sorts of classes that focused on what the market seemed to be demanding at the time, but also chip-level engineering and assembler classes to not view most of the stack as a scary, untouchable black box. I would be fearful the latter parts (arguably less 'practical' for 99% of the career field) would risk being omitted.
XML is like violence. If it doesn't solve the problem, use more.
Therefore, it "needs work". As far as I can tell, the only outside group that has real sway with the kernel developers are the webserver crowd. Conversely most of what the kernel group have tried to address on the desktop (scheduling, audio and video issues) has been FUBAR.
Why the difference? Because the kernel devs are good at satisfying the wants of people who normally deal with technical complexity (like sysadmins), but are clueless when the technology has to integrate with an elegant, straightforward and still powerful UI. That is where designers come in, start to implement their goals, and then send emails to the kernel group saying X and Y need to be tweaked in a certain way to facilitate the designer's vision for the UI. This work well in a corporation like MS or Apple, but the dynamic that would allow this in FOSS is broken. First off, Linus says he doesn't want Linux to compete with MS and that's that; designers are relegated to being whiners instead of being in charge.
Second, discussing and pushing "Linux" for the desktop is a mass delusion in FOSS circles. Linux is a kernel, and if Apple tried to sell customers on XNU (and Hey Kids!! Mix and match any GUI you want and don't bother me!!) they would also have a vanishingly small market share. Google understands this problem which is why Android is simply "Android" with its own high-level SDK and not "Google's version of Linux -- go learn Linux + misc libraries on your own kiddos and cook us up some nice apps" (yeah right... that's not gonna happen very often).
If it was really anything to do with youth, I'd expect to see older developers joining the project but not younger ones. Is that really the case, or is it just that *nobody* new is joining the project now?
I'm not a kernel developer, but I've poked around specific parts of the kernel for various reasons. You do not have to even think about the existence of most of the code to work an a particular segment. Hell, I've created small kernel modules that compiled against a kernel without even having kernel source on my system.
It might be strictly monolithic in overall architecture, but from a development standpoint much of it isn't meaningfully that different from a modular implementation. Most of the differences manifest at runtime, not at development time.
XML is like violence. If it doesn't solve the problem, use more.
Well, because they are young (and scared of kernel)? Or because they're spoiled, and are choosing to program in some shitty language/framework where they don't have to understand a thing?
It has nothing to do with Linux kernel. Most "young" developers I meet these days are nowhere near (in terms of quality, and 'curiosity') the "young" guys I was meeting 15 years ago.
There is such a huge learning curve, there is simply no way for your average young developer to get into it. Some say that it's good that only older, more experienced people are getting into it. I would argue that when today's youth are older and more experienced, they still won't be working on it.
Coming from a guy who went from Computer Science, to Computer Engineering, to Civil Engineering and graduating a year ago, Linux programming is unpaid and there are so many damned programming languages out there to learn. Some eventually become obsolete, liek 4TRAN. Didn't you see the article on Oracle and Java? They are having the same problem attracting young talent.
Also, I'M AN ENGINEER! GIVE ME A JOB! Oh wait, they aren't needed anymore. The economy went to **** and I have to go back to grad school to look attractive in industry again.
Plus, you forgot the one goal about corporations..."MAXIMIZE PROFIT WITH CHEAPER LABOR!" You put your foot down and say enough, they say STFU we go for cheaper labor. You open a business with some buddies, make a really good product, and get bought out for millions. The American Dream.
I see it everywhere, in every aspect of life. Back when i was a teenager (18-20 ish years ago) there was still the illusion that you could 'make it' if you pushed it hard enough. you know, good education, good career, a decent, higher middle life etc. and it was true by then here too (turkey). there were many career paths open, there was a demand for many high profile jobs in many sectors. it was good back then.
but naturally, after 20 years, the market saturated. there isnt a noticeable demand for any high profile engineering, computing etc jobs. not enough to meet the supply that is being pumped out. youth was noticing that as time went by in that two decades. salaries got lower, evened out, promotions and management positions lessened. they also discovered that everyone couldnt be managers, or entrepreneurs and so on.
so, they have increasingly let go. they are trying to find ways to 'make it' or live a life that will not necessitate them to exert themselves too much while getting little back.
from what i see, this is no different in other countries in the west too. similar situations, as dog eat dog corporatism pushes forth and sectors are consolidated, more work is being done by less people. and ironically, people who are employed are made work more and more - back 20 years ago it was natural for workday to end at 17.30 or 18.00, now everyone is being worked until at least 19.00 even in top profile jobs. working on saturday became a norm, with the exception of europe - weekends still a reality in usa though.
so youth see these prospects, and get disillusioned. noone wants to slaver away their life with pitiful number of management jobs, promotion opportunities with little time to spare for themselves.
this is a direct result of the system we are in and its irreversible for any sector, unless system and our approach changes.
one exception though, is scandinavian countries. in these countries where there is strong reassurances of future due to a solid social security system working for over 40 years, youth are going for whatever they want to chase. and they are productive too. leaving aside the ones that go to africa or similar places to volunteer for feeding the people etc for u.n., there is a good deal of contribution to both linux kernel and other open source projects from these countries. there are a lot of web apps that are coded and released open source too.
the contrast clearly proves history right again ; back near the end of roman republic, big farm holders consolidated farm sector by flooding market with produce by employing slave labor, lowering prices, and causing the small farm holders to go into debt. in the end these small farmers had to sell their farms to big farm holders and move to cities. since they didnt have anything to root for in life, any aims, middle class of the society wasnt so keen on the country anymore, they just let it go for free bread and circus games. in the end rome declined and declined in culture, leading to many weaknesses that led to its downfall.
today is no different. big companies consolidate sectors and make people work for endless hours for slavering wages. in the end, youth either let go, or just refuse to enter the system and become drones in the first place.
Read radical news here
I'd like to draw a hard distinction here between cases where someone is actually being an asshole (see some of the other responses), and cases where you're wasting someone's time because you couldn't figure out how to just fucking Google it.
I try to be a bit more helpful and offer to Google it for them, but seriously, there are a lot of questions by people who need to follow this flowchart before asking questions.
The attitude comes, I think, from the fact that this is an ongoing problem. There are enough real questions and real problems, and enough real work to be done, that it's infuriating to see dozens of people asking the exact same questions (which are right there in the FAQ)...
Eventually, you end up with a situation where, consciously or not, the community has learned that it's more productive to be antisocial and drive away a few good people (and hopefully get a few people who learn to ask better questions) so we can get things done, than to have to deal with the unwashed masses.
I'm trying not to be elitist here -- again, I present it moderately gently, and I do try to offer an actual response. However, keep in mind that this is not the help desk, but a community. Meet us halfway, and we're generally quite helpful and friendly, though there are obvious exceptions. But if you're not willing to do your homework, don't expect us to go out of our way, either -- in that case, you're the one being rude.
Don't thank God, thank a doctor!
All the action is on mobile devices, and Linux on a mobile device is like pounding a screw.
Umm.. better tell that to the Android developers. Android 1.5 is based on Linux Kernel 2.6.27.
Sometimes the light at the end of the tunnel is the headlight of an oncoming train.
Perhaps it's because (in my experience) linux developers are pompous, arrogant assholes.
One of the side effects of open source development is that you get a slightly different driver for every device, instead of generic drivers.
This is the case for every OS. Some things are done generically (i.e. AHCI driver can support a number of SATA chips without a lot of drawback), others that could be done generically are generally crappy when accessed via generic interfaces (i.e. VBE graphics vs. specific GPU drivers), and others are simply impossible to write generic drivers for once firmware services stop (i.e. most SAS controllers, sound cards, etc). WHQL does *not* limit the number of drivers, and simply formalizes the 'write once, debug everywhere' reality that any platform of that variety endures at the driver level. Apple's approach alleviates them of a lot of that, but their drivers are no less specialized than anyone else, just fewer of them.
All the action is on mobile devices, and Linux on a mobile device is like pounding a screw
While I could see QNX and the like as appropriate for the embedded space, Linux is very popular and viable in the embedded space. The vast majority of non-iPhone smartphones are Linux based. That's not to say they all do it well or in a manner that would fit with many people's view of embedded systems, but it's not Linux that causes that parting from the sensibilities of embedded, it's attracting app developers that are too bad/lazy to write good code in an embedded context.
The Linux GUI is still ugly.
*The* Linux GUI is an interesting statement. GUIs on Linux range from Android, to Xorg, to Luna in WebUI, to Tivos. If you want to be strict about it,*Linux* isn't about GUI development, it's about the foundation an entire system including a GUI needs. This isn't anti-GUI, this is simply a matter of platform prerequisites. FYI, I'm under 30 and I very very very much appreciate the CLI and not having to carry the burden of GUIs on thousands of headless systems I manage day to day.
Linux failed on the desktop.
It didn't fail on *my* desktop. It didn't fail on the mobile device market (it has an order of magnitude larger share than Windows Mobile). In terms of who wants to work on server architecture, the answer would be obviously some people, as a lot of critical effort and money is invested in that space software-wise.
XML is like violence. If it doesn't solve the problem, use more.
The reason more young people are working now with mobile, facebook, etc is because they can, I'm pretty sure the developers from the 90's would have also done the same, had they been able to.
I meet college-age people all the time and they have an iPod and a MacBook. I met some from Texas recently and I thought they would have Dells, but no: iPods, iPhones, and MacBooks. One literally told me "my mom has a Dell."
All is not lost for open source. All 3 of the above devices has open source Unix core systems and open source WebKit HTML5 browser out-of-the-box. And the Mac has Apache and PHP, Perl, Python, Ruby. And the young coders I've met are building on top of Apache.
Linux doesn't do enough on its own for most young people. And they weren't indoctrinated a decade ago when Linux still tried to supplant Windows. So dual-booting Linux/Windows is a drag and PC hardware is a drag. They're working at a higher level than that. They expect a computer to have video editing and iTunes. They expect it to work for 3 years straight while they build websites. The priorities of Linux aren't the priorities of this generation. They're not trying to escape Microsoft through Linux (like Linus), they escaped through Apple.
So it's partly the sickness of the PC platform, partly the limited utility of Linux for modern tasks, partly that this generation is working further up the stack, partly that they're (rightly) spoiled by the Apple Store, and partly that whoever Linux is made for, it's not for iGeneration.
The reality is (as usual) quite different, and the old arguments have nothing to do with the kernel anyway. Look at the latest statistics of who actually writes the kernel: http://www.linuxfoundation.org/publications/whowriteslinux.pdf. From this paper it is clear that the rate of changes has increased quite a bit, and that the latest Linux release probably had something like 1800 different contributors. If you go back 5 years that number is just 400, so the assumption that there are "no new developers" is clearly false. What the first article is really about is that there are "no new subtree maintainers", but that should hardly surprise anyone. The Linux kernel is a huge pyramid (similar to a big corporation in a way), the people on the bottom of the pyramid are not the ones who get sent to the kernel summit, and the people on the top tend to like it there. I doubt that the _average_ age of all the Linux kernel developers have changed all that much in the last 5 years, it might even have gone down a bit, as more of the development is done in China, Japan and India these days.
Linux on the desktop might not be growing as quickly as some might hope, but it keeps growing faster and faster in almost every other market segment. When was the last time you heard about a new mobile phone, set-up box, web-service or computer science project which was not based on Linux? Sure, Microsoft and Apple might launch their new products now and then, but they are tiny compared to the rest of the market.
I think one reason is all of the extravagant promises made for Linux--the nth Year of Linux on the Desktop--never happened. Linux didn't make any serious inroads into Windows or Mac market share, and, in fact, OS X has been the OS which is steadily gaining share. Millions of users didn't throw up their hands in frustration and switch to Linux desktops, and on and on. Even worse, the future of app development now seems to be remain on Windows and OS X, and the mobile web: iPhone/iPad/Android, etc. And, while the Andriod OS is based on Linux, it's owned by a consortium of large corporations, and is definitely not an community-based, open source project. So, what is to attract young developers to Linux? Where are the jobs?
That said, I think it's important to draw a distinction between the technology of Linux and cultural aspect of Linux. The technology has clearly been a success, as its domination of the server space, and Android, shows. But that doesn't necessarily translate into a larger societal effect, and that's what I'm getting at. There has been no explosion of the user base, and therefore no need for a huge increase in needed developers. I don't think Linux is going anywhere. But I also don't see the Linux user base expanding and driving the need for more developers and, more crucially, I don't see Linux driving the creation of a lot of jobs to draw younger developers into the fold.
It's easy to sit back and blame younger developers lack of skill. But, if you were coming out of college with a CS degree, and needed a job, what would you do?
I am a believer of momentum and curves.
n/t
Can you construct some sort of rudimentary lathe?
Graduating in 2004, my school made you take MIPS 2000 assembly as well as fundamentals of operating systems which included processor, disk, and memory management. I hope any true CS degree includes classes that are similar. Yes I AC poo poo those lesser beings and would rather if they just wrote their web applications for target audiences less than 20 people.
As for young maintainers, I'm betting it will be a new *nex grassroots.
Unless you're running an old clunker or an extremely low-power portable, or you don't have any other OS available, there's no good reason for Average Joe Sixpack to run Linux.
Now, Linux is seen as an antiquated, arcane operating system - because it is. The codebase is an incomprehensible train wreck that just keeps getting bigger. There's still no real cohesion to the whole thing. And guess what? To all you 'rebel without a clue' types, it will never, ever be popular no matter how free it is.
Ten years ago there was a real risk at Microsoft that Linux could displace Windows as a major desktop operating system. As a server operating system (one of the only things Linux does well) it already had. The stability of Windows was lagging miles behind pretty much every breed of Linux, and projects like Wine threatened to bring Windows applications to the platform. Usability was also improving by leaps and bounds, and a lack thereof has always been a major obstacle to Linux adoption. It really seemed like Linux was going to have an impact on the desktop market.
But ten years later, Windows has improved dramatically. Windows emulation is a joke. Improving usability resulted in a too-little-too-late scenario where it was only after Linux had been definitively beaten that it became usable enough for someone with almost zero prior knowledge of the operating system to install and run it, and it's still very, very far from where it should be in that arena. The best part is how the drive to make Linux more usable caused so much friction between people that actually wanted a usable OS and script kiddies that wanted to be 'elite'. (In every single area of the Linux community, snobs have always been a huge obstacle to progress.)
Windows won. OSX isn't far behind. Both of them leave Linux in the dust because they know what's important. The extra effort that has to be committed to get most programs working isn't worth it for everyday use. The OSS community has zero expertise in interface building and user friendliness, nor do they have any interest in it. There are no standards, and any attempt to implement them would be seen as draconian, 'corporate', and wrong. Everything that could possibly make Linux competitive as an operating system has and will continue to be ignored by people who have no idea what the average user wants out of an operating system, because they're so used to working with crippleware that they no longer see it as a handicap. The only reason you will ever want to run Linux is if you have no other option. Full stop.
And this is why the developer base is aging and dwindling like it is now. It has no future. The project is far, far past its prime. Academics will still use it as a cheap substitute for UNIX, and it will still have a home on your repair discs, but the year of the Linux desktop will never arrive. If you guys were smart, you'd abandon it and start over, or maybe migrate over to a project with a sensible kernel architecture.
I don't know about that whole "generational" thingie, but what I see is that the minimum skills for entry into kernel development has grown. A lot. And as rule, anything that becomes complex enough to require a lot of effort to learn, it's done only if you get paid for it. The Linux kernel is nowadays a very complex beast, that most young developers prefer not to waste their time getting into and even less for free. Don't get me wrong: Linux is still very much alive and evolving, also, some young developers now in college surely will end up working on supporting Linux, or other open source projects, but they end doing this only because they can get a living out of it. College, girlfriends/boyfriends, mortgage and eventual marriage+kids are costly endeavours. Idealism alone does not feed you or your family (as Erasmus in his Praise of Folly, already knew very well). The time of martyr developers, churning out device drivers for the general good, acclaim and nerd fame is very much gone. And that's fair, as all the effort required to develop Linux kernel code is worthy of earning you a living.
Someone reports a bug and goes to great lengths to set their system up to do debugging, run GDB, provide hardware specs and outputs etc. This is a show stopper for the user and several commenters yet the devs will ignore it or put 'won't fix' on it and close the bug with little or no explaination. Yea that's you newsfox.
That's mild in comparison to some of the developers egoism. Gaim worked very well until the developers decided to defeature it. There was a fork for a time and that did force the developers to add the features back in just long enough to strangle the fork. Then they renamed it pigden and started defeaturing it again.
In forums too numerous to mention there are old developers convincing new coders NOT to touch linux or free software development as it's becoming a sewer.
I'd go on a Vegan diet but the delivery time from Vega is too long. --brownkitty
While kernel team is getting older, the time does not seem to affect the Slashdot crowd - it still seems to be ruled by teenagers :)
The young developers have move up one level of abstraction, the platform these days are one level higher it used to be. People have move up with it, the same way as people moved from working with their own hardware, wrote their own software for the hardware, wrote their own drivers, etc.
People are now developing applications or applications inside applications (web apps in particular). OS-level development is considered as low-level as writing your own application that ran directly on the hardware without an OS.
I am a college age programmer, and my major problem with working on projects like this are the fact that I'm not sure where to go to even begin learning. My usual strategy for learning something is to poke around at it myself, break it, fix it, and repeat. I'm not interested in buying a huge tome to read for weeks while trying to memorize everything. If i cant figure it out myself after a few good shots, without anywhere to go to learn about it i usually just give up and say "maybe I'll try again later." This is probably why i failed so badly at 3D programming, because there are so many things that you NEED to memorize and know how they function to understand even the basic way it runs, and with all the materials out there to help, not a one is worth its weight in....well....paper
Wikipedia (the content, not the source of the mediawiki project), is what most people experience as 'open development', even though it's not programming, and when people's first experiences are "your changes aren't welcome" aka "not-notable" that pretty much paints the picture that OSS projects are snobby elitists.
Seriously, I add content to wikipedia, or file bug reports to OSS projects knowing full well that someone may simply flag it as "not notable" or "won't fix"
And as a developer I don't submit bug fixes to OSS projects for the same reason. They either never get integrated or they just get thrown away.
So I'm done, no more OSS involvement. If people want developers for their projects, they need to actually have a history of accepting or providing feedback on why the proposed solution is a bad one. Not petty arguing about coding styles.
Let's face it. The time that individuals can make the big bucks from Linux is long past. Now that the early contributors have grown a bit older I'll bet some of them wonder why Linus is a multi-millionaire while they received nothing.
As someone whom has gone down that path, most programmer jobs (especially for those with not large amounts of experience) is in Java, .Net applications, or website design. If the market will not pay for it, people are less likely to put in the effort to learn it.
Back in the 90's Microsoft was dominating the OS industry. There wasn't really a choice. The Linux kernal joined forces with GNU to provide an alternative out of necessity. Today there is a lot more choice (largely due to Linux) and the driving necessity just isn't there any more. Young developers don't see a crusade they can join and wave their flag. They see just another career option (and one that seems to not pay as well as other options).
There isn't much more that can be done with operating systems. Once the kernel works reasonably well, and the interface works reasonably well, there's no way left to improve (see: new versions of Windows improving the UI mainly with flashy graphics, GNOME and KDE starting to do the same). All the development going on right now is in applications and on the internet.
Purely anecdotal - younger generation of developers are more geared/equipped towards making web pages (and usually suck at it) than dealing with low-level interesting (and, at least, be decent at it.) They could be working on Java or C# for 8 years (or say they know C/++) and not know who Gosling, Hejlsberg, Stroustrup or K&R are (which is like looking for a job as a Physicist and not know who Newton is.) Don't know who they are after working on their stuff for years, chances are you suck at it. Purely anecdotal so that it for what it is if your mileage has varied when it comes to this.
What are developers doing these days - commercial ones at least? Learning things like WPF, Silverlight, and C#. Most are moving away from C/C++ because they realise that the job market are not that interested in C/C++ developers these days. There only seems to be a couple of reasons why a development shop would use C/C++ these days,
a) They have a legacy product, which is often ancient and thus not very nice to work with.
b) They are developing something that wont perform well enough in C# - not that many things these days.
I am 31, and I moved away from C/C++ in the commercial world 5 years ago because I realised I would be left for dead. I am very happy I did that or else I would still be stuck in the same job I was 5 years ago.
So why would I want to spend my time getting back into C/C++ to develop a kernel? It is just not appealing to me as it wont further my career. I only have so many minutes in every day, so I have to make a choice. I suspect that young developers are being sucked in by things that look / appear more appealing, most notibly Silverlight and WPF. Microsoft are always pushing the boundaries of new technologies.
I mean, it certainly couldn't be about lack of money, eh?
Please do not read this sig. Thank you.
This reminds me of the way things were many years ago when mainframes were still king. There used to be a very clear distinction between system programmers and application programmers.
Systems programmers worked on issues dealing with the OS and getting it to talk to the hardware, while application programmers worked strictly on applications - payroll, accounting and the like. In most cases neither had a clue about the others domain of expertise.
Then it seemed we went through a period where the OS provided more and more functionality on it's own so that not much tweaking of OS itself was needed, and all hardware interfaces (drivers) were supplied by vendors, so the systems programmer's job was relegated to more of an administrator/maintainer role.
Higher and higher levels of abstraction were made available to application developers which removed them further and further away from low level programming details and enabled them to, in effect, create applications by wiring together the various APIs.
Very few opportunities were available for systems programmers that enjoyed that experience of working on the "bare metal".
The advent of microprocessor based systems (later to be called PCs), provided an outlet for all the pent-up desires for system programmer types to be able to code to the metal again.
A few lucky systems programmer types were able to land jobs working on OS development and a few went out on their own to try and develop something radically new, but with marketing not being their strong suit, after a few years, through an evolutionary process, the only viable OS left standing with broad acceptance was from MS (please table the requisite debate on why that was for another discussion).
Once again, the system programmers role was quickly becoming one of an administrator with the exception of niche areas like driver development, unless you happened to work for MS (or Sun, or any number of lesser used OSs).
Finally, with the advent of OSS in general, and projects like BSD and Linux in particular, the door was opened again for a few motivated souls who still relished the thrill of working below the API level.
There were opportunities to participate from the ground up on the development of new OSs and the excitement was enough to change the IT industry forever.
The problem is, after a few years, those systems programmers of bygone years are getting long in the tooth and thinking more about their grandchildren, than setting the world on fire with their now 15 year old OS. The sad thing is, most young developers today were educated as application programmers, not systems programmers. A single semester course in OS design and a semester on "C" development is hardly preparation for digging into kernel development.
Today's myriad of rapidly changing APIs and technologies is plenty to keep a young developer challenged (and hopefully employed) without them having to dig into the gory details of OS design.
My hope is that innovation will come to the rescue again as it has in the past (although it seems not as frequently as it once did) and present a new opportunity for fresh ideas for OS design and ignite a new generation of systems programmers to bring us into the 21st century instead of continuing to refine the 20th century OSs we have now.
MESSAGE to aspiring young developers:
C'mon kids. Get off the couch, put down that Wii/Xbox/PS3 controller, and play the most challenging video game you could imagine. Immerse yourself in C, or even better, in assembler and when you think your're ready, pick up a copy of Minux sourcecode (or some other "small enough to get your arms around" OS) and dig in. You're generation is going to need you as us "graybeards" migrate into the background. If you don't, you'll be at the mercy of the corporations to control your computers. I firmly believe that if open source OSs go by the wayside (or become insignificant enough to ignore) due to apathy, corporations won't make the mistake of letting the
Sometimes the light at the end of the tunnel is the headlight of an oncoming train.
It takes a certain type of individual to get his/her kicks out of crawling around in kernel code. Besides that, C isn't as sexy as it was 15 years ago. I ran a LUG for a few years in mid 2000 after being a member for about 5 years. There just wasn't the enrollment in the later years; New people showing up were looking to talk web development, not really anything else. There just isn't the interest in programming these days that there was in the early 90's. Back then, if you had a comp, you were coding - Pascal, Basic -something. I don't know many young people with an interest in writing code these days. The ones that are doing it, are using PHP, not C or assembly.
boycott slashdot February 10th - 17th check out: altSlashdot.org
The whole article is wrong, since the premise (the title) is wrong.
Linux is actually the favorite platform of young developers. But your definition is off.
The thing is, that the younger generation expects quicker results. We have solved memory management, exceptions, garbage collection and data structures decades ago. And so modern people really see no point in re-inventing that wheel again, and again, using an outdated language.
But that’s exactly what coding in C/C++ is. Sorry to tell you (who love those languages) that. The programming style is not efficient and contemporary. (Execution may be efficient, but that’s something for experienced people like us, not for your developers who first have to become good enough for this to matter.)
Here, scripting languages like Python, Ruby, JavaScript, Bash (!) and functional languages like Haskell and Erlang shine.
And when working with those languages, Linux shines even more.
Everybody can get quick cool results with some JS, (X)HTML5/SVG etc. Or Python and Bash on the shell. It’s very rewarding. It’s useful and fun.
Then, later, one can move on to Haskell & Co, C and C++, if needed.
In one sentence: Linux is the ideal testbed for new developers. But Linux as in GNU/Linux the OS. Not as in Linux the C kernel that is a messy PITA even to experienced developers.
Any sufficiently advanced intelligence is indistinguishable from stupidity.
There isn't much more that can be done with operating systems. Once the kernel works reasonably well, and the interface works reasonably well, there's no way left to improve (see: new versions of Windows improving the UI mainly with flashy graphics, GNOME and KDE starting to do the same). All the development going on right now is in applications and on the internet.
It looks like that *to you*. But the fact is that about 70%-75% of all development going on today IS NOT for internet applications. Automotive and manufacturing, medical devices, military industry, consumer electronics, that's where the bulk of development goes. Ever open that computer of yours and see all those boards in it? Ever seen all those little, strange and mysterious black square thingies, then one called "chips"? Guess what goes on them? Software, and not the internet application type.
Sorry, but that statement is so wrong on so many levels, it is embarrassing.
Furthermore, there will always be improvements on how we create things, operating systems included, not unless all of the sudden we stop making advances in computer electronics, solid state devices and network/communication technologies. Are you so naive so as to think operating systems of today will be capable of handing ever increasing challenges in file systems, networking, larger RAM, larger disks, greater bandwidth and greater parallelism? Seriously, what the hell?
Why can't people take copies of the kernel source code from 10 years ago, and scrounge up some old hardware and practice on that to get a feel for how the whole is put together?
If you want to learn the basics of auto mechanics, you go scrounge up a 1978 ford whatever, put it in the backyard, grab a set of wrenches, and start pulling apart stuff. Fix it, break it, take it all apart, put it back together again.
No, we don't want you to be skilled in digging into murky depths of complicated code and spending time to learn how the low-level stuff works. We just want you to "Git 'R Dun" by pasting off-the-shelf stuff together using scripting languages that don't require you to sit down and resolve things before they even compile (because they won't even be compiled until someone tries to use it). We care about reliable, clean functions doing the kind of complex things that the real world wants, we just want to see GUI displays in a hurry. After all, if the GUI's there, then it's almost all done, right? Forget about those nasty things that don't even have a GUI. They don't count.
And we want it fast, and we want it pretty and we want it now or there's people in India who say they'll gladly do it in 12 days for $75.
Signed,
The Management
I think the Linux kernel has become less popular among young would-be developers because of the confusion surrounding the term. Linux has become synonymous with the whole free and open source ecosystem. Developers think they are already contributing to Linux even if they have merely written a simple Python-based frontend to a command-line program or designed a pretty new wall paper. This in itself isn't a bad thing, but it gives young developers a lower mark to claim bragging rights as a "Linux" contributor. Why should I bother understanding or even contributing to the Linux kernel, when I'm already contributing to "Linux" (the whole GNU/X/etc OS)?
It's like the difference between being a sub-orbital "astronaut" and a NASA astronaut (or Russian cosmonaut) who has spent more than a couple of minutes in outer space. Why reach for the stars, when you could soon touch the sky by becoming a sub-orbital space tourist?
For the last 10 years there have been 2 things happening in the Linux community.
A small (compared the next group) group of very dedicated developers have been beating the living shit out of each other to make a pretty awesome kernel.
A very large group of people sat around screaming 'This is the year of the Linux desktop!!!!@$!@#^@3$^@#$&$%*$' rather than actually fixing the shit that preventing the year of the Linux desktop the year before, rinse repeat.
What that really means is 'all those young kernel developers' you're referencing weren't actually a bunch of young kernel developers who were working on the kernel itself. They were just a bunch of fad followers who weren't actually useful and have sinse moved on. During that time, Linux lost its edge and reason for running it.
When Linux was started, that winter long long ago ... Your choices were Mac OS 8 (was it 7 still?) and Win95. You were more likely to step out your back door, pick up a rock, and throw it hard enough to hit the space shuttle as it orbitted than to have a stable Mac or Windows machine at that point.
Within a few years, Linux was big enough to be useful for the basics so a bunch of geeks jumped on the fanboy wagon (I was there too). But no one really contributed. I mean yes, some people did obviously, but the majority didn't.
The people who did contribute ... still are. The people who didn't, moved on.
Now those young fad followers are iDevice or Android developers this week. Its far easier for them to make their mark getting posted to the Android market place than getting committed to the Linux kernel. Todays need for instant confidence reenforcement in kids means they are going to go for that rather than actually making a contribution that takes effort.
Its not really any different today than it was then, except Linux has grown up considerably and isn't the fad anymore.
BeOS did the same thing, although much smaller and much much much shorter lived, and it died (okay, technically its not dead, but it might as well be). Not expecting Linux to die, but its time in the spotlight is long over, now its just one of the boys and will have to act like one if it wants to stay relevant.
Persistent Volume manager for Kubernetes - https://github.com/dwimsey/openshift-pvmanager
I'm not a kernel hacker, just yet, but it is a personal goal that I've been working towards for a while now. I don't get a chance to work on anything deeply linux at work, but I've seen some shortcomings in the kernel that I'd like to rectify. One example is the lack of a "Ready Boost" like cache, but a bit beefier, utilizing SSD's to alow large databses to run at SSD speed for writes and cached reads while gaining the benefit of cheap spinning disk storage. This is a LOT of theory work and deep kernel driver stuff that I'm glad to learn on my own time.
I might be unique, or perhaps the fact that I'm not actively DOING it makes me another statistic, but i think the kernel is a worthwhile cause.
md5sum
d41d8cd98f00b204e9800998ecf8427e
This may have been said already, but I'll say it anyway. The kernel isn't new, as many have pointed out. It does a good enough job at what it does for most people not to care.
What people need are useful applications to increase business and life efficiencies. Information systems, bioinformatics, solving life's issues. The kernel is fun for some people, but many don't see the excitement in the project.
including myself, know that reinventing the wheel is pointless. Until the Von Neuman model is succeeded, there's no point in trying to go back and code an OS with all the healthy competition out there today. Unless you are a programmer, Linux is useless for the most part.
Never say never. Ah!! I did it again!
Many, soon to be most developers only speak a dialect of Chinese. Most of the kernel comments are in English the last time I checked. There's really no need for developers in free-market countries, it's simply not a valuable skill.
--edfardos
WDM does divide drivers into class drivers that handle the common device functionality. You then can develop minidrivers or filter drivers which provide device specific functionality. This creates a set of generic driver classes and sort of controls the types of drivers you can create, but you aren't restricted from creating monolithic or legacy drivers which don't fall under the that model. I'm sure about WDF, it may be more standardized.
I do agree that WHQL is a good thing and probably catches a large amount of buggy drivers. Microsoft also includes the verifier.exe tool with Windows which you can use to perform the same tests as WHQL.
The clash of honour calls, to stand when others fall.
man bash | format | lpr
just read it
Reason for me at least is that Linux isn't interesting as a kernel when there's formally proven kernels like the se:l4 microkernel or a vm based / language verified (read: everything runs in ring0) such as Microsofts Midori. I don't want to dedicate my time to something that is good enough when theres something much better being created right now.
Young programmers who want the advantages of Linux without the drawbacks have shifted to Mac OS X (although not necessarily Apple hardware).
FACT.
now it's less interesting and more corporate. Sure there are a lot of contributers but they are mostly working for companies like Red Hat and IBM. Linux used to be mostly a project of young volunteers so of course the average age of contributers has gone up. Greg KH is also the one who wrote that report you linked to and he is the same person that is placing hope in retiring baby boomers.
For good or bad, that's been a natural progression of technology for quite a while. More layers are added, and each component becomes a complex machine requiring a dedicated specialty in itself. It's not likely to change. Fix-it-yourself Model-T-like objects are increasingly a thing of the past.
Table-ized A.I.
While I know how to write Linux drivers, I certainly don't know how to reverse engineer Windows ones. Developing without any documentation is too painful for me to bother with when someone else can do it a whole lot faster.
Linux was oversold on the desktop and who knows how long it will take for it to even get 5% share. Compare this to 10 years ago when everyone thought Linux would be a major contender on the desktop by now. There's no more revolutionary spirit. Linux is well established on phones and servers and doesn't need any help there.
in the past few years which is impressive for how young the project is. I suspect the main reason is similar, it's simply more interesting than Linux. Linux is a big messy monokernel and the people behind it can never agree on what it should be optimized for. It's a jack of all trades kernel that doesn't impress in any single area.
Colleges have always looked for an easier way to teach basic computer science to individuals. You can teach data structures in python, visual basic or any other language. The reason they wait to teach C++ later is that you have to get the basis down for the ideas behind the languages. This is a simple rule to life in any area of study. "You build a simple model of a complex idea." "You break down a complex problem into simple pieces." C++ has too much overhead to begin with. Students get stuck in the language and not the idea.
I like to refer to novice developers as Harry Potters. They learn a new technique and have to cast that spell in every situation. Take the Virtual function for instances, you don't really need it. Just somebody got the idea that it's great to enforce prototyping. Which brings up my current problems with my workplace. You'll get the experts who are really just novices trying to cast every spell in the C# discipline. Most the time because Microsoft has enforced the use of their magic incantations.
Colleges hardly teach a student what he will need for the working career. I'd say 83% of the jobs at the moment are ASP.NET/C#. 15% are JSP. 2% are Linux related. If you are a student then you had better be learning C# if you want to make a living and have a job upon graduation. GET A COOP JOB BEFORE YOU GRADUATE. That way you have experience upon graduation. I know many graduates that probably think just because they got their degree and certification that they are cadidates for a job. Truth is there is a whole science behind project management you only learn upon working.
The only Real linux jobs I can think would be tuned for the young people right now are Android developement. 25$ start up fee and you don't even have to own a fone. Sprint also offers something similar. Free SDK. Back to the subject, #1 reason nobody is interested in Linus development is that Ubuntu works well enough at the moment people figure there is no need. That and everbody is playing too much Xbox. Microsoft is giving away all their goodies.
The Zen version of Linux is the way ahead. They include patches normally passed over such as the Brain F### Scheduler (BFS).
It is just that who ever has got into Linux Kernel Development never quit. I am a Linux Kernel developer since 2.6.25 or roughly for the past 2+ years. I see plenty of new young people getting involved/addicted with Linux. The point is those who are aging are not retiring which isn't a bad thing at all.
You can get the basics of an operating system from the Dinosaur book. The you use deduction and figure out what files hold the piece you are learning. You don't start by just trying to encompass the entirety of the kernel. You just say that one day you are going to learn how the scheduler works. You start perusing the code. Make some logical assumptions and move to a different file. You write down in your notes which files hold what purpose. Eventually you'll have a general idea of how it all fits together.
I doubt any of the developers know everything about every subsystem. Not even Linus can possibly keep up with everything. I maintain a pretty complex application at my job. So many people have added to it that when it breaks it takes me a day to just go through and understand the logic. If I get tasked to another application developed by others then it will take me almost a week to move through the logic of the application before I can truly determine the problems. I can in fact make some assumptions but they are only opinions from experience.
It's about 7:20 in the AM here, so bare with me.
To answer the direct question asked by the original poster:
1. The "you can't make money by kernel level programming" or, even worse, "you can't make money by open-source programming" ideas
2. The lack of patience new developers have to search for something inside code not google
3. The fact that most new developers do not understand the idea of hacking because they are developers, not hackers
4. Lack of documentation and other excuses listed above in other replies 5. The fact that the code base is already stable enough in most circumstances and does not require modification in order for something to be programmed on top of it
POV: One can create userland code to maximize the efforts of the kernel and one can tune the userland available options in the kernel. I, for one, don't try to mess around with something that works. And another thing. When you try to understand how to kill a userland daemon (ie PulseAudio) and fail miserably only to find that most people will tell you that in Ubuntu it is better, for your purposes, to remove it completely, you start to get a sense that you're using Windows. Ubuntu and friends make the user lazy. I'm not trying to start a flame war (does it even exist anymore?) but, with the introduction of HAL and PulseAudio and the other crap that you need to print the tree to in order for you to find out how your OS works, everything has, more or less, gone sideways.
Just the Programmer P.O.V.
... like worms viruses and malware...
Back in the 90's when I was in high school, we wrote virus-like malware for fun.
Let's see. If you are not coding device drivers, the Linux core is a pretty pretty stable (in terms of changes) code base. Architectural changes to the core are rare, and are monopolized by the subsystem maintainers. Good luck in Linus accepting your code, when the maintainer NACK it. Maintainers are "politically" linked and lobby together to make them the only ones that can effectively change the critical parts they maintain. If you think that Linux is politically free and meritocracy driven, think again. Linus, with his careless management system, happily allowed this to happen, effectively keeping new potential talent out of project. This worked for him since it achieved his goal of remaining the head of the project for all these years, by being part of the lobby.
People who programmed the 8 bit machines back in the 80's had to understand the hardware, had to push the hardware to the max to get anything serious done. Young people with even the most basic hardware related programming skills are hard to find these days. Since your PC/MAC is so fast and complete, people don't see the urge to start programming it. anymore And of course, hardware has become so damn complex that understanding the functionality of only one chip in your PC is a nightmare already.
Embedded developers ? Please give me a 30+ year old !
Open Source software is often developed based on need. Individuals looking for something to do in an open source project are simply hard pressed to figure out what they should do next in the kernel.
.NET, Java (heaven forbid) or LLVM type architectures. Linux has become so stable now, that "revolutionary new technologies" would turn it into something else entirely. For most guys, working on the "next great thing" means working on something nearly entirely new.
At this point in time, the areas where the kernel can benefit most are simply off limits due to political or religious issues. A stable ABI for driver and module development is a clear example of this.
Additionally, the other tasks are simply too overwhelming for an individual or a small group of part time developers to undertake. A new make system is an example of this. Even if an individual managed to pull this off, the commitment to maintain this type of code is beyond the boundaries of trust of a single relatively unknown individual to make the change permanent. After all, if a new guy pops up and says "here's my new build system for Linux", it would never make it into the main tree since no one knows the coder well enough to know if they can be trusted to own the project over a long term.
There are sometimes places such as the Video4Linux project or Alsa where the projects were developed externally for an extended period before being integrated into the kernel. But, it would be hard to find a new project to do the same with.
I'm sure that somewhere there are some truly talented and creative individuals that are young who will find the next big area for improvement, but these days, the kernel is mostly about bug fixing and adding drivers or file system modules. And drivers are most often being developed by the companies who produce the hardware and file system drivers are either corporate sponsored tasks or hacker experiments. Thanks to projects like Fuse, kernel mode file system drivers are even far less relevant than they once were.. well unless you were intending to make a replacement boot level file system.
Fact is, that developers with the talent required to actually work on the Linux Kernel are drawn to other projects where they aren't simply starting off from day one as a bug fixer. Great programmers who are creative and talented are more likely to find projects where they feel they can make a difference and make something new and exciting.
I might also lean in the direction of believing that the truly talented youth in operating system development might instead be looking towards the future to an operating system which is designed to function in a virtual machine using technologies such as
To conclude, Linux is a great operating system. It has completely taken over the UNIX market and has even taken over many areas of the Windows world. The only other UNIX with such a large following is Mac OS X and that is a truly limited platform in comparison. I'm looking forward to seeing what the next best thing is, after all, wouldn't it be cool to get a new OS kernel that would compile itself for the best performance and functionality possible on the system it is running on? Even better, imagine doing it with a compiler present on the machine. That would be a great "user" OS.
Most of these kids have an attention span of 140 characters, and the mental skills of a 4th grader. Why would you expect any of them to be able to grasp anything even slightly complex?
Linux users who act like assholes.
They see the computing world as two groups.
1. The Linux "elite"
2. Grandmothers
If you dumbasses had acted like decent human beings, maybe answered a question now and then from a noob, you'd be better positioned by now. But you all acted like fucking assholes, dripping with contempt at any who dared question your Path Of Enlightenment, and making a religion out of OSS complete with witch hunts and holy wars.
So let the kernal die a slow death now. Good fucking riddance.
Bigjeff5, you describe the shithole small tech schools I complain about. It's not just one school, but an epidemic across many, many schools like the one you describe going to.
Beta is broken and the link to classic doesn't work. Stop wasting our time or there won't be anybody left here.
for the NON fainted hearted
they go bars, singing around, flirting around
just not sitting around like ducks without mating
young guys need a life
not a line of code
XD
though i m a guy need code but giving up my life
The people are more complex. The code is more complex. We have stuff getting in now that we would have run away from 10 years ago.
This is one obvious reason why it's harder for juniors to step in now compared to ten years ago. I wonder, is this complexity necessary? Isn't some refactoring or redesign in order?
And what happens then?
Especially as the stereotypical kernel hacker is likely to die sooner than the average person.
Seriously. People tend to get put off by being called stupid.
If UI designer tells them to do such and such, and they do not like it, they tell him to GTFO. Knowing this, UI designers often don't even bother.
If the ui guys came to the code monkeys with data about user acceptance and comparative task success rates, instead of "complies with usability principles" and "will make it easier for granny" when their suggested changes indeed do remove features from the code monkeys (who tend to be expert users), they code monkeys might object less.
When you need to take someone's cake away from them, at least have the decency to admit "yes, I'm taking your cake". If you can say "here's the purpose it serves, and here's why it works", you might be greeted with less contempt.
And please make sure your answer to "how do you know what users want?" isn't "because I can tell you what to do!"
It's one word, Integration. Most of our young developers are Xbox users as well. Xbox and Windoze integration make for some mighty tempting code to write. I could be full of it, who knows. I've been on Linux since the Red Hat 6.0 days, but heck, I still use W7 for my real entertainment stuff, it's cheaper than buying a Roku box for DRM issues.
I think one of the biggest problems is that contributing to the Linux kernel is simply unpleasant. So you go off and write some code to do something wonderful? Great, now you're 10% done because the other 90% is spent dealing with the patch process and the bullies who run it. They'll berate you and call you incompetent if you ask too many questions (visible in this thread already), but also berate you if you fail to ask enough questions and accidentally reinvent something that was already hidden in some obscure corner of some other subsystem, then berate you again for changing your code to use that thing because it's in another subsystem. Developer A will berate you for doing things this way, and developer B will will berate you for doing it that way, because A and B hate each others' guts and have neither the social skills nor the professionalism/maturity not to take it out on you. Then *everyone* will get on your case if you say "screw it" and decide to maintain your stuff out-of-tree. I've been a kernel programmer for twenty-plus years, but if I had to start now as a Linux kernel hacker I'd give BSD or any of the newer alternative kernels some pretty serious consideration as a better way to spend my time.
(written anonymously because my company employs many of the worst offenders)
The Linux kernel team is mostly composed of curmudgeons, socially maladjusted nerds, and outright misanthropes. They aren't particularly welcoming to anybody new. I can only imagine this is much worse for anybody who tries to help out who doesn't have years of experience to prop up their self-image. If you even casually browse the LKML, you'll see these "leaders" of the kernel team constantly attacking anybody who tries to contribute to the kernel that's not already a member of their elite club.
I guess I'm getting past the age where anyone would consider me young, but compared to many of the kernel devs I still am. At any rate, I think a lot of folks feel like this stuff is already handled pretty well. Now this may not be true, but it's my perception and I would guess a lot of other folks would feel the same way. When I want to contribute to open source I usually help out on something Java related, as I feel more at home there.
If they want more fresh meat in the Linux kernel circle they're going to have to step up and advertise that there's more room at the party, it's as simple as that. Most of us are intimidated by those guys and don't think they can really use our help, if this is not true, fairness aside, they're the folks who have the greatest ability to change it.
Wrong code is wrong.... *any* bad code is undesirable (for a litany of reasons).
True, but also unavoidable.
Let me put it this way: You will dereference a null pointer at some point. Now, would you rather get a nice stacktrace and an instant failure, or a random segfault, or worse, a security hole?
Similarly, it's very likely you'll have something like a buffer overrun -- and the steps to avoid this are ridiculous -- so would you rather do all that extra tedium, much of it absurdly inefficient, and then if you get it wrong, you've got a security hole? Or would you rather do none of the tedium, and if you somehow get it wrong, you've got a DoS (a crash) at worst?
Don't thank God, thank a doctor!
The first reason it seems to be "the geeky look and feel" of open source world, which stops them to communicate with the community project. See all these mailing lists - if any noob asks some basic question, how he would be treated? we know.... The projection of vi and emacs as the only editors to do all these stuff... rude behaviour of many geeks keep the young programmers away... there is no updated docs on kernel tree... In this scenario, if a young programmer is interested in kernel dev, it is great - he is **really** interested to hard core stuff - may be the geek's world consider all these as entrance test to kernel dev :-) :-)
Second reason could be market value. I have supported a few college projects. IMHO the most students don't want to work in a project which does **not have any job market value** compared to VC++, .Net, Java, Web programming kind of stuff. When I tried to mentor development of a linux based communication framework project to one of the top most university's (in India) students as a project, It happened to me that I had to do complete coding and explaining them the code flow. I made them to understand the project.
Third reason could be development tools. The above mentioned students were very much interested in VB :-) Because the user interface is the one which attracted them towards it.
Though I am not a kernel programmer, occasionally I make my hands dirty... I hacked a modem driver to make my ISP provided modem to work in linux - it was around 10 years before - this was my first kernel look - I didn't get any materials to guide on code... just hours and hours of debugging, at last got it done. That is the reason when it was happened to dig through a network card driver, I just documented it for beginners (like me) like this http://karuppuswamy.com/wordpress/2006/07/31/linux-ethernet-network-device-driver-a-flow-of-code/. This kind of simple overview documents should be enough all modules in kernel will be more helpful for young developers.
bits and bytes of life should serve the needy - My bits and bytes
>This kind of simple overview documents should be enough all modules in kernel will be more helpful for young developers.
Correction: This kind of simple overview documents **for all modules** in kernel will be more helpful for young developers.
Why the Google Chrome Browser 5.0.366.2 dev behaves strange while I am typing in text box? often cursor is absconded :-) :-)
bits and bytes of life should serve the needy - My bits and bytes
When I went to school for CS, there was a mandatory assembly language proramming course.
If colleges still require learning assembly, then there is hope a pool of CS graduates would be able to understand pointers, registers, interrupts, and such?
Uh, Linux geek since 1999.
...it is what you can do with it :)
vi/vim/emacs/eclipse -- It's all good.
Uh, Linux geek since 1999.
While the core parts of the kernel are difficult for a beginner to understand, especially one without the background in computer science, there are some things that you can do with the kernel that pretty much anybody with programming experience (in C) can do. For instance, starting a port to a new ARM device. Anybody who wants to join #htc-linux on freenode I'd be happy to give an early lesson sometime.
FCC acknowledges in the legislative enactment that anyone can transmit and receive on the radio waves if they need "help." That is a very broad reason for non-licentious conduct through any tranceiver, and yet there is the reason why everyone is expected to need a license: everyone has been presumed to be having idle discussion as they always do, and that anticipation is evident on phones. A license gives grace to those people to use HAM radio and the bands for idle discussion. If you have an immediate need of help where you contact someone monitoring, then you don't need a license and you don't need a station callsign derived from such license.
The intent of'course is to keep solicitations and commerce away from radio waves because that would overwhelm the more secure means of conducting business away from the States.
If you don't know what Linux is about, then you are WEABOO about how you missed the boat and are blaming a transparent minute kernel as compared with all the non-Linux software that makes it what it is.
Linux is nothing more than thread, and all the programs are nothing more than fabric. If you have no ability as a system administrator to bring it all together tailored to another's or your needs then you simply are in the wrong business and can't see past the diagrams to tailor it all together.
GNU/Linux doesn't need to be, as all my uses have been pushing the limits of embedded consoles for public uses. There are many non-distributable components that are superior than what you get out of the box for desktops. Consider documented off-standards that optimize for better usage, like something composed through a component from DirectFB with WINE. That wasn't too hard. What else do you want to be optimized with almost no need for administration? With a couple mount-points, that simple sandbox can extend to a full-fledged desktop or development console simply because of the versatility of the filesystem.
Don't let it bother you. I've abandoned Linux before because I didn't know what it was good for, and then when I couldn't do something where I needed I walked back to Linux thankfully. Of'course, I made some donations because after-all Linux is composed by others like you and I that just need something to be done and can trade someone else with functionality into a cost-free pool. Keep the corporations out and we are fine. The more moochers we get into GNU/Linux will assure it's development trend will continue and popularity will rise. BSD's shoot theirselves in the foot is why they don't catch-on.
Have you ever tried to submit a patch to the LKML?
33% chance that you get ignored
33% chance that 'your code sucks'
33% chance that your patch gets rejected for a 'political' reason
Shouldn't the kernel community think of a much 'relaxed' and informal contribution and development model?
Several 'young' developers simply do not 'dare' to send their contributions to mainline: it takes too long and too much pain ...
Many of them just want to work on Flash and .NET. Sad.
Want to get a job? You go where the jobs are: That's Microsoft! After all - 90% of better of the world's personal computers & servers can't be too far wrong (since they use MS' Windows NT-based OS' mostly) + especially on the most utilized hardware platform in servers &/or personal computing there is, in x86...
Thus, it appears that most future-minded young people also doubtless tend to think along those lines also apparently, per this article's topical material.
(Still - It doesn't HURT to learn some *NIX via Linux (or BSD's etc./et al) but, you concentrate the majority of your efforts where your livelyhood's most likely to be served more, & currently (as well as for the past 30 yrs. now, has been on Windows)).
They simply want to gain profit with their work and get instant famous because they ride with what's the latest. I still go for Linux because it has the fundamentals and is the foundation to the basics of OS. I'm sure if Windows did not exist, it will be up and still well-known to the public. Besides, we can do everything we want! That's enough by me.
http://techykikay.blogspot.com