Archive for the ‘Operating Systems’ Category.

How to add a “Start” shortcut in Windows 8 (or Where is start in windows 8)

Too many people are paying for software to provide a complete return the windows Start pop-up menu. Well, Start is still there in Windows 8, it is just a little different. It is not a pop-up menu. It is hidden by default and only shows when you move your cursor to the bottom left corner.

I think many people would be happy if they simply had a shortcut to the Apps screen, which is equivalent to All Programs.

Well, lets create a shortcut and put in on the task bar. Follow these steps.

Note: Alternately, you can download and extract the zip file from here: AllPrograms.zip

Step 1 – Create the Windows 8 Apps Shortcut

  1. Right-click on the Desktop and click New | Shortcut.
  2. Where it prompts you to “Type the location of the item” enter this:
    %windir%\explorer.exe shell:::{2559a1f8-21d7-11d4-bdaf-00c04f60b9f0}
  3. Click Next.
  4. Name the shortcut what ever you want. “Start” or “All Programs” or whatever, it really doesn’t matter.
  5. Click Finish.

Step 2 – Change the Icon for the Windows 8 Apps Shortcut

You may want to change the icon too.

  1. Right-click on your newly created shortcut and choose Properties.
  2. Click Change Icon…
  3. Select a different icon from the list or download your own .ico file and use it.

Step 3 – Drag the Windows 8 Apps Shortcut to the task bar

  1. Right-click on your newly created shortcut and choose Pin to taskbar.
  2. Now if you want this icon all the way on the left, click and drag it there.

Windows 8 Negativity Debunked!

I love BSD and Linux and as an Open Source guy since 2001, many people expect me to hate Microsoft.  Well, guess what? I don’t hate Microsoft at all. I love the technology. I love most technology. So unlike many, I am not religious about my operating system. I am completely happy to spin up a Windows Server where it makes sense and a FreeBSD/Linux server where that makes sense. I am even known to run a PC-BSD desktop and avoid paying for a commercial operating system.

Currently for my desktop, I run Windows 8.

I really, truly enjoy running Windows 8. I am running it on both my laptop and my desktop. I love the Metro interface and find it works quite well for me. I use it to easily find and run my applications, just as I used Start in Windows 7. I love having both a Metro and a Desktop interface as well as having both Metro and Desktop apps.

I hear general complaints on the web.

“I miss the Start bar.”
“It’s harder to launch my apps.”
“I hate the metro interface.”

Really. Why? It is actually easier to use.

“Start is missing.” – Debunked!

Is Start really missing? No. It is there, just it has to pop up. And guess what? It even says “Start”.

Start Icon

The difference between the Start button in previous versions and the Start button in Windows 8 is not a long list.

  1. You don’t see a start button/icon until you move to the cursor all the way to the bottom left corner. However, the image that pops up does say “Start”.
  2. The screen doesn’t pop up over your current desktop view, instead it opens using the full screen.
  3. It shows both desktop apps and metro apps.

Well, are these three differences that big of a deal. Of course not. The first two are not missing features, just a different way to view things. The last one is actually a feature add.

Unfortunately, there are haters out there. Those who are religious about their operating system. Each operating system has those who are nut-job religious. Yes, I’ve seen nut-jobs for Microsoft, Apple OSX and iOS, BSD, Linux, Unix, Android. Heck, I’ve even seen nut-jobs for just one flavor of Linux (Red Hat, Debian, Ubuntu, Fedora, Slackware, Symbios, etc…). So naturally when nut jobs see a little blood in the water they attack.

Can improvements be made? Yes. I see no reason that Start has to be hidden by default. Historically, hiding or showing things has been an option. It is really the lack of the option that is all Microsoft missed. If so, that is not a big deal at all.

“It’s harder to launch my apps.” – Debunked

Windows 8 is the operating system for launching Windows applications. Historically, you have been able to launch apps in the following manner:

  1. Directly click the executable.
  2. Click a shortcut you can place anywhere (folder or desktop or Start bar)
  3. Click Start then move the cursor to All Programs, move the cursor again, and then scroll through All Apps.
  4. In Windows 7, they added the feature to click Start, just type in the first part of the program and the search would find the application for you.

Has anything changed in Windows 8. No, it hasn’t. I can still do all three with Windows 8.  What is different.

  1. Clicking Start is displayed full-screen.
  2. Getting to All Apps doesn’t require a lot of scrolling, instead it is Click Start. Right-click and choose All Apps.

These again are not feature losses but simply different views.

Go ahead and click Start, type in “No” and see that Notepad immediately shows up.

Go ahead and click Start, type in “Cont” and see that Control Panel immediately shows up.

It functions the same as Windows 7.

Is there room

“I hate the metro interface.” – Not debunked!

So let’s start with the fact that generic statements like this are just opinion and too general to really do anything about. What do you hate? Do you hate the full screen? Do you hate the way Metro Apps are opened? Lets take this to a more granular level.

“I hate seeing the full screen when I click start.” – Just opinion.

Well, this is opinion. No one can debunk or not debunk this. Personally, I don’t care either way. It works well for me, so I have no complaints.

Is there room for improvement? Yes.

I would like an option to see this in full-screen or in a window. Then those that hate it opening as full screen don’t have to have it open as full screen.

I would also like to be able to set whether to see the Start screen or the Apps screen is displayed when I click Start. However, this feature is easy to add using a shortcut. I will link to a post on how to create a shortcut to the Apps screen. You could even name the shortcut Start and put in on the bottom left.

“I hate that opening a metro app takes the whole screen”  - Not Debunked a real problem but fixable

Yes, metro apps take up the whole screen. Worse, some things, like pdf files, open in a metro app by default. I had to install Acrobat Reader to make this go away, but only for opening pdf files. Even worse is trying to figure out how to close a metro app for the first time.

This is really the only thing that bothers me about Windows 8. When I launch a metro app, it opens full screen and I have no option to make it just a window. The Metro app experience is not really that great for a desktop/laptop.

I want all my windows to be re-sizable and I want to have multiple windows up at once. So should Metro and Desktop modes be completely separated. Of course not. There is only one feature that is annoying. The fact that metro apps open full screen. Simply add an option to open metro apps in a window and now everything is fixed.

This is fixable. I may write a post on how to resolve this later. If I do, I will link to the solution here.

Conclusion

There was only one real problem, in that metro apps open full screen and you can’t run multiple apps at once. The rest are just options people want. If Microsoft makes these changes, the major complaints are resolved:

  1. Allow an option to hide or display the Start icon.
  2. Allow Start and Apps metro screens to be opened in windows.
  3. Allow Start to be configurable to either open Start or Apps metro screens.
  4. Allow a setting to make metro apps to be opened in windows and make it the default setting on desktops and laptops.

Wow! A brand new interface and really four features resolve the world’s major complaints, most of which are not really that big of complaints in the first place.

We haven’t yet discussed the new features in Windows 8 yet, such as Hyper-V, which saves me a lot of money on a separate VMWare Workstation license.

My Recommendation

Take another look at Windows 8!

Android Virtual Device (AVD) extremely slow

So I started to look at writing an Android app. I took a class on Android and wrote a prototype Android App in fall of 2011. Well, I have a need to write an Android App again.

I am a C# developer and while I am comfortable with Java, I prefer C# so I am going to use MonoDroid.

I installed everything very easily using the MonoDroid installer. However, when I went to launch an Android Virtual Device (AVD) it seemed to start but even after leaving it over night, it didn’t finish booting.

So I did some research and the recommendation was to install the Hardware Accelerated Execution Manager.

So I had to:
1. Open the Android SDK Manager and install the Intel x86 Emulator Accelorator (HAXM).

2. Run the installer I found here:
C:\Users\jbarneck\AppData\Local\Android\android-sdk\extras\intel\Hardware_Accelerated_Execution_Manager\IntelHaxm.exe

After that, opening an AVD was plenty fast.

Get Active Directory User’s GUID and SID in C#? (Part 2)

Yesterday we learned how to Get the Current User’s Active Directory info. Today we will learn how to get a named user’s Active Directory info?

Get a named User’s Active Directory info?

The first steps are the same as yesterday.

Step 1 – Create a new Console Application project in Visual Studio.

Step 2 – Add a .NET reference to System.DirectoryServices.AccountManagement.

Step 3 – Populate the Main Method as shown below.

using System;
using System.DirectoryServices.AccountManagement;

namespace NamedUserAdInfo
{
    class Program
    {
        static void Main(string[] args)
        {
            string userName = "Rhyous";
            PrincipalContext context = new PrincipalContext(ContextType.Domain);
            UserPrincipal user = UserPrincipal.FindByIdentity(context, userName);
            Console.WriteLine("Name: " + user.Name);
            Console.WriteLine("User: " + user.UserPrincipalName);
            Console.WriteLine("GUID: " + user.Guid);
            Console.WriteLine(" SID: " + user.Sid);
        }
    }
}

The only difference between the current user and a named user is that there is a static value for the current user called UserPrincipal.Current whereas for a named user, you need the user name.

Writing a program that does both

OK, so lets make a program that takes a parameter and does both. Here it is.

using System;
using System.DirectoryServices.AccountManagement;

namespace GetAdUserInfo
{
    class Program
    {
        static UserPrincipal user = UserPrincipal.Current;

        static void Main(string[] args)
        {
            ParseArgs(args);
            OutputUserInformation();
        }
        
        private static void OutputUserInformation()
        {
            Console.WriteLine("Name: " + user.Name);
            Console.WriteLine("User: " + user.UserPrincipalName);
            Console.WriteLine("GUID: " + user.Guid);
            Console.WriteLine(" SID: " + user.Sid);
        }

        private static void ParseArgs(string[] args)
        {
            foreach (var arg in args)
            {
                if (arg.StartsWith("user=", StringComparison.CurrentCultureIgnoreCase))
                {
                    string[] splitArgs = arg.Split("=".ToCharArray());
                    string userName = string.Empty;
                    if (splitArgs.Length == 2)
                        userName = splitArgs[1];
                    if (string.IsNullOrWhiteSpace(userName))
                    {
                        Syntax();
                    }

                    // set up domain context
                    PrincipalContext ctx = new PrincipalContext(ContextType.Domain);

                    // find a user
                    user = UserPrincipal.FindByIdentity(ctx, userName);
                    continue;
                }

                if (arg.StartsWith("user=", StringComparison.CurrentCultureIgnoreCase))
                {
                    Syntax();
                }

                // if arg not found treat it like /?
                {
                    Console.WriteLine("Argument not found: " + arg);
                    Syntax();
                }
            }
        }

        private static void Syntax()
        {
            String fullExeNameAndPath = System.Reflection.Assembly.GetExecutingAssembly().Location;
            String ExeName = System.IO.Path.GetFileName(fullExeNameAndPath);
            Console.WriteLine(ExeName + " user=[username]");
        }
    }
}

Here are the sample projects.
GetAdUserInfo.zip

Get Active Directory User’s GUID and SID in C#? (Part 1)

Get the Current User’s Active Directory info?

Here is how to get the currently logged in users Active Directory GUID and SID.

Step 1 – Create a new Console Application project in Visual Studio.

Step 2 – Add a .NET reference to System.DirectoryServices.AccountManagement.

Step 3 – Populate the Main Method as shown below.

using System;
using System.DirectoryServices.AccountManagement;

namespace GetAdUserInfo
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Name: " + UserPrincipal.Current.Name);
            Console.WriteLine("User: " + UserPrincipal.Current.UserPrincipalName);
            Console.WriteLine("GUID: " + UserPrincipal.Current.Guid);
            Console.WriteLine(" SID: " + UserPrincipal.Current.Sid);
        }
    }
}

See Part 2 – Get a named User’s Active Directory info?

Best Practices for Preparing a Windows Virtual Machine

If you use Virtual Machines  in your lab (either with Hyper-V, VMWare Workstation, Virtual Box or other), you probably would love to have a list of steps to create a nice usable Virtual Machine. There are probably annoyances you have with your Virtual Machines that if you only knew how you could make them go away.

Also, it is frustrating to revert and have to redo settings, so knowing when is best to snapshot is also nice.

This document is to help you with just that: Creating the perfect Virtual Machine that is easy to use and avoids annoyances.

Note: I have been using VMWare Workstation since 2004. I have also used ESX, Virtual Box, and Hyper-V. I have worked with lab environments the most, but I have also worked with Virtual Machines in production and consider myself highly experienced.

Setting up a new Virtual Machine

Note: These steps provide general guidelines for when to snaphsot

  1. Create a new VM in your favorite Virtual Machine Manager.
    Note: I have used VMWare Workstation and ESX, Virtual Box, and Hyper-V and find I like them all fine.
  2. Use a very large disk image size, but do not choose to use allocate disk space now.
    Note: It is very frustrating to run out of space, so avoid this.
  3. Delete the floppy disk if the hardware configuration has one.
    Note: VMWare workstation will annoy you to no end if you leave a floppy on the system.
  4. Install Windows.
  5. Note: Do not activate or enter a Product Key if it allows you to skip this step.
    Note: I will use Windows Server 2008 R2 for this example.
  6. Create a snapshot called “Clean Install” here.
  7. Apply all patches and updates and driver updates.
  8. Add a secondary admin account in case you forget the primary admin account.
  9. Create Snapshot called clean install with Patches.

Windows Activation

If this is to be a base OS to use to clone other Virtual Machines, never activate the base Operating System, only activate a Virtual Machine after it has been cloned and after you are sure the Virtual Machine will not be discarded as lab Virtual Machines can be discarded often.

Activation can be a delicate balance. You don’t want to active every time, but at the same time, you don’t to revert a virtual machine and have to activate again. As soon as you know you will use the Virtual Machine for a while, activate it and snapshot it. Hopefully you never have to revert to a state before it was activated.

Making the Virtual Machine Easier to Use

Allow the Virtual Machine to Shutdown from the Login Screen

  1. Run gpedit.msc to launch the Local Group Policy Editor.
  2. Click to expand Computer Configuration | Windows Settings |Security Settings |Local Policies | Security Options.
  3. Scroll down in the right pane and right click on “Shutdown: Allow system to be shut down without having to log on” and choose Properties.
  4. Click Enabled and then OK.

Disable the shutdown event tracker

Virtual Machines, especially in a lab, shutdown often and unlike production machines, tracking these shutdowns is not necessary, so lets turn this off.

  1. Run gpedit.msc to launch the Local Group Policy Editor.
  2. Click to expand Computer Configuration | Administrative Templates |System.
  3. Scroll down in the right pane and right click on “Display Shutdown Event Tracker” and choose Edit.
  4. Click Disabled and then OK.

Disable Internet Explorer Enhanced Security Configuration

It is a pain in a lab to be prompted on every web site and for every download. Labs usually trade security for speed and agility.

  1. Go to Server Manager.
  2. Under Security Information on the right, click on Configure IE ESC.
  3. Set the values to Off.
  4. CLick OK.

Making the Virtual Machine more efficient

Turn off unnecessary services

If you need to run a lot of Virtual Machines and you need to squeeze every last bit of processor power out of your Virtual Machines, then they should only run the bare minimum they need to run.

Make a list of services you do not need but are running by default and disable them.

Note: Google search for “Services you can turn off in Server 2008″ or whatever Operating System you are using.

Note: Often developers install Visual Studio, which includes SQL Express, and even if they never use SQL Express, they leave the service running. Stop such services and set them to manual so they don’t restart every reboot.

Software on the Virtual Machine

Install commonly used software

This one appears easy at first. However, it is different and there is more to it than you think.

  1. Make a list of software you use on your Virtual Machine. Here are a few examples:
    Notepad++
    7zip
    Acrobat Reader
    Firefox or Chrome (or your favorite browser)
    etc…
  2. Install your desired software.
  3. Update your software.
  4. Snapshot.

Delete Unique Values for Some Software

If you are going to use this as a base Virtual Machine to clone other Virtual Machines, then you don’t want anything that should be unique to be the same on each machine. Any software that has unique values should have those unique values removed. I’ve seen VPN software have unique values, the LANDesk Agent, etc… Remove these unique value before you Sysprep.

Using Virtual Machines with Active Directory

Using the Virtual Machine as a base

If you are going to create a base Virtual Machine that  you will clone often, just never join it to the domain. Instead, take the time to get the system perfect and sysprep the Virtual Machine so it will join the domain and prompt for a computer name on first boot.

Sysprepping a Virtual Machine

Sysprep is eithe ron the ISO or already installed.

  1. Run c:\windows\system32\sysprep\sysprep.exe.
    (Or find sysprep on the ISO)
  2. For System Cleanup Action, choose Enter System Out-of-Box Experience (OOBE)
  3. For Shutdown Options, choose Shutdown.
  4. Click OK.
  5. Snapshot once the machine has shutdown.

Prevent the Virtual Machine from ever losing a trust with the domain

When a Windows Virtual Machine is joined to the domain, reverting can cause a huge delay, especially if the snapshot is from a while ago, because a machine and the domain have a trust based on a system password (that is all under the covers) and this password can update. When reverting after the password has changed, your reverted state will no longer have a trust with the domain. This can be prevented.

  1. Join your machine to the domain.
  2. Apply DisablePasswordChange registry key.
    Windows Registry Editor Version 5.00
    
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Netlogon\Parameters]
    "DisablePasswordChange"=dword:00000001
    
  3. Create a snaptshot called “Machine joined to domain, DisablePasswordChange set”.

For more information, read this post: Virtual Machines, Snapshots, Domain Membership, and trust relationship

Change the domain password requirements to be easy or off

Again, in lab environments, security is often traded for speed and efficiency. You may want to allow passwords that are blank or two characters.

Also, because of snapshots and reverting it will eliminate Virtual Machine problems if passwords never expire.

If your Active Directory server is also in your lab, you may be able to change the passwords requirements to be easy or even turn them off completely. If your Active Directory server is not in your lab, you may have to live with them.

Don’t clone machines joined to the domain

If you clone a machine joined to the domain, you have created two machines that have the same domain membership, which should be unique. If one machine changes, it can break the trust relationship for the other machine.

The only time you should clone a machine that is joined to the domain is when you plan to discard the Virtual Machine you are cloning from.

Other Steps

Everyone has unique needs, and these are supposed to be general needs. You should document your needs and add them to your Virtual Machine creation.

If you have an idea that isn’t listed here and it is a general step, please comment.

Windows 8 Review

So I installed Windows 8 on my work computer.

Day 1 and 2 Review

  1. I like that Hyper-V is included in Windows 8 Pro but don’t expect it to have anywhere near the features of VMWare Workstation. Even Virtual Box is more feature rich. No clipboard to copy and paste and no automatic screen resolution features are enough to drive me crazy.
  2. I miss Start | All Programs. It is quite hard to get to “All apps” if you don’t now how. Press the windows button, or drag your mouse to the bottom left corner of the screen and click on a small popup to get to slide mode. Then right-click and in the bottom right there is an All Apps image you can click on.
  3. I opened some slides in an XPS file and they opened on my left monitor. I found I could click and drag the slideset to the other monitor. The application started freaking out and flashing opened and closed on the first monitor.
  4. When I open an application, I am not exactly sure how to close it. Is it like Android and IOS in that I just don’t close it?

Other than that, it feels like Windows 7 with a slightly different theme.

Day 3 Review

  1. I tried to find the power off or restart option. I had to Google it. Rebooting the system was not very intuitive. Perhaps on a tablet, they will have the option come up when pressing the power button, like on my Kindle or my HTC Sensation phone, but when using this as a desktop, it annoying that I didn’t find it. I never expected them to put it in Settings. Here are the steps.

    Step 1 – Go to the very bottom right corner, until the right widget bar opens.
    Step 2 – Move mouse up  Settings.
    Step 3 – Choose Power from settings.

  2. I feel that when using Windows 8 as a desktop, if you don’t know keyboard shortcuts, it is going to be a struggle.

A non-compete and single ownership version of the BSD License

I recently created an API and I wanted to give it a license where it is free for anyone to use, so I was planning on using the two-clause BSD License. However, after further thought, I realized that I had a few more stipulations I wanted to add. Yes, I wanted the software to be free to use, however, there are a few things I don’t want.

  1. I don’t really want someone to fork my project just yet. I want the project to remain in one place.
  2. I want the project to be free and commercial friendly, including free to use the code, or link to a binary in any way.
  3. I don’t want a company to use my software to sell a competing solution unless I am compensated. In which case, I can license the software to them under a commercial license.
  4. If anyone contributes to the project, I would like the right to sell the code under a different (possibly commercial) license. This prevents license and author sprawl. The fourth clause is crossed out because this will be done at commit time and is not needed in the license of existing source code.

Non-compete line addition to the new BSD License

So I came up with two one more line to the new BSD License: a third line prohibiting competing projects or solutions without permission; a fourth line that states that any contributions to the project will result in the all rights to the contributed code being assigned back to me. This will be done at commit time and is not needed in the license of existing source code.

<Project> <Project Description>
Copyright (c) <Year>, <Owner>
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice, this
   list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
   this list of conditions and the following disclaimer in the documentation
   and/or other materials provided with the distribution.
3. Use of the source code or binaries that in any way competes with this
   project, whether open source or commercial or other, is prohibited unless 
   permission is granted under a separate license by <Owner>.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Let me know if you think this accomplish the non-compete goal. Especially let me know if something appears erroneous.

Single Ownership

Single ownership means the project always has all rights to every line of code, the binaries, and documentation or anything else that may be included in the project. So if any contributions from anybody to the project occur, they occur with the stipulation that ownership and all rights are transferred to the the project owners.

However, doing this in the license above is the wrong place. It should be a separate agreement that occurs in places like when registering with the project or its mailing list or it source repository. So contribution is done under this separate agreement.

Contributing to this project can be done under the following conditions:
  1. Any contribution (source code, documentation, or other) to this project 
     is your own work.
  2. You transfer all rights to the contribution (source code, documentation,
     or other) to <Owner>.

Again, let me know if this accomplishes the goal, or is insufficient or has errors.

The two-clause BSD License

Here is the two-clause BSD License, sometimes called the FreeBSD License or the Simplified BSD License.

Copyright (c) <Year>, <Owner>
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice, this
   list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
   this list of conditions and the following disclaimer in the documentation
   and/or other materials provided with the distribution.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Non-technical reasons for why Linux has a larger open source market share than FreeBSD

It is not always about who is better. Often an equal or better candidate loses for reasons that should not apply. This is true for many areas (politics for example) where what matters is overlooked by our humanity. So whether one operating system is technically better than the other is not the only factor for choosing it. Linux is the most used open source operating system and has a larger market share than FreeBSD (OS X not included). This article takes a look at some other reasons one might choose Linux over FreeBSD.

Note: This article also is not taking into account OS X, which while it has some foundations is BSD, is not open source, and this article is to discuss open source market share. Due to OS X, FreeBSD could make the claim that they have a larger market share than Linux.

Reason #1 Advertising

The bottom line to advertising is that Linux has it in quantities and FreeBSD doesn’t.

Advertising

For FreeBSD, there is very little, if any, advertising. I have never seen any ad on any media type for FreeBSD.

Linux has multiple enterprise size companies, Red Hat, SUSE (previously Novel), IBM, and others that are advertising it and using it. Linux is advertised by these companies quite heavily.

Buzz

There are a few user’s groups here and there and that is about it. FreeBSD has no little buzz marketing.

Linux has a lot of buzz. There is no questioning the buzz that was created by Ubuntu that still exists. Thanks to distros like Ubuntu, Linux has an extreme amount of buzz.

What is being done?

Over the past couple of years, iXSystems has provided an increase in advertising. Also the new BSD Magazine is another form of advertising that is beneficial.

Reason #2 – Brand name and Logo

A brand name has the ability to make or break an organization. A logo has this same ability. Why? Because they are the embodiment of the company. They provide the first impressions (don’t tell me you haven’t heard that saying about first impressions) and often the only impression.

And how it sounds is extremely important.

Think about it. Some people want to sound cool when they say the operating system they run.

  • “I run Linux!”
  • “I run FreeBSD!”
I have heard people say it many times: Linux as a word just sounds cooler than FreeBSD. Well, lets actually look at from a more scientific point of view than “just sounds cooler”.  Let look at reasons

The linguistics of a brand name

Linguistic experts have studied brand names and there are many “best practices” for a brand name, and FreeBSD follows none of them. Because of this, FreeBSD is not a good brand name. It is not even average. In fact, if you were to make a list of below average brand name, FreeBSD would reside near the bottom of the bad list, and here is why.

The goal of a looking at a brand name from a linguistics point of view is to find ways to make the brand easy to say, descriptive, and memorable . A brand name is poetry and all the linguistic elements that benefit or distract from poetry can benefit or distract from a brand name. Here are ten linguistic suggestions for having a good brand name.

  1. Use alliteration in your brand name.
  2. Use equal or more harmonious consonants than cacophonous sounds. Some consonants make sounds that are “in-between” such as F. A letter such as X has two sounds, K and S.
  3. Syllables. Two or three syllables is ideal. One doable too. Four is possible if other items in this list are good. Five syllables and above your pretty much a bad brand name.
  4. Use the correct “foot“. Use disyllables such as pyrrhic, iamb,  trochee, but avoid spondee; Use trisyllables such as anaepest, credic, dactyl but avoid molossus etc…
  5. Avoid using acronyms.
  6. Vowels should rhyme or match.
  7. Avoid contrasting vowel sounds, such as a long vowel followed immediately by a short vowel.
  8. The place of articulation of each consonant and transitions between them should be easy.
  9. Use a word that can become a noun or verb.
  10. Know definitions of roots, prefixes, and postfixes and use ones that apply to your business.

So lets compare FreeBSD brand to the Linux brand.

Winner FreeBSD Linux Explanation
1 Tie n/a n/a Neither alliterated.
2 Linux Good Bad Linux has three consonants, but one is X which has two consonant sounds K and S. Sot it has, three harmonious, one cacophanous which is a 3-1 ratio.
FreeBSD has five consonants, two cacophonous, two harmonious, one in-between, which is a 2-2-1 ratio.
3 Linux Good Bad Linux is idea having two syllables.
FreeBSD is four syllables and nothing to save it.
4 Linux Good Bad Linux is a single pyrrhic foot.
FreeBSD has two feet and they are same foot, spondee, which is the one you should avoid.
5 Linux Good Bad Linux avoided acronyms, FreeBSD, has a three-letter acronym.
6 Linux Good Average Linux is two short vowels.
FreeBSD has four vowels, three long Es and one short E.
7 Linux n/a Bad Linux has no vowels next to each other.
FreeBSD has a conflict of a long E followed by a short E between the B and S letters.
8 Linux Good Average Linux has the L and N and S sounds all made by very the same mouth parts and positions, well separated by vowels.
FreeBSD has sounds made by various different places and parts in the mouth less easy transistions.
9 Linux Average Bad Linux can be a noun, and I have heard linuxed used before.
FreeBSD is barely passable as a noun and can in no way be verabalized.
10 Tie n/a n/a Linux has no syllables with any dictionary meaning.
FreeBSD has the word “free” which is too general to provide any meaning. The acronyms detracts from the mean further.

If we rated these on a scale of 0 to 5, with bad being 0, average being 3, and Good being 5, here is how the points come out.

  • FreeBSD = 2 points. Two item were N/A, so that is 2 out of 40 possible points or 5% of the possible Good points a brand could have.
  • Linux = 35 points. Three items were N/A, so that is 33 out of 35 possible points or 94% of the possible Good points a brand could have.

As you can see, from a linguistics point of view, FreeBSD is a terrible brand name. If FreeBSD were an enterprise trying to stay alive, the first order of business would be to change the brand name. Also, this analysis proves the obvious, that most of the bad branding stems from the acronym, BSD.

Derivative brand names

Derivatives of Linux, such as Red Hat, and Ubuntu have average or above average brand name as well.  Red Hat is two simple words, though they unfortunately have no meaning for an open source operating system, but as brand name these words are simple and easy to say. Simple and easy.  Ubuntu has meaning, three syllables, matching vowels, though it isn’t exactly easy to say with 2 cacophonous to only one harmonious consonant.  Both of these

Unfortunately, the FreeBSD derivatives don’t get better. The main problem is that more than half of them feel the need to continue to use the BSD acronym in their brand. There reasoning is to show their ties to BSD, but the result is very bad brand names. For example, PC-BSD somehow took a step backward by extending to five syllables, still all accented, and adding one more cacophonous sound. There is no fixing the PC-BSD brand. The only option is a new brand. However, DragonFly BSD can easily be fixed by simply dropping the “BSD” acronym as it is not needed. Alone DragonFly is a good brand. Brands that have dropped the BSD acronym such as m0n0wall or pfSense are adequate brands, not good, not bad. OpenBSD is as bad as PC-BSD with the added negative that the word “open” actually contradicts the security goals of the platform.

As derivative brand names go, Linux derivatives or distros are far ahead of FreeBSD derivatives in brand name quality.

The art of a logo

The logo is every bit as important as the brand name. Lets look at the FreeBSD logo, and the Red Hat logo and compare them.

Here are some logo tips that seemed to be common themes from dozens of sites about tips for making a good logo.

  1. Keep it simple.
  2. Make it memorable.
  3. Make sure colors coordinate.
  4. Make sure the logo has a black and white version.
  5. Color psychology. Avoid having the logo be mostly one color that may be negative.
  6. Don’t stray far from a simply decorated version of the company name.
  7. Make the logo an image that is pertinent to the brand.
  8. Avoid offensive images, even if only offensive to a small portion of the population.

One might argue that the Tux, the penguin, and Beastie, the devil or demon, are both part logo and part mascot so we will look at those, first.

 

Winner Linux FreeBSD Explanation
1 Tie Bad Bad Neither the penguin or Beastie are simple logos.
2 Tie Average Average Both are memorable
3 Tie Good Good Both have colors that coordinate fine.
4 Linux Good Average The penguin translates well to black and white.
Beastie is displayed as an outline.
5 Tie Average Average Tux is black, white, and yellow. Nothing great.
Beastie is red mostly.
6 Tie bad Bad Both stray from the brand name, probably
because they are more mascots than logos.
7 Tie bad Bad Neither is pertinent to the brand.
8 Linux Good Bad The penguin is nice and cute.
Beastie is a devil and controversially offensive. The reference to daemons and forks is lost on most people.

Ok, so neither mascot makes a good logo, but Tux does have a small edge over Beastie. Now lets look at the logos. I am going to use the Red Hat logo versus the FreeBSD logo, as Linux doesn’t exactly have its own logo.

Red Hat Logo FreeBSD logo

Winner Linux FreeBSD Explanation
1 Linux Average Bad Red Hat is two colors and is a complex drawing.
FreeBSD is a 3d sphere, it is more than two colors, red and black, as it has many different shades of red.
2 Tie Average Average Both are equally memorable
3 Tie Good Good Both are very well color cordinated.
4 Tie Bad Bad The color red makes both logos. Neither look as good in black and white only.
5 Tie Average Average Both have red and black. Not much difference.
6 Tie Average Average Both are an image to the left of the brand name.
7 Linux Good Bad Red Hat has a logo of a guy in a Red Hat, not pertanent to Linux but very pretinent to the brand.
FreeBSD has sphere with horns, and the relationship to a daemon is a stretch at best.
8 Linux Good Bad The Red Hat logo is a simple image, nothing offensive.
The devil horns comes with tons of religious history and is offensive to certain individuals, even toned down as a sphere with horns.

Using the same point system, 0, 3, 5 for Bad, Average, Good…

Linux gets 27 out of 40 possible points, or 67.5%.

FreeBSD gets 14 of a  40 points, or 35%.

After analyzing this, the FreeBSD logo isn’t as good overall as the Red Hat logo using the measurement above. However, I wouldn’t say the Red Hat logo is great either. I do think that just from a “looks and coolness” despite the rating system, the new BSD logo looks better.

What is being done?

FreeBSD recently updated the logo to the one you see above. There are no plans to improve the name, logo, or brand further that I know of.

Reason #3 – Licensing

Business and enterprise drive use. In my experience, business leaders equate open source software with the GPL license. I have heard so many companies say that they have banned open source software. However, every business leader I have educated in the different open sources licenses change the ban to allow BSD and similar licensed, citing that they didn’t understand the different licenses or the business and enterprise friendliness of the BSD and similar licenses.

Both the FreeBSD license and the GPL are great licenses. However, they have a slight different focus.  FreeBSD is a license designed to share code freely. GPL is also a license to share the code freely with the added enforcement that any code that uses GPL code is also GPL.

I have another post to discuss Differences between the BSD/FreeBSD Copyrights and the GNU Public License (GPL).

  • If you distribute binaries built using BSD Licensed source, there are only two things you shouldn’t do (you wouldn’t do either anyway).
  • If you distribute binaries built using GPL source, you have to pay attention. 1) your code may also be required to use the GPL license and 2) there are actions you must perform, such as provide access to the source and your source that uses the GPL source.

Businesses and enterprises often don’t understand that there are alternate licenses beyond GPL. Sometimes they actually prefer to buy commercial software just to avoid “open source”. We need to share how enterprise friendly the BSD license is with IT managers and business decisions makers.

I have seen this from personal experience. At a previous company, they mistakenly used GPL software and other software thinking it was free, forgetting that they actually have to perform actions in order to use this software. It cost them a lot of money when they were found out. The sad part is there was alternate  software available that was BSD Licensed, so they wasted money because neither the developers nor the business leader knew better. I knew better and they were quite shocked when I gave them a simple solution: Just use this alternate software as it is BSD Licensed. They did and it saved them a lot of money.

Even though I put licensing as the third reason, after thinking about it, this comes back to Reason #1 – Advertising again, because the main problem is that the GPL seems to be advertised more and many business leader are unaware of other open source licenses.

What is being done?

I think nothing is being done. I am not sure if there is any effort to advertise the benefits of the FreeBSD’s permissive licensing over other more restrictive licenses.

Reason #4 – A law suit early on

This was before my time, but I always hear that around the time Linux and BSD were released, BSD was sued and so people shied away from BSD because the threat of a law suit. This occurred well before I cared and if you want to read more about it, check out the wikipedia artcle.

http://en.wikipedia.org/wiki/USL_v._BSDi

I can’t prove that BSD was slowed by this, or that Linux wouldn’t have the same advantage in market share over BSD had this occurred. But every time I see a question about why FreeBSD is not more popular someone brings this up.

However, when Linux was sued by SCO, it didn’t really affect the market, so I am not sure if this was really valid or not. It is a historical possibility at best.

Reason #5 – Company backing

We know that in the early days of Linux there were multiple business who backed Linux. Then Red Hat and SUSE went enterprise. Ubuntu has Canonical.

For FreeBSD, Apple took it into their product but not as open source, and they didn’t really advertise the fact that they were partially BSD. iXSystems and some hosting companies are about all that FreeBSD has when it comes to an business.

What is being done?

Well, FreeBSD is continuing to get backing from Apple. I have heard rumors that Apple is one of the primary sponsors of Clang and LLVM (tools to replace gcc as a compiler) that uses a permissive license.

iXSystems kept FreeNAS a FreeBSD product by sponsoring it and has sponsored many booths at open source conferences.

I have heard of Yahoo being a strong backer of FreeBSD, though I am not sure of any recent examples.  But it is clear that FreeBSD needs more business backing if it plans to compete in the open source market with Linux.