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.
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!
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.
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.
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.
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.
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.
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.
How did anyone make Linux in the first place if they didn't learn about it in school? You know what, I'm not even sure why I bothered replying to this...
"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.
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.
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.
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].
Anyone notice Linux share the same syntax of UNIX?
Yup.
Do you know how old UNIX is?
Yup. Developed in 1969; making it 41 years old. Linux was developed in 1991.. Linux today is a far cry from Linux back then.
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.
I don't know if you are referring to using a Linux distro or programming on the Linux kernel.
I use Gentoo Linux every day. I use the tools provided in portage daily to do the computer-y things I like to do. I use XFCE for my desktop environment, Firefox (mostly) for web browsing, various text editors, etc. etc... but my favorite tool is the command line. I can do so many more things in a lot less time at the command line than with a GUI - even web browsing (love links).
I was born in 1988; 21 years of age. I've been using Linux since 2001 or so.
My fiancee also uses Gentoo Linux, as I got fed up with supporting WinXP and all the junk that accumulated on it. She's been using it fine for the past few years, running a very similar setup to mine. We are the same age.
I don't do any kernel programming, however I do various application- and web-level programming. Never anything past user-space... and that is simply because that is where my interests lay... I've always been more into building programs that do stuff for me, rather than kernel programming / hardware interfacing (at the kernel level).
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...
So if it isn't taught in school, it's unlearnable? Wow!
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.
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.
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
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.
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.
And how many young developers does HURD attract?
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.
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.
I don't buy this.
I heard the same thing from older folks when I was growing up and yet, my generation managed to produce the likes of Bill Gates, Steve Jobs, Larry Ellison and many of today's biggest ego-maniacal douche-bags.
I think it's quite natural for young people to not find their way until they are in their mid to late twenties.
Often it takes holding their first born child in their arms to shock them into the reality that life is hard and they better get on the stick or their kids won't have the luxury of -
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.
Sometimes the light at the end of the tunnel is the headlight of an oncoming train.
I can do so many more things in a lot less time at the command line than with a GUI - even web browsing (love links).
1) You can do a tiny subset of the things you can with a GUI in less time
2) But the things the GUI can do that the CLI can't, you can't do at all
3) And the things you can do on the CLI faster, you can still do in the GUI pretty damned fast (assuming you're adept at using one)
When people say "oh the CLI is great, it's all I need", that's a good way to tell that that person doesn't compose music, edit photos, layout pages, edit video, etc etc etc. If all you do with your life is copy and rename text files, then sure: use the CLI. But that's a pretty sad life.
Comment of the year
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.
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.