2012-07-15

Why People Distro Hop and How to Stop It.



Disclaimer: 


I'm not a "Human Interaction Specialist" nor am I a "Psycho-analyst".  I did not use the Scientific Method to draw my conclusions, rather, I used my extensive experience on the subject.  I also don't claim that this is "fact" and that "everyone else is wrong", my conclusions are my opinions based on what I see as logic coupled together with experience.  Nothing more.


The Behavior:


We've all (in the Linux community) seen this before.  A relatively new user to Linux comes along, they've been using a(n) *buntu derivative for a month or three and at the urging of their slightly more savvy and infinitely more zealous compatriots, they make the switch to a "bare bones" distribution like Gentoo, Funtoo, Arch, Slackware, etc.  If this fictional user has been given even a modicum of direction, they have read the wiki articles for these distros, studied the "Beginner's Guide" and/or have the beginner's guide open and are going step by step through the installation process.

A few weeks go by, this bare bones distro has already been installed, our new user has some of their favorite programs setup and in-use, they're feeling mighty productive and happy.  Then, the worst thing on the planet happens, their GUI craps out on them for some "completely unexpected reason" and they are thrown into this mysterious "black hole" that has a weird heading with "TTY1", the date, , , Login:, and a blinking cursor.  Something ain't right here Jim!  However, our fictional user composes themselves and enters their login information.  That's when the reality sets in; they are met with a command prompt and nothing else.  Life has just thrown them a lemon and they have no idea how to make lemonade in this space.  Tears fall, sobs rise to the technological heavens, the great software engineers of yore look down in shame, and our user is left in the fetal position in the corner of a round room; their sanity seeping away.  Death looms closely in the air.

But wait! A ray of hope! Our user calls up one of their "guru" (I hate the improper use of that word!) friends who's got more zealotry than savvy and asks for help.  Surely my friend is zealous because he knows how to fix problems like these! Enter the zealous friend without a clue: "You what? Yeah, that's a CLI, you b0rk3d your OS n00b LOL!"  Our fictional user has lost hope, but not enough to go back to Windows or OS X.  They remember that they used to use a *buntu derivative so they hop on another computer to go online and look up "Ubuntu-like distros".  They come up with Mint, Peppermint, Zorin OS, etc.  All good distros, all try to make life easier for the user, and all are Linux! (We'll return to this last item in a few minutes.)

Our fictional user downloads an ISO, say Peppermint (excellent distro by the way), installs it to their system, is happy with the simple installer, loves the GUI package management, and is happy.  Until a few weeks later when something breaks and back to the TTY they go.  At this point, just start from the top and read down to here again, it pretty much goes like that for quite some time.


The Problem:


Ignorance.  Don't get all offended on me.  Hear me out, if we look at the definition of the word Ignorance, we find something:

(Taken from Merriam-Webster.com)


ig·no·rance noun \ˈig-n(ə-)rən(t)s\

Definition of IGNORANCE

: the state or fact of being ignorant : lack of knowledge, education, or awareness

Pay special attention to the last part: "lack of knowledge, education, or awareness".  Now, ask yourself these questions: "When was Stephen Hawking born?", "What is the exact algorithm that Google uses for its search?", "What type of language is LISP?".  If you said "I don't know" or you looked up these questions on Wikipedia, then you are ignorant of that particular item.  You do not have knowledge in that area, you are not educated in that area, or you lack awareness in that area.  It's not offensive, it's fact.

"But Brian! What is our fictional user ignorant of?"

I'm getting to that and then some.  The problem isn't so much the fictional user (though they have a part to play), the bigger problem is their "more zealous than savvy" friends.  The ones who call themselves "gurus" (improperly).  That's right, if you're die-hard Linux and are pushing your distro onto your buddies, I'm talking to you.  I know why you did it, you were afraid! Who wouldn't be?  Seriously though, I'm guilty of having done this as well.  You reach a point in your Linux use where you're pretty decent at the CLI, you've managed to sample various X environments (Desktop Environments and Window Managers), and possibly even creating a binary package for your particular distro.  You even know how to build a package from source! But, you're still very much lacking in the more "nitty gritty" things in the OS.  You're still copying and pasting scripts that you found on some obscure forum that you think is cool, you've graduated to using Tiling and/or Dynamic Window Managers like Awesome, you've even written a tutorial on how to best copy and paste someone else's config into your own config.  You're an "average" user but because you're surrounded by Windows users, you fancy yourself a god.  It happens, don't worry about it, just learn to recognize it and reign yourself in a bit.

It's okay to not know everything.  The trick is to know where to go to get your answers so that you aren't stuck in "I don't know" land.


The Solution:


There is a realization that comes to every new Linux user, usually after about ten distro hops (sometimes 1000 hops...); It's all Linux.

Think about that for a minute: It's all Linux.

