What Is IPv6, and Why Does It Matter?

IPv4 addresses on the public Internet are running low. Microsoft paid $7.5 million for Nortel’s 666,624 IP addresses when Nortel went bankrupt in 2011 – that’s over $8 an IP address. IPv4 has technical problems, and IPv6 is the solution.
Unfortunately, deployment of IPv6 has been put off for too long. Had IPv6 been implemented years ago, the transition from the older standard to the newer one would have gone much more smoothly.
Image Credit: Bob Mical on Flickr


Technical Problems with IPv4

In 1980, Internet Protocol version 4 addresses were defined as 32-bit numbers. This provided a total of 232 IPv4 addresses – that’s 4 294 967 296, or 4.2 billion, addresses. This may have seemed like a lot of addresses back in 1980, but today there are many more than 4.2 billion network-connected devices on the planet. Of course, the number of devices connected to the Internet will only continue to grow. To make matters worse, some of these IPv4 addresses are reserved for special cases, so the Internet has fewer than 4.2 billion publically routable IPv4 addresses available to it.
There aren’t anywhere near enough publically routable addresses available for every device on the Internet to have a unique one. One thing that’s helped is network-address translation (NAT), which most home networks use. If you have a router in your home, it takes a single publically routable IP address from your Internet service provider and shares it amongst the networked devices in your home. To share the single IPv4 address, it creates a local area network, and each networked device behind the router has its own local IP address. This creates problems when running server software and requires more complicated port forwarding.

Carrier-grade NAT is one solution – essentially, every computer using an Internet service provider would be on a local network specific to that ISP. The ISP itself would implement network-address translation, just like a home router. Individuals wouldn’t have publically routable IP addresses and running some forms of server software that requires incoming connections wouldn’t be possible.
Image Credit: Jemimus on Flickr

How IPv6 Solves the Problems

To avoid the future exhaustion of IPv4 addresses, IPv6 was developed in 1995. IPv6 addresses are defined as 128-bit numbers, which means there are a maximum of 2128 possible IPv6 addresses. In other words, there are over 3.402 × 1038 IPv6 addresses – a much larger number.
In addition to solving the IPv4 address depletion problem by providing more than enough addresses, this large number offers additional advantages – every device could have a globally routable public IP address on the Internet, eliminating the complexity of configuring NAT.

Image Credit: Justin Marty on Flickr

So What’s the Hold Up?

RELATED ARTICLEAre You Using IPv6 Yet? Should You Even Care?
IPv6 was finalized in 1998, 14 years ago. You might assume that this problem should have been solved long ago – but this isn’t the case. Deployment has been going very slowly, in spite of how long IPv6 has been around. Some software is still not IPv6 compatible, although much software has been updated. Some network hardware may also not be IPv6 compatible – while manufacturers could release firmware updates, many of them would rather sell new, IPv6-ready hardware instead. Some websites still do not have IPv6 addresses or DNS records, and are only reachable at IPv4 addresses.
Given the need to test and update software and replace hardware, IPv6 deployment has not been a priority for many organizations. With enough IPv4 address space available, it’s been easy to put IPv6 deployment off until the future. With the imminent exhaustion of available IPv4 addresses, this concern has become more pressing. Deployment is ongoing, with “dual-stack” deployment easing the transition – modern operating systems can have both IPv4 and IPv6 addresses at the same time, making deployment smoother.

What Is Open Source Software, and Why Does It Matter?

Geeks often describe programs as being “open source” or “free software.” If you’re wondering exactly what these terms mean and why they matter, read on. (No, “free software” doesn’t just mean that you can download it for free.)
Whether a program is open-source or not doesn’t just matter to developers, it ultimately matters for users, too. Open-source software licenses give users freedoms they would not otherwise have.
Image Credit: Quinn Dombrowski on Flickr


The Definition of Open Source

If a program is open-source, its source code is freely available to its users. Its users – and anyone else – have the ability to take this source code, modify it, and distribute their own versions of the program. The users also have the ability to distribute as many copies of the original program as they want. Anyone can use the program for any purpose; there are no licensing fees or other restrictions on the software. The OSI has a more detailed definition of “open source” on its website.
For example, Ubuntu Linux is an open-source operating system. You can download Ubuntu, create as many copies as you want, and give them to your friends. You can install Ubuntu on an unlimited amount of your computers. You can create remixes of the Ubuntu installation disc and distribute them. If you were particularly motivated, you could download the source code for a program in Ubuntu and modify it, creating your own customized version of that program – or of Ubuntu itself. Open-source licenses all allow you to do this, while closed-source licenses place restrictions on you.

The opposite of open-source software is closed-source software, which has a license that restricts users and keeps the source code from them.
Firefox, Chrome, OpenOffice, Linux, and Android are some popular examples of open-source software, while Microsoft Windows is probably the most popular piece of closed-source software out there.

Open Source vs. Free Software

Open source applications are generally freely available – although there’s nothing stopping the developer from charging for copies of the software if they allow redistribution of the application and its source code afterwards.
However, that’s not what “free software” refers to. The “free” in free software means “free as in freedom,” not “free as in beer.” The free software camp, led by Richard Stallman and the Free Software Foundation, focuses on the ethics and morals of using software that can be controlled and modified by the user. In other words, the free software camp focuses on user freedoms.

Richard Stallman. Image by Fripog on Flickr.
The open-source software movement was created to focus on more pragmatic reasons for choosing this type of software. Open-source advocates wanted to focus on the practical benefits of using open-source software that would appeal more to businesses, rather than ethics and morals.
Ultimately, both open-source and free software advocates are developing the same type of software, but they disagree on the messaging.

Types of Licenses

There are many different licenses used by open-source projects, depending on which the developers prefer for their program.
The GPL, or GNU General Public License, is widely used by many open-source projects, such as Linux. In addition to all the above definitions of open-source, the terms of the GPL specify that, if anyone modifies an open-source program and distributes a derivative work, they must also distribute the source code for their derivative work. In other words, no one can take open-source code and create a closed-source program from it – they must release their changes back to the community. Microsoft referred to the GPL as being “viral” for this reason, as it forces programs that incorporate GPL code to release their own source code. Of course, a program’s developers can opt not to use GPL code if this is a problem.

Some other licenses, such as the BSD license, place less restrictions on developers. If a program is licensed under the BSD license, anyone can incorporate the program’s source code into another program. They don’t have to release their changes back to the community. Some people see this is being even more “free” than the GPL license, as it gives developers the freedom to incorporate the code into their own closed-source programs, while some people see it as being less “free” because it takes rights away from the end users of the derived program.

Benefits for Users

This isn’t all dry, unimportant stuff that only matters to developers. The most obvious benefit of open-source software is that it can be had for free. The example of Ubuntu Linux above makes that clear – unlike Windows, you can install or distribute as many copies of Ubuntu as you want, with no restrictions. This can be particularly useful servers – if you’re setting up a server, you can just install Linux on it. if you’re setting up a virtualized cluster of servers, you can easily duplicate a single Ubuntu server. You don’t have to worry about licensing and how many instances of Linux you’re allowed to run.
An open-source program is also more flexible. For example, Windows 8’s new interface disappointed many long-time desktop Windows users. Because Windows is closed-source, no Windows user can take the Windows 7 interface, modify it, and make it work properly on Windows 8. (Some Windows users are trying, but this is a painstaking process of reverse engineering and modifying binary files.)

When a Linux desktop like Ubuntu introduces a new desktop interface that some users aren’t fans of, users have more options. For example, when GNOME 3 was released, many Linux desktop users were equally turned off. Some took the code to the old version, GNOME 2, and modified it to make it run on the latest Linux distributions – this is MATE. Some took the code to GNOME 3 and modified it to make it work in a way they preferred – this is Cinnamon. Some users just switched to existing alternative desktops. If Windows was open-source, Windows 8 users would have more choice and flexibility. Just take a look at CyanogenMod, a popular, community-driven distribution of Android that adds features and support for new devices.
Open-source software also allows developers to “stand on the shoulders of giants” and create their own software. Witness Android and Chrome OS, which are operating systems built on Linux and other open-source software. The core of Apple’s OS X – and therefor iOS – was built on open-source code, too. Valve is furiously working on porting their Steam gaming platform to Linux, as this would allow them to create their own hardware and control their own destiny in a way that isn’t possible on Microsoft’s Windows.

This isn’t an exhaustive description – entire books have been written on this subject – but you should now have a better idea of what open-source software actually is and why it’s useful to you.

What Is Unix, and Why Does It Matter?

Most operating systems can be grouped into two different families. Aside from Microsoft’s Windows NT-based operating systems, nearly everything else traces its heritage back to Unix.
Linux, Mac OS X, Android, iOS, Chrome OS, Orbis OS used on the PlayStation 4, whatever firmware is running on your router — all of these operating systems are often called “Unix-like” operating systems.


Unix’s Design Lives On Today

RELATED ARTICLEWhat Does “Everything Is a File” Mean in Linux?
Unix was developed in AT&T’s Bell Labs back in the mid-to-late 1960’s. The initial release of Unix had some important design attributes that live on today.
One is the “Unix philosophy” of creating small, modular utilities that do one thing and do them well. If you’re familiar with using a Linux terminal, this should be familiar to you — the system offers a number of utilities that can be combined in different ways through pipes and other features to perform more complex tasks. Even graphical programs are likely calling simpler utilities in the background to do the heavy lifting. This also makes it easy to create shell scripts, stringing together simple tools to do complicated things.
Unix also had a single file system that programs use to communicate with each other. This is why “everything is a file” on Linux – including hardware devices and special files that provide system information or other data. It’s also why only Windows has drive letters, which it inherited from DOS — on other operating systems, every file on the system is part of a single directory hierarchy.

Tracing the Unix Descendants

Like any history going back over 40 years, the history of Unix and its descendants is messy. To simplify things, we can roughly group Unix’s descendants into two groups.
One group of Unix descendants were developed in academia. The first was BSD (Berkeley Software Distribution), an open-source, Unix-like operating system. BSD lives on today through FreeBSD, NetBSD, and OpenBSD. NeXTStep was also based on the original BSD, Apple’s Mac OS X was based on NeXTStep, and iOS was based on Mac OS X. Many other operating systems, including the Orbis OS used on the PlayStation 4, are derived from types of BSD operating systems.
RELATED ARTICLEThe Great Debate: Is it Linux or GNU/Linux?
Richard Stallman’s GNU project was also started as a reaction to AT&T’s increasingly restrictive Unix software licensing terms. MINIX was a Unix-like operating system created for educational purposes, and Linux was inspired by MINIX. The Linux we know today is really GNU/Linux, as it’s made up of the Linux kernel and a lot of GNU utilities. GNU/Linux isn’t directly descended from BSD, but it is descended from Unix’s design and has its roots in academia. Many operating systems today, including Android, Chrome OS, Steam OS, and a huge amount of embedded operating systems for devices, are based on Linux.
On the other hand, there were the commercial Unix operating systems. AT&T UNIX, SCO UnixWare, Sun Microsystems Solaris, HP-UX, IBM AIX, SGI IRIX — many big corporations wanted to create and license their own versions of Unix. These aren’t quite as common today, but some of them are still out there.

Image Credit: Wikimedia Commons

The Rise of DOS and Windows NT

RELATED ARTICLEWhy Windows Uses Backslashes and Everything Else Uses Forward Slashes
Many people expected Unix to become the industry standard operating system, but DOS and “IBM PC compatible” computers eventually exploded in popularity. Microsoft’s DOS became the most successful DOS of them all. DOS was never based on Unix at all, which is why Windows uses a backslash for file paths while everything else uses a forward slash. This decision was made back in the early days of DOS, and later versions of Windows inherited it, just as BSD, Linux, Mac OS X, and other Unix-like operating systems inherited many aspects of Unix’s design.
Windows 3.1, Windows 95, Windows 98, and Windows ME were all based on DOS underneath. Microsoft was developing a more modern and stable operating system at the time, which they named Windows NT — for “Windows New Technology.” Windows NT eventually made its way to regular computer users as Windows XP, but it was available for corporations as Windows 2000 and Windows NT before that.
All of Microsoft’s operating systems are based on the Windows NT kernel today. Windows 7, Windows 8, Windows RT, Windows Phone 8, Windows Server, and the Xbox One’s operating system all use the Windows NT kernel. Unlike most other operating systems, Windows NT wasn’t developed as a Unix-like operating system.
Microsoft didn’t start with a completely clean slate, of course. To maintain compatibility with DOS and old Windows software, Windows NT inherited many DOS conventions like drive letters, backslashes for file paths, and forward slashes for command-line switches.

Why it Matters

Have you ever taken a look at the Mac OS X terminal or file system and noticed how similar it was to Linux’s, and how different they both were from Windows? Well, this is why —  both Mac OSX and Linux are Unix-like operating systems.
Knowing this bit of history helps you understand what a “Unix-like” operating system is, and why so many operating systems seem so similar to each other while Windows seems so different. This explains why the terminal on Mac OS X will feel so familiar to a Linux geek, while the Command Prompt and PowerShell on Windows are so different from other command-line environments.

This was just a quick history that will help you understand how we got to where we are today without getting bogged down in the details. If you want more information, you can find entire books on the history of Unix.
Image Credit: Peter Hamer on Flickr, Takuya Oikawa on Flickr, CJ Sorg on Flickr

What Is a “Portable” App, and Why Does It Matter?

Portable applications offer some definite advantages over their traditional counterparts. They’re lightweight and they allow you to move between computers while taking your applications and settings with you. Here’s why they’re different and why they’re sometimes—but not always—a good choice.


How Regular Apps Are Installed

RELATED ARTICLEWhat Is the ProgramData Folder in Windows?
To understand what makes an app portable, it might be helpful first to take a quick look at how traditional apps get installed in Windows. When you install an app in Windows, the installation files go to several different locations. The bulk of the app’s files are usually copied to a single folder somewhere in the C:\Program Files folder. Files that contain settings applying to all users of the app may get created in the ProgramData folder.

Settings that are particular to different user accounts on the PC are stored in files created in the hidden “AppData” folder inside each individual accounts user folder. Most apps create entries in the Windows Registry that may also hold various configuration settings. And many apps take advantage of shared code libraries that get installed with things like the .NET framework and Visual C++ Redistributables.
RELATED ARTICLESWhat Is the Microsoft .NET Framework, and Why Is It Installed on My PC?Why Are There So Many “Microsoft Visual C++ Redistributables” Installed on My PC?
There are distinct advantages to this separation of functions. Multiple apps can share information contained in Registry entries or shared code libraries, preventing unnecessary duplication. Storing user-specific settings in one place and system-wide settings in another means that apps can take better advantage of lots of different Windows features designed for a multi-user system. For starters, each user can rely on their own settings being loaded when they start the app just because they are signed in with their own Windows account. Features like file and share permissions are built on this structure. And, having all program settings saved to designated areas makes backing up your system more reliable.

So, What’s a Portable App and Why Would I Use One?

A portable app is simply one that doesn’t use an installer. All the files required to run the app reside in a single folder, which you can put anywhere on the system. If you move the folder, the app will still work the same. Instead of installing a portable app, you typically download it as a ZIP file, extract that ZIP to a folder, and run the executable file for the app. If the app allows you to save settings, those settings are saved in files right inside the same folder.
The biggest benefit of using portable apps is self-evident—they’re portable. Stick them on a USB drive, for example, and you can carry them around from computer to computer. They won’t leave any footprint on the PCs you run them on. Everything, including any settings you’ve saved, is saved right in the portable app’s folder on the USB drive. It’s actually very similar to the way things worked back in the days of MS-DOS and Windows 3.1.
Portable apps can be nice even if you aren’t moving between computers, though. For one thing, they leave a smaller footprint on your PC. They tend to be lighter weight than most installable apps just by virtue of not having to be installed. You can sync them (along with their settings) to your other PCs using something like Dropbox. Or, you can just use an app once without having to worry about it leaving cruft on your system.
Sure, there will always be apps that you need to install. Either they’re just too big—or sophisticated—to run as a portable app, or they really need to take advantage of Windows’ multi-user or security capabilities. But many apps come in both flavors, which means you can choose between an installer and a ZIP when you download it.
RELATED ARTICLEUnderstanding User Account Control in Windows 7
Of course, there are some downsides to using portable apps. Windows’ User Account Controls (UAC) don’t work for portable apps the way they do for installed apps, meaning that they are more subject to non-administrative processes. You could actually consider this one both an upside and a downside. The upside is that if you need a portable app, you can likely run it even if you’re on a network—say, at work—where you can’t install a normal app. The downside is that the IT department and any security protocols they’ve instituted might be less effective.
Another downside of portable apps is that they’re not typically built with multiple users in mind. This is likely not a big deal since you’re probably creating a portable drive that you can carry around just for yourself. But if multiple users do need to use an app, they’ll either all have to use the same settings or you’ll have to have several copies of the app folder on your portable drive.
RELATED ARTICLEDo You Really Need to Safely Remove USB Flash Drives?
Lastly, if you’re running portable apps from a USB drive, you’ll want to take extra care to eject the drive properly instead of just pulling it out. Otherwise, you can corrupt the apps or cause settings to not be saved properly. You can even run into this problem on PCs that don’t handle USB drives well when they enter sleep or hibernation. It’s less of a problem on modern PCs than it was in the past, but there are still PCs today that don’t handle sleep well.
That said, the advantages of portable apps usually outweigh the disadvantages—particularly if you move around to different PCs a lot.

What Kinds of Portable Apps Are Available?

RELATED ARTICLEThe Best Free Portable Apps for Your Flash Drive Toolkit
If you think of portable apps as mostly system utilities tech support folk carry around, you might be surprised to find that there are all kinds of portable apps out there. You can read about a bunch of them in our guide to the best free portable apps for your flash drive toolkit. You’ll find system utilities, for sure, but also apps for just about every need you have—productivity, communications, graphics and image viewing, and a lot more.
In addition to all these standalone apps, you can also download application suites that you can install to a USB drive. These suites usually provide you with a Start menu-style launcher for accessing the apps and some also coordinate app settings for you. Many of these suites boast hundreds of free portable apps to choose from, essentially allowing you to create a complete, portable workspace. PortableApps, Lupo PenSuite, CodySafe, and LiberKey are some of the more popular suites.
It’s worth taking your time to look over the different portable suites if that’s what you’re interested in. In some cases, portable apps are only available through a software suite like this. For example, PortableApps.com provides access to several hundred portable apps that you can download and install to your PortableApps disk. Many of these apps can only be installed to the PortableApps suite and don’t have a portable version you can use without the suite. PortableApps does offer the advantage of being able to choose exactly which apps you want to include. Other suites have all the portable apps bundled within the main download, so it’s an all or nothing prospect. But each suite may provide specific tools that you can’t find for other suites, so poke through what apps are available for each before making your decision.

You’ll also find that when we recommend third-party utilities in many of our articles, we often choose to feature portable apps over installable ones.

Can I Make Regular Installable Apps Portable?

RELATED ARTICLETransform Install Only Applications into Portable Applications
It is often possible to make a regular app portable, but it can be a bit finicky and usually takes a bit of work. If the app is a very simple one—say a utility that obviously doesn’t need to be an installable app—it is sometimes possible to extract those files from the installer and transform them into a portable app using these instructions. This is by no means a method that’s guaranteed to work, but it may be worth trying.
RELATED ARTICLEUse Portable VirtualBox to Take Virtual Machines With You Everywhere
Another option for making an installable app portable is to virtualize the app. This usually requires a good bit more setup, but essentially you’d create a portable virtual machine that can run the necessary operating system and the app (or apps) you need and then load that virtual machine onto whatever portable media you want. Portable VirtualBox is the most common tool for this, and we’ve got a great guide on using it to take virtual machines with you everywhere. VirtualBox itself is a free virtual machine offering from Oracle that can run on pretty much any desktop operating system. Portable VirtualBox is a wrapper for VirtualBox that turns it into a portable application you can install on a USB stick or external hard drive.
RELATED ARTICLEHow to Create Portable Versions of Applications in Windows 8.1 Using Cameyo
Cameyo is another interesting virtualization option. Instead of running an entire virtual machine from your portable drive, you create a virtual machine on your desktop system. You then use Cameyo to record the installation of an app within that virtual machine. When it’s done, Cameyo creates a single executable file that you can then drag to your portable drive and run wherever you want. Cameyo is also free for home or small business users. If you’re curious about it, we’ve also got a guide on using Cameyo to create portable apps.

No matter what method you choose, it’s worth exploring what portable apps have to offer. There’s nothing quite like the feeling of freedom and flexibility you get from knowing that with the USB drive hanging from your keychain, you can run all the important aspects of your computing life.