Open FOSS Training


Over the years, I’ve ranted and complained about the state of FOSS documentation and the barrier to entry for the casual user. With mixed success, I’ve championed various efforts to provide FOSS training and documentation. Recently, I was contacted by a friend of mine who has put together a team of individuals dedicated to providing accessible, easy to digest online videos.

The the production of these videos is being funded by an Indiegogo campaign. They’ve had some great contributions thus far, but they still need your help. If you’re interested in seeing an improvement to FOSS documentation and also the production of quality of FOSS training videos, I’d suggest giving what you can to their campaign.

Have you ever wanted to get started with Free and Open Source Software but couldn’t find clear easy to follow documentation to get you started? The end goal of the project is to create easy to follow videos and documentation that will be freely available to the community to help get you started with Free and Open Source Software. “

(Learn more at Open FOSS Training)

The Bigger Linux Metaphor

Who was it that said that Linux was like lumber? Was that Doc Searls? I don’t think it was Mad Dog. Well, I don’t see how the metaphor fits. Linux is not lumber, it’s a tool based on a legacy of programming. But none of the tools we use now (and I’m being really general) were not here when System V was new. We had to use our tool to make more tools.

What do you call that? No… Not a multi-tool. No, you call that a workshop. Linux is my workshop with my tools. Perl is my lathe for text, tcpdump is my oscilloscope for packets, and C is my blowtorch for welding libraries into new tools (I don’t actually like C).

Linux is a tool for craftswomen1: a workshop for data and logic carpentry. A machine shop for grinding out the programs that are the gears and sprockets for business. The lumber? You feed lumber into the machine. Our lumber is time. No time? No gizmo. Short a project on time? You get a wooden mallet for your business.

[1] $craftswomen = m/\bcrafts(m[ae]n|wom[ea]n)\b/ig;

Now, that is a rich metaphor for Linux! One that conveys the best scenario for teaching people the nature of computers, too. The word workshop causes you to bypass thinking about the beige box on your desk and immediately skips your thinking to the tasks and tools you do with one instead. It emphasizes the multitude of skills and techniques needed for data and networking.

Hasn’t this all been solved, though? Can’t you get everything already on your iPhone or your Windows desktop? Sure, if you like hitting your problems with wooden mallets. (Ever try to run your enterprise web application on top of Microsoft Access? Yeah.)

Luckily, not all problems have been solved! This means jobs. This means hope. Don’t your kids use Linux yet? What are you waiting for? Teach your daughters2 Linux.

2] $daughters = m/(daughter|son|cousin|niece|nephew|grandchild|stranger|friend|lover)s?/ig;

Making the switch from Windows to Linux

Switching to Linux

I have been helping folks break away from Windows and switch to either Linux Mint or Ubuntu for a while now and I’m going to share part of an email I got this morning with you. It really exemplifies the reaction I get when people start using a Linux distro for the first time. You just have to get them in front of it and let them experience it for themselves. This fellow’s name is Brandon and he writes:

“I have come a long way since my first and even the last email I sent you. Linux Mint Cinnamon is looking great and thank you for emphasizing its value. I guess I had just never heard of it. I am also considering abandoning my support of Windows. Meaning I will let it live on a spare laptop in the mess that it’s in but from this point forward the mental weight of optimizing it and carrying it along in a reliable form seems like it is not worth it anymore. I will use that large amount of energy and focus towards proactively advancing skill with Linux, enough so that I can depend on it entirely. So rather than multi-boot it looks like I am going to throw in a blank SSD and put Mint 17.2 on it. Many of the configurations I saw you do in your Mint videos cover the points I am looking for. I am confident the other usability tweaks I am seeking in time will fall into place.”

I couldn’t have put it better myself, Brandon. That is exactly how one should proceed if they intend to learn Linux.

Let go of the old and embrace the new!

I have found that it is so much easier to teach kids how to use Linux than it is a long time Windows user. Because kids come to Linux with no preconceived notions and they ‘get it’ very quickly. On the other hand, someone who grew up computing the Windows way can get very frustrated. It’s because they have to ‘unlearn’ all of the little workarounds you must implement in order to keep a Windows install running. Linux is actually a much simpler system, but it can seem unintuitive and difficult to use if you approach it with the mindset that it should be as convoluted as most MS products are. Many very experienced Windows technicians will totally screw up a Linux install just because they tend to over-think it.

Another mistake that Windows users who come to Linux make is that they try and replace applications. They say, “I need something like Blah-blah 5.0 that I use on Windows for Linux.” It generally doesn’t work that way… Linux is NOT Windows and therefore, cannot be expected to work exactly the same way. This way of thinking will only bring you frustration and pain. They expend a great deal of energy trying to make a square peg fit into a round hole.