That means that, underneath the GUI, underneath the userspace apps, and underneath the system utilities, there's a kernel.  That kernel is Linux (no, I will not get into the GNU/Linux vs Linux debate here! That's for another time :)  ).  Linux (the kernel) is in every (Linux) distro on the open source market right now.  Ubuntu uses the Linux Kernel, Fedora / Red Hat, Novelle, Gentoo, Arch, Debian, etc.  All of them have the Linux Kernel.  All of them have GNU Coreutils.  At the heart of every distro are these two pieces, Kernel and Coreutils.  Everything else that makes your distro a "distro" is (for the most part, I'm looking at you *buntus!) Userspace.  To oversimplify it, Userspace is the space in which the regular user (not root) operates.  GUI, Apps, your browser, games, office programs, etc.  All of these are executed with user permissions by a user who operates in a space meant specifically for that user.  That's userspace in a nutshell.

Note: To those who would quickly like to correct me, read what I said again, "To oversimplify it..."  The day that I want to spend a good ten pages going through more than a super-high-level-overview of "Userspace", we'll be in touch. Until then, the layman will appreciate this explanation.

Once you realize that all distros are basically the same, just configured differently, you begin to realize that you can take a "base distro" and turn it into any of the distributions that you see on the market today, often-times with a not-very-complex script!  What does this mean for you? It means that you don't have to say "Oh, I don't know how to use Gentoo because I've only ever used Fedora."  Sure you know how to use Gentoo! It's got a BASH shell (ZSH for those of us who like a few extra features), it has a package manager, etc.  All you'd need is about ten minutes alone with Portage and the Gentoo Help documentation on Portage in order to understand the basic system, what's already in stalled, with what flags, and what you would have to do to install your preferred packages.  It's not hard.  Hell, here's some anecdotal proof: Take an issue that you've been having on your *buntu derivative and don't go to the Ubuntu forums, instead, go to the Arch Linux Wiki.  Aside from the package manager specific stuff, you can apply those processes and concepts to your distro and any other distro.  Now, take your Arch based distro and go to the Ubuntu forums, notice anything? Yeah, those steps, aside from the package manager specific ones, will work in Arch! I wonder why that is? Oh! Right! They're all Linux! Victory is mine!


The Challenge:


Don't hop distros for at least one month.  In that one month, every time you have a problem with your current distro, I want you to go to at least three other distro's wiki sites/pages and/or forums.  Now, don't go posting on Ubuntu forums with an "Arch problem", that would be bad and would take away from the care being provided to Ubuntu users.  Instead, realize that your problem is not new and you aren't a special snowflake.  Linux has been around since the 90's, I can assure you that almost every problem that has ever been had on a Linux system has already been posted online somewhere and the solution available publicly.  Back to the challenge.  The three other forums/wikis for three different distros (for you *buntu people, that doesn't mean that if you're using Xubuntu that you go to Kubuntu wiki/forums, that means you pick something like Gentoo, Arch, Slackware, etc.  Debian would be cheating too!)  Read through the issue description and the solutions, you will find that the solutions are strikingly similar despite being on completely different distributions.

Once you realize all of this, you'll choose a distro based on it's merits, not FUD.  You'll also be much happier as you'll be able to tackle any problem using any distribution's documentation.  One month, no hopping.  Can you do it?

2012-07-08

Microsoft makes me glad...


...that I don't work for them!


This "little" rant is in response to this particular article published on Vanity Fair's website and shared on Google+:




At the company that I work for, developers are treated like royalty.  We are "graded" by our peers.  This group of "peers" are fellow developers.  I'm not graded by a marketing manager, sales manager, or even my direct boss, the COO of the company.  I'm graded by the people that I work with on a daily basis.  Everyone gets to contribute ideas, no matter how "new" to the company they are and no matter which school they got their degree from (if applicable).  All ideas are put up on the board and put up to a peer review and used or discarded based on its own merit.

The culture of the development environment at my company is very much conducive to innovative thinking, learning, and practical application of ideas.  Everybody has their own individual goals that they set for themselves, and everybody has a set of goals that are recommended by the group.  We all try to make each other better at what we do so that all of our lives are made easier, more productive, more rewarding, and ultimately, more profitable for our company.

Stacked Ranking is BS, especially in the "wrong hands".  Ranking developers (or anyone for that matter) based on the input of people who have no idea what the hell you are doing (show me a sales agent that can write code, and I'll show you a closet geek; basically, the exception to the rule) is just plain stupid.

I colleague of mine said something like this when describing the reasons for the management style that the COO of our company takes with the development team: "She asked me how to quantify or grade what a software developer or engineer does with regard to work.  I told her that's very difficult because I would have to know what her definition of 'work' was.  Do you count the time that I'm sitting with my lunch quietly, not moving, but mulling over how best to implement a client feature request?  Do you count the amount of research that may go into finding the root cause for a bug rather than just 'getting rid of the error message' since the user doesn't know the difference? Should I also count the time I take to document any code that I write in case someone else has to go through it later for use in a new or updated feature? Do you also count work as being when I'm at home thinking about a problem at work and then using the VPN to commit code because an idea just 'clicked' in my head that solves that problem?  I'm sure that it could be done, but it's very difficult.  She basically trusts us to do what needs to be done, to help and provide feedback to each other, and give us enough rope to hang ourselves with.  So far, she hasn't had to step in to modify our processes or really do much other than ask if we need anything to make our lives easier at work."

I'm not saying that this is the only way to drive innovative thought in a development team, but in our team, it works very well.  We have a lot of autonomy and our "checks and balances" system is each other.  It also keeps things moving at a pretty fast pace.

I've said this before, much to the astonishment of my fellow Linux zealots, but it bears repeating, I don't want Microsoft to fail this way.  I don't want Linux and OS X to rise to higher percentages of desktop market-share this way.  I want Linux and OS X (but especially Linux) to rise in popularity and market-share based on their own merit.  I want Microsoft to fail, not because it was late to the party and fails at managing its various teams, but because the other products out on the market are just that good.  I'd rather they failed because they ran out of ideas and just couldn't recover than to focus on litigation so much that they forgot to have ideas in the first place.

"But Brian! That blasphemy in the Linux and Open Source world!"

Yeah, that's right.  I want competition in the markets.  I want ideas to stand on merit and I want companies fighting for every consumer dollar in an innovation race as opposed to a patent litigation race.  If wanting my preferred platform to rise to that occasion and be the best because it has the best features, functionality, and interfaces as opposed to defaulting to the top because the previous company just happened to run itself into the ground is "blasphemous", then just send me to that particular hell now.  I'd rather go down having high standards than to accept a prize based on a "default" in the competition.