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.
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.
Or perhaps that there are opportunities - the Android and iTunes app stores - that weren't available ten or fifteen years ago.
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.
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.
as corporate acceptance and utilization of OSS for application development grows
I wish I worked for one of those.. FOSS has pretty much been declared the enemy where I work.. with a company wide initiative to destroy anything FOSS without even bothering to consider it might be ok to use. The rational being that even if we are 99% sure we are good to use it.. it's not worth it due to the risk...
This suing big companies over GPL violations sounded awesome on the outside.. but I think has done a lot of damage to acceptance of FOSS at large companies. Smaller companies can still roll the dice.. but if you're a big juicy enterprise with lots of money to lose.. just not worth it.
Well what are you waiting for? Grab the Linux kernel source and get crackin' sonny.
> Oh wait, that's HAM radio.
It's ham radio. Ham is not an acronym.
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.
"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.
Probably not. Of all of the open source kernels available, Linux is the one that I'd be least interested in working on. For interesting features and clean design, I'd look at FreeBSD. For code quality, I'd look at OpenBSD. For interesting research type things I'd look at something like Coyotos or HURD (which does exist, is doing cool stuff, can run most POSIXy code, but isn't a mainstream OS), or something more esoteric like SqueakNOS. For something with a beautiful design that's relevant to modern platforms, I'd look at Symbian (nice kernel, shame about the userland).
Linux? It's become the antithesis of the UNIX idea of doing one thing and doing it well. For any given problem, Linux is probably okay. It's probably not the best solution, but it will do, and it has the advantage that it's a workable-but-not-ideal solution everywhere you want to use it. But exciting to work on? Absolutely not. The code is good in places, but horrible in others. There's no overall coherent design, bits are tacked on, different architectures implement the same thing in different ways without bothering with any kind of platform-independent abstractions.
I am TheRaven on Soylent News
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.
Most software development on Linux is driven by developers - they are the guys in charge. If UI designer tells them to do such and such, and they do not like it (excuses vary; e.g. "this is dumbing down to idiot level", or "this is not elegant"), they tell him to GTFO. Knowing this, UI designers often don't even bother.
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.
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].
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...
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.
You know, I can hate Linux with the best of them, but.. I know that in Ubuntu, when you are in Firefox, and the first time you browse to a Flash site, it goes, "hey, want to install flash?", and it installs Flash once you click yes.
I'm failing to see the difficulty of that.
- oZ
// i am 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.
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.
...the thing that I have found increasingly unattractive about FOSS in general is that it all too often becomes an exercise in cliquishness and faddishness to the exclusion of actually serving users...
(emphasis mine)
You've just hit the nail on the head - FOSS comes from a Unix culture, and Unix has never been concerned about the end user. In the Unix world, the System Administrator is the end user, so the entire thing is geared toward making things easier from an administrative point of view. This is why everything is command line based, everything is kept in plain-text config files, etc. Linux obviously inherited this from Unix, and FOSS has inherited this from Linux. Only the rare project like OO.org and others that are plainly and obviously intended for people who are not going to be willing or able to modify the software have any kind of focus on serving the user.
Case in point, look at GUIs in Linux. KDE gives you a billion options, GNOME gives you three. For heaven's sake, is there no middle ground? And neither one of them look as nice as OSX or Windows, though they do now seem to be competing with a version of Windows that is almost a decade old.
Seriously, this is why only nerds and masochists use Linux. For anybody who doesn't feel like spending all of their time tweaking the operating system, they just use Windows or OSX. There is nothing Linux can do that either of those can't, am I supposed to torture myself just to save 50 bucks on the price of a computer? Get real.
That turned into a bit of an anti-Linux rant, but it all comes down to the fact that people are going to develop for the systems they use. If more people want to use Windows, more people are going to develop for Windows. Add to that a barrier to entry of 4 million lines of code, and it's no wonder new developers are shunning the Linux kernel.
Security is mostly a superstition... Avoiding danger is no safer in the long run than outright exposure. - Helen Keller
Your code just went tits up. Where is it broken? Oh its in that cut&pasted blob that you do not know how it works.
I have worked with people who do just that. They keep c&p'ing code until it works. MASSIVE mess that has tons of side effects. You become afraid to change anything as you have no way to properly test it. Fix one bug 3 come crawling out of the woodwork because that 1 bug was there on purpose because it made the other 3 not happen. Yet you do not know that as the guy who did it left 3 years ago.
THAT is what is wrong with cut and pasting code. You end up with code that you have no idea how it works. That is fine for a prototype. But put it into production and you will hate every second of it someday. I assure you this. Code reuse becomes nill and you end up with bugs cut and pasted 20 times in your code.
Cut and paste is your friend and enemy use him with care.
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.
It's delusional because these anecdotes are about as useful as hearing that someone won the lottery, and an entire generation of students being taught that they should make themselves into professional lottery players.
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