Linux users build websites, edit video, compose music, create presentations, write documents and pretty much do exactly the same things Windows users do, just not exactly the same way. If you want to do those things in Linux, find out how other users are getting those things done and then choose applications that will get the job done for you. Yeah, you’re gonna have to learn a new way of doing things but if the result is the same and you’re not tied down to Windows then it’s worth the effort. I found that once I let go of Windows completely I still got everything done I was doing before but now in a better and simpler way. Many Linux applications are cross-platform which means they’ll run on your current Windows install. For instance, LibreOffice is pretty much the default office application for Linux these days. You could install it on Windows and get to know it before you install Linux and then you’ll already be familiar with it.

It takes time and research to figure this all out. Join the Mint community. Read the Ubuntu Wiki. There are lots of people out there trying to do just what you’re doing and this is where you find out how they get it done.

You have to install Linux to get the best from it, really.

It is also important to give Linux an environment that will give you the best results. I have actually talked to many folks who have Linux on a USB stick with a persistence file and they complain that it doesn’t work well for them. The “Live” environment was developed as a way to make installation more friendly and give folks a chance to look around the system a bit before taking the plunge. It is NOT intended as a production environment.

I’m not a big fan of dual booting, especially for a new user. While it offers improved performance over a USB stick install, it is dangerous because it is possible to lose both Windows and Linux in the process. Setting up dual boot, removing either Windows or Linux and transitioning the computer back to a single OS is difficult, to say the least. Dual booting is best if you’re doing it on a machine where you don’t care much about the Windows install to begin with.

The best way to get started with Linux is to find a computer to install it on all by itself. Keep your current Windows system while you learn Linux and move gradually from one platform to another. When you finally get to a place where you’ve accomplishing everything in Linux, then you can finally get rid of Windows. Used hardware is cheap and plentiful these days and Linux happily runs on just about anything but you’ll find that you have the best luck with laptops and desktops that have Intel processors and video cards. It’s not that AMD won’t work, it’s just that the Intel folks work very closely with Linux kernel developers and many drivers for Intel chipsets are already integrated into the later Linux kernels.

Lastly, it’s important to keep in mind that this process will take time. If you consider yourself a Windows power user now, I’m sure it took you quite a while to get there. Well, the same will be true with Linux. A great deal of what you already know will simply not apply and there is much new to learn. It can be a very satisfying adventure if you approach it with the right attitude and a bit of patience

Have fun!

Why Open Source Software?

Fox Character Shruggin at the Reader

Hi, my name is Albert Westra. Back when I was around 12 years old, my best friend introduced me to the operating system we all know and love (and grieve for) Mandrake. Back then, I wasn’t really all that interested in open source software. Heck, all I really cared about Mandrake was the fact that I could change the wallpaper on every single virtual desktop, plus mess around with how my desktop looked and felt. Additionally, I was completely overwhelmed by the amount of disks that were required to install it.

A few months later I ended up erasing my parents IBM tower by accident, and that mistake began my curiosity with computers. It wasn’t until I was 15 that I built my first computer, and became interested in computer graphics. It was during this period of time that I was introduced to the wonderful world of Adobe software, specifically Photoshop. I was very intrigued by what I could do with it, but I wasn’t really willing to pony up the money for it after the trial period was up.Then my best-friend showed me Ubuntu 6.10 which had a piece of software pre-installed known as (the) GIMP.

Over the next three to four years I bounced between Gimp/Ubuntu and Photoshop/Windows, mainly because each title had something the other couldn’t do. Fast forward to today, you wouldn’t see me using Windows or Photoshop even if my life depended on it. Especially on Windows 10.

So why go open source? Some chose it because they value their privacy above all else. Especially after the public revelations of a certain NSA whistleblower, and a recent website hack conundrum that has left many a men disappointed, and couch ridden. For others, it is and ever will be a matter of principle. Software to them is a form of free speech which should remain in the open and stay in the open. For me and probably a lot of others switching to open source, the big initial reason was ultimately the cost.

Granted, just because a project is open source and free to download, doesn’t mean it’s free as in beer. It still requires developers to write the code, and when it comes to graphically focused projects, a lot of math. A “shit ton” of math. Enough math to make someone have a hangover from all the math they did the night before. Like the hangover you’d get if you had a few too many and woke up the next morning newly married to a member of a biker gang. And yet… these writers of code make it freely available on the inter-webs for people like you and I to use to our heart’s content. While my initial reasons for using open source software was because I had a big gaping hole in my wallet, it doesn’t mean I don’t own them anything. In fact, I owe these developers a great deal. If it wasn’t for them, I probably would have given up on drawing and pursued something else. I do give back when I can, but it will never amount to what I truly owe them.

Now my next reason for using open source software does kinda flow with the first one, but it’s a little more of an incentive reason. I may not be give as much as I wish I could to projects, however I’m able to focus where that money goes into a particular project. Take the Krita project for example. So far they have launched two Kickstarter campaigns and both have successfully been funded.  What made their Kickstarter work was not only the swag (though we do like swag), but that those who contributed money got to choose the direction the development would go. Granted that list was predetermined before the Kickstarter campaign began, but it was features that had already been requested by the community of Krita. Ten years ago, it was pretty hard to fund the projects you wanted to help, but today you are only 2 to 5 clicks from sending money anywhere in the world. It can also be said that you could use the same money you would have spent on proprietary software to learn a bit of code and fix a bug or add a new feature to the software of your choice. So while most open source software does not cost anything upfront, it does give you  the opportunity to give back financially or even with your personal time.

The biggest reason why I “go open source” and use it daily is ultimately the community. Call me a sucker, but there are some really amazing people in the open source community, and it’s not just the Developers. It’s the writers, artists, engineers, scientists, and others who use the software on a daily basis. If it wasn’t for open source software, we probably wouldn’t be as technologically advanced and knowledgeable as we are now. In fact, the majority of the Internet we use as a communication tool, runs on one of the biggest code collaborations in the world. This collaboration is know as the Linux Kernel. Obviously if it wasn’t for this particular community, we probably wouldn’t be having this conversation right now. Another example of this is the MyPaint community which I’m a part of. I not only enjoy reading about what is going on in the code, but I also enjoy talking to some of the people in the community about it. Plus every once in a while I get to submit a bug fix. Quite simply, I like the interaction.

Is the open source community perfect? I would like it to be perfect, but it is far from it. Just imagine, the person who is the overseer of the Linux Kernel is not a benevolent angel. He can be or is for the lack of a better word a dick. Especially if you yourself have experienced his wrath or been associated with a company that he has flipped off. Now, I’m far from perfect and have made a few mistakes which have affected those around me. But despite our individual challenges and the behavior of a few, this chaos of people from around the world manages to get along and create amazing projects. So all-in-all, it is a beautiful mess. My reasons for going Open Source are probably different than your reasons, and that’s okay. We are people who can not only think as a group, but are individuals as well and we will have different opinions on any subject. One thing is for sure, when we get together and collaborate, we can achieve great things, even if it’s just on the software level.

We have great open source software that can rival its proprietary counterparts, however, don’t forget about the people behind the scenes. One of my main goals here on Freedom Penguin, besides software reviews and technical tutorials, is that I want to interview the people behind the code. Though not just the developers, but also its community. If any of you readers out there have someone that you want interviewed, be sure to contact one of us here at Freedom Penguin. Most of my articles will be focused towards the artist community, because it’s what I love to do. However don’t be afraid to ask me any questions. If I don’t know the answer, we’ll figure it out together. I’m honored to be part of the community Matt has assembled and I hope you will not only read, but enjoy our content.

What do you do with bugs?

Software bugs are an everyday fact of life, and the sad truth is we’re never going to be free of them. What causes them, and what we can do when we encounter them is what we’ll explore here.

Anyone who develops software starts on their own computer. They have a specific make and model of machine, with all the hardware that manufacturer decided to incorporate in building it. The programmer is using whatever disto they prefer, with that distro’s choices of lower level software (kernel, modules, libraries), and that distro’s spin on their desktop environment of choice. The programmer is also using the support libraries for whatever environment they’re programming for (GTK+, KDE, etc.). When they’re at a certain point where everything they’re trying to accomplish with their application works, it’s usually pushed out for some process of review, where they hope to catch any glaring bugs and fix them before release.

Think about all the variables involved in that process. Start with the programmer’s computer. How many different makes and models of computers are there? All computer manufacturers have one thing in common, they’re trying to make money while at the same time keeping costs low. They mix and match pieces, change hardware configurations, use differing makes and models of peripherals, not to mention core components like the motherboard, chips, bus types, etc. The sheer number of possible hardware variations is staggering.

Next think about the programmer’s distro of choice to work in. Every distro does something different with their core components to try and stand out, be what they feel is better than the others. They can and do change how they compile their kernels, modules, libraries, as well as how they interact with each other. Source code versions can be different, compile time flags are changed, init systems, what’s started, how and when, can all be modified. Another mind-numbing amount of variations is possible.

Then there’s the toolkit the programmer is using. Most will work with whatever is current and supported by the environment they’re targeting, and make any support libraries their application needs “requirements” for packaging. Unfortunately, it’s the distro we choose to use that has to compile and package those requirements, and they might do something different from what the programmer desired or used themselves.

The plain fact is, there are so many variables involved in computers and computer software, a programmer or team of developers can’t possibly foresee or account for them all. The very best developers can’t program for, nor anticipate, all the possible environmental and hardware variations their software is going to encounter in the wild. Many larger projects have Q&A teams or similar, where they try to “torture test” software to find and fix bugs before it’s released. While it certainly helps a lot – much is caught and fixed in the testing – it’s still impossible to account for every variation. We as users are going to find bugs sooner or later.

So before you go on a tirade in social media or other public venue about “buggy crap” software (you can insert your own vile and demeaning adjectives here), think about what the developers are up against. Think about what you are doing. In the FOSS ecosystem you’re railing against people who gave their time to create something good and useful, then gave it freely to the world. Often at some personal and/or economic costs to themselves. In essence, you’re dragging over the coals someone who is trying to help you!

Consider this: Apple controls both hardware and software creation on their platform. They build the hardware, so they know exactly what is in it. They create the software to work with that hardware. They control the toolkits, libraries, kernel, modules, init, everything. They have an extensive and thorough Q&A that all software has to pass. And they STILL have bugs!

As I said when I started, bugs are a computing fact of life. There will always be bugs, the sheer number of variables in modern computing makes that inevitable. However, we in the FOSS world have an advantage. We can do something about the bugs we encounter. We can be proactive, and we don’t need to be a programmer to do it. Almost all software projects have bug trackers, systems where users can report bugs and help find a solution for them. Those that don’t will at least have an email address or IRC channel, some form of contacting the developers. All that’s required is a little patience and a willingness to spend some time helping find a solution. Time and patience, these two things are vital to squashing bugs. If we take a few minutes to just browse through a bug tracking system, we’d see hundreds (if not more) cases of someone reporting a bug with little to no information useful to the developers, and never following up. Or worse, ranting about a bug without even trying to be helpful in squashing it.

The only way a developer can kill a bug is if they understand exactly what’s causing it. The only route to understanding is if the user supplies all the information necessary, and follows up with whatever further tests or information the developer needs. It requires time and patience. It also helps to have a positive attitude and be polite. In the course of trying to kill the bug, the developer may ask you to do or try something you don’t understand. If and when that happens, tell them you don’t understand and ask for guidance. Remember, you’re both asking for help with a problem. They need your help to fix the problem, so don’t be shy in asking for their help in return. Most importantly, stick with it. There IS a solution, it just might take some time to find it. Chances are it’s working properly on their system, so they need to diagnose what is different between your system and theirs, and then figure out what to do about it.

Not all users can be bug chasers. Many of us just don’t have the time or patience for it. That’s okay, because we can still be helpful. How? By NOT trashing the software or developers because we have a bug. Put yourself in the developer’s shoes. You’re trying to create something useful and giving it freely to the world, and someone is publicly flaying you for it? How would you feel? Don’t be a troll. If you don’t have the time or patience to help with a bug, that’s fine. But don’t be a troll instead.

For those of us who do have the time and patience, chip in! It’s the beauty of FOSS, even those of us who aren’t programmers can still be actively involved in software development. Report the bug. If it’s already been reported, add your information. Most bug trackers have a guide for how to submit information, follow it and include yours, don’t just add a “Yeah, I have that bug too.” The more information the developers have on how a bug is affecting users, the more likely they are to find a solution. Then take the time to follow up on it to its resolution. By staying actively involved until it’s fixed, you’ll be able to honestly say “Yep, I helped in the development of that.” You’ll have changed from a being a “user” to being a “contributor”. Then the real reward happens, you get to soak up the feel-good that comes along with the knowledge you’ve helped on something the whole world can use.


Introducing Jed Reynolds

I’m honored that Matt Hartley asked me to contribute to Freedom Penguin. In upcoming articles, I’ll be sharing some stories about things I’ve learned during my journey as a professional programmer analyst. I program in multiple languages like Java, Perl, bash, and also write end user documentation in PHP and do my own CSS.

I fix my own computers, and pride myself in being mechanically competent. I also fix my own bikes. (But don’t fix people.) For example, back in college around 1994, one of my friends who was getting a job asked me advice about getting a car. She probably asked the wrong person: I said  that all the cars I’ve owned, or been around, all needed work. Water pumps, starter motors, plug  changes and so forth. She was quite anxious after I went quiet on the topic. She asked, “I can’t  spend all my time fixing cars, I need to get to work. Will anything just get me to work?” I then told her, “Well, a Toyota will. They won’t break a lot.”

(Surprisingly, the Toyota’s I have owned have done pretty well by me. I own a 2000 Sienna that keeps on ticking. Real guzzler by modern van standards, however the thing could tow a boat.)

And that’s (almost) how I think of Linux. It’s pretty dependable, but you’ve gotta roll up your sleeves once in a while. My family all have Ubuntu laptops. And as a result, I don’t have to worry about adware. Also stuff is easy to back up. The kids can game on these PCs, and only game just enough that they’re not bugging me for those fancy water cooled rigs. Luckily for me, I can keep the family running happily on used or refurbished hardware for the indefinite future. Similar to how I would view buying a used Toyota. I tend to think of myself as the family Linux mechanic.