Rooting and Me

These are my views and experiences with rooting based on my Motorola Droid (OG) and my shiny new Galaxy Nexus (GNex). I’m not going to define every term, as there are plenty of articles out there for the uninitiated. I’m just going to cover my perspective.


Installing a custom ROM

I went to a build of CyanogenMod over a year ago and never looked back. Tried a couple others, but always missed some of the features from CM. Ice Cream Sandwich is glorious, and so far I only have one or two features I’d like to change. I’m sure I’ll be looking in to other ROMs once there are ICS-based builds, but I’m not in any hurry.

Moving app installs to the SD card

This was critical on my OG, since the internal memory was so tiny. I constantly struggled with storage limits until I rooted and was able to Apps2SD a lot of stuff. Downside: apps on the SD took a little time to load after boot. The GNex only has one storage location and it’s much larger, so this is moot.

Removing bloatware

The OG didn’t come with much installed on it that I recall. Either way, I didn’t have any bloatware once I started using custom ROMs. On the GNex, ICS gives the ability to easily disable individual apps so I’m not bothered by the 2-3 things Verizon gifted me with.


I was able to get a little more oomph out of my OG Droid by cranking up the cycles. I didn’t do this until I was overdue for an upgrade and nearly went crazy waiting for the right phone. The Nexus is much faster, so I haven’t thought about trying to slap nitros or flame decals on it yet.


Once you’re rooted, the biggest way to upset your carrier is tethering. They want to charge you $20-40 extra per month to check a box and let your device run software that’s already on it. Since you’re already paying for the data, this seems a little extreme. Yes, connecting other devices can increase your bandwidth consumption, but that’s why they stopped offering unlimited bandwidth plans. Anyway…

3G isn’t exactly broadband, but it works when there aren’t any other options. I had a few times where tethering participated in a personal bacon-saving operation, but mostly I didn’t use it. With 4G… I’m actually quite interested in bonding larger screens to the broadband-comparable speed of Verizon’s LTE. I haven’t actually tried yet, but this is one of the projects on my list.

More control over data

From the age of 10 (when I was asked if I preferred my beige 386 or my Powerbook 100), I’ve always preferred controlling my own devices. The primary way I mastered my phone’s data was system level backups, most of which are only necessary because I was doing other rooty things. I’ve also gone rummaging around in the Linux-y underbelly of things, just because I enjoy reading config files.



Until a particular phone has a SuperOneClick method for rooting, the process involves installing drivers, arcane console commands, and sideloading update zips. If you aren’t already an expert and you don’t find a good guide, it can feel like trying to navigate with only a US landmarks placemat for a map.


If you do it wrong, or neglect to take proper precautions, you can cause problems. Contrary to popular belief, it’s at least slightly difficult to render your phone completely unusable. In general, expect the rooting process to factory reset your phone, and don’t be afraid to do a manual factory reset to get to a known starting state instead of fiddling with things until they maybe work. If you’re not comfortable with the process, read a lot of threads where people are resolving problems with rooting your model of phone. Familiarity with the issues helps a lot.


Void ALL the warranties!Rooting your phone typically voids ALL the warranties. For some reason, phones are apparently much more susceptible to physical damage from software than your typical Dell. /s
I’ve never had to get a phone replaced, so this seems like a minimal risk to me. I’m sure someone out there has a horror story about how they unlocked their phone and it exploded not 5 minutes later costing them $699 in out-of-warranty replacement plus medical expenses.


Most other issues are side-effects of whatever you do with superuser access. Overclocking can cause overheating, leading to loss of battery life or even CPU burnout. Installing banned apps or excessive use of tethered data can lead to angry carriers. As with any computer, fiddling with things you don’t understand can easily cause instability, slowdowns, or non-trivial incidents involving fire.


It’s not a conclusion because I find taking control of a device I own to be justified, satisfying, and generally helpful. I learned plenty about Android in the process, and much prefer the thrill of working with a safety net that I set up personally over the comfort of a padded room.


Open Source Licensing and You

This is the story of why I changed licensing on my first open source project from the Common Development and Distribution License (CDDL). If you have no interest in software licensing, just read the bold parts.

I had a brief chat with a friend of mine this morning that went something like this:

Friend: AutoConfig appears to be distributed under the CDDL license. It reads like “do whatever you want, but give back your changes.” Intentional?

Me: Yeah, it’s what I thought sounded best when I started the project. Maybe it’s not?

Friend: Our lawyers will need to approve that before we can use it. If we need it, can we get a letter with special licensing?

Me: Sure… I’d hate for all that to be necessary, though. Let me do more research.

Originally, my intent was to allow as much free use as possible, while trying to get any improvements back into the code. I did some research and found a lot of debate about “free” and a few reviews of specific licenses. I finally got the most help from a ZD Dev Connection blog article that asks some simple questions and tells you which license the author would recommend. It told me that CDDL fit my goals of maintaining some control over use/distribution, allowing use in non open-source programs, not claiming rights to licensing fees or royalties, and requiring improvements be returned to the code base. Good enough! (Except not really.)

After the discussion with my friend, I went back and did some more reading. CDDL was more complicated than I wanted to force people to read, and requiring return of derivative code can be somewhat scary, especially to corporate lawyers. What I figured would be the best reference was almost entirely unhelpful. The Open Source Initiative provides the text of all the licenses, and breaks them up by mostly helpful categories. That’s good if you’re a lawyer or some sort of clause parsing bot. I got about 3 paragraphs into the Apache license before I decided that this was not my intent with releasing code. I don’t want to make people worry about licenses or read legalese. I want people to take what I publish and find it helpful in some way. Maybe it saves them the time of developing a similar component, or they learn something, or they submit an improvement and I learn something

One of my favorite software personalities is Jeff Atwood, and he weighed in on open source licenses in 2007. Summary: He hates all this at least as much as I do. He prefers the very-permissive WTFPL which is, sadly, not an option on CodePlex. So, I investigated the most common options until one leapt out at me as simple and open. MIT is short and to the point; the key phrase is “deal in the Software without restriction.” I’ll probably use this as my default in the future, and only look at other options if I think I can and should make a bunch of money from something.

∞ Jeff

new Blog()

It’s becoming more apparent to me that I want to be the kind of coder that has a blog and publishes code. I’m starting to get more involved in the programming community, as I realize more just how important the community is both to the craft and to individual development. For starters, I’m going to be working on establishing a public presence and hoping I can make a difference for at least one person.

Exhibit A: My first open-source project, and my first NuGet package.
If you ever write .NET classes that access configuration values, this will almost certainly make that easier.

%d bloggers like this: