When you think of source-based ROMs and development, the first word that comes to mind is probably Cyanogen. However, he is not the only developer working on ROMs from source. In the far reaches of the Android netherworld lurks a team of Droid developers who are trying to do things never attempted previously, and that includes Cyanogen’s team. Today, I would like to introduce you to the brains behind this team: Cvpcs and Sniffle. Although Cvpcs and Sniffle may not yet be household names, the features they are working on will blow your mind! And because of their cutting-edge innovations and cleverness, Cvpcs and Sniffle are slowly gaining a stellar reputation in the Android community. From VIXIE-Cron and Scriptybox to Nano text editing, from Sapphires to Rubies, find out why their Sapphire ROM will fall in love with your inner geek within!
Tell me a little bit about your development team.
Cvpcs: We call ourselves the "sapphire team" at the moment, but that is simply because the name of the ROM is sapphire. Actually we haven't worked out a proper name for ourselves, because we hope to support multiple devices, each device being named after a different gem. The team consists of three. Me, Sniffle, and mayh3m (who helps out with testing and support). p3droid put a lot of work into making what he recently told me were probably his best kernels to date, and we are extremely grateful. He's not technically on the team though. he's more of an independent contributor.
Sniffle: p3droid would be considered honorary, for sure.
How long have you been working on the Sapphire ROM?
Cvpcs: Since mid-to-late April.
How are responsibilities divided between the two of you?
Sniffle: At this point honestly i do public relations/releases and handle a lot of the server uploading for releases. Cvpcs does most of the coding and building. Although i did get the Incredible vendor setup working.
Cvpcs: yeah, Sniffle also helps out with testing and helping me track down bugs.
Considering the abundance of “source-based” ROMs available for the Droid, what makes your latest FroYo sapphire ROMs stand out?
Cvpcs: The most important aspect of sapphire is that it is built from scratch, and not based wholly on Cyanogen's work. When sapphire was originally conceptualized, there was no real information out there on how to build an entire source-based rom from scratch. All existing guides used Cyanogen's work to build off of, and the goal of sapphire was to build a ROM that didn't depend on that, as well as to document how it was done. Another large difference is that Sapphire takes a stance that if it can be avoided, we don't modify AOSP source.
What is the benefit of avoiding modification of AOSP?
Cvpcs: the benefits of this are two-fold: 1.) we don't have to re-merge as much when there is a major update to Android, and this allows us to release faster than others with less effort. 2.) AOSP is stable in and of itself, and modifying it brings about a potential for new bugs to arise. By avoiding that, we have created a ROM that, in spite of some minor quirks, has gotten many reviews as being incredibly stable. There are of course the minor feature sets that Sapphire provides, some of which are available in other ROMs and some of which aren't, but for those, i typically leave it up to the user to try them out and make the decision for themselves.
What are these “minor features” that Sapphire provides?
Cvpcs: FLAC music support, Reboot recovery option, Customizable text colors, Disabling of USB Debugging notification. 360 degree orientation would most likely be one as well, but i haven't myself applied such a feature. Sapphire is not afraid to modify AOSP, but we like to try to avoid it if we can. We have our fair share of modifications to framework as well, and will likely make many more in the future, but will opt out of it when we can.
Sniffle: The most notable i would say is the reboot recovery option... which has never been enabled in any other mod.
Cyanogen's work has dozens of contributors, and has been worked on for years now. How does Sapphire compete with that?
Cvpcs: Cyanogen's work is fantastic, and has been a very good source of inspiration. I will admit, that there are some features in Sapphire that were borrowed from Cyanogen. Whenever we use some of their work, we make a note to prominently document in the sapphire changelog. Typically, when someone requests a feature that is already offered in cyanogen, i take a look at how cyanogen implemented it, and see if there's anything that could be improved upon or if it could be done in a different, more effective way. If I find a better way to do it, then i do it that way, and credit cyanogen for the base idea; however, if there is not a better way to implement it as far as I can see, I will not hesitate to provide the feature and give kudos to Cyanogen. It's my opinion that I will not make a feature's implementation more convoluted simply for the sake of saying that it is my own. Users want a good product, and it's important that they get the best.
Sniffle: there's nothing wrong with taking open-source code from one build and using it in another so long as you give credit where credit is due... the key to making it different from everyone else is to add to what is available making it that much better, not just copying it outright.
What features that are unique to Sapphire make you most proud?
Cvpcs: Reboot Recovery (added in Power Menu) and Scriptybox
Sniffle: Reboot Recovery option
How does Scriptybox stand out from the other script implementations in other ROMs?
Cvpcs: The great thing about Scriptybox is that it's all self-contained in one place. Essentially, there is one file, named Scriptybox, and you create symbolic links to it. Depending on the name of the link, the script will do something different. Also, because it's all self-contained, it has knowledge of what all of the scripts are. Simply typing "scriptybox" will cause it to list all of the various commands it supports, rather than having to go around trying to find a script. We will probably still be implementing a graphical interface to Scriptybox in the future, but it's still on the drawing board for now.
Any scripts unique to Sapphire?
Cvpcs: switchapk is quite unique in its operation. Unlike other switch scripts that require you to download apk files to your SD card, switchapk actually downloads them itself, directly to your cache partition. It then verifies the download using various hashes, and only after everything looks okay, installs the replacement app to your system.
Now onto the command line tools. Vixie-CRON low-level task scheduler, this is unique to Sapphire? And how does it work?
Cvpcs: Vixie-CRON is a common CRON daemon found on most Linux systems. It's essentially a system task scheduler. The reason it's in Sapphire is because, it has been my experience that task scheduling is a bit unstable for the droid. It seems that apps that are supposed to run periodically (say one to download my podcasts in the middle of the night), don't always follow suit. Vixie-CRON is guaranteed to run, however it does come at a cost. Instead of piggy-backing on system calls like the android system does, it runs constantly. It sleeps and then every minute checks if it should do something. This can cause a strain in battery life, though i haven't tested the repercussions myself yet. For that reason, it is disabled by default. Vixie-CRON will only start up if it has something to do.
How would the end-user set up Vixie-CRON?
Cvpcs: Essentially you have to create a specific file in a specific place, and reboot your phone. During the init process, sapphire checks if the file exists. If it does, then it will start Vixie for you. iIf it doesn't, then it won't, as Vixie would have nothing to do anyway. The schedules need to be modified by hand at present.
Now onto the nano text editor. How does it work?
Cvpcs: nano is my favorite text editor. I actually code most of sapphire in it . I simply HAD to port it to android.
Sniffle: same with bash too...
I’ve seen Bash on other ROMs, but nano text editor seems to be unique. How are these implemented in Sapphire?
Cvpcs: Unlike some other ROMS, our versions of bash, busybox, libncurses, nano, etc, are all built from source at build-time. They are not “pre-builts” that we simply copy in. This allow us to have more control over them, as well as make them slightly smaller in disk size. It's also handy for modifying build features. For instance, since we have the source for bash compiling, at any time we can change where it will search for its .bashrc file when it loads. We also can change how nano will act when it loads up, such as enabling syntax highlighting and things of that nature. A lot of the great things about sapphire people might not see in the foreground, as a lot of it is done behind the scenes.
What about modprobe? Is this unique to Sapphire?
Cvpcs: modprobe simply makes it much easier to load and unload kernel modules. I have seen many scripts that use "insmod" to load various kernels for file-systems and whatnot at boot time. The problem with insmod, is that it's very static. Sapphire has a boot script that runs a module dependency check so that a program called modprobe will function properly.
What does that mean to the average user?
Cvpcs: if you type "modprobe <some module>", modprobe will figure out what dependent modules are needed and will load them up for you. In all honesty, the average user will probably never use it directly, but it does give some nice implications to keeping a system running smoothly. For instance, when a user enables "compcache", it technically must also load the lzo_compress and lzo_decompress modules before loading the compcache modules. Every module takes up system RAM. With modprobe, when the user shuts off compcache, modprobe can tell which modules it loaded that are no longer needed and will auto-free up that memory. modprobe is more of a feature for developers, to make writing scripts and mods much easier, at the added benefit of providing the user with a much more stable experience.
Now for some background info. Sniffle, i remember you from months ago developing source ROMs on Alldroid.
Sniffle: :-) Sadly yes that was where i cut my teeth… And they were pretty jagged then.
Do either of you have formal training in programming/computing?
Sniffle: No... more like pig-headed determination.
Cvpcs: Haha, absolutely not…we wish.
How did you two get started in developing for Android?
Sniffle: I was told figure out how to build android from source, by ReverendYo. We were working on making the Alldroid Community Rom from scratch instead of the usual copy/paste roms. It took me a month to get it figured out and compile totally. Once i got it figured out i wrote the compiling guide.
Sniffle, you went from the Alldroid Community Rom (ACR) straight to Sapphire?
Sniffle: Honestly, once the ACR fell apart, i helped ChevyNo1 get his build compiling as well as several other droid rom producers, like sneaky_zeaky, Jrummy, Boostdscoob, and P3droid. I'm the type of person that people ask questions, and i respond to the point i have to make myself stop, so i can go to bed.
How about you Cvpcs, where did you get your start?
Cvpcs: I got my start by porting various libraries and apps from PC to Android to try to see what crazy things i could get my phone to do.
Porting libraries and apps to Android.... how did that evolve into developing ROMs?
Sniffle: Cvpcs asked me for help. Now, he knows more than me.
Cvpcs: Sniffle was my lifesaver when it came to understanding the build process. I sought out Sniffle because i was following his guide and he seemed like the best bet at answering my questions.
And where did you two get paired up?
Sniffle: We met when the mini forum popped up, after the plug was pulled from the old Alldroid. At Android-hackers.net, which eventually became the new Alldroid.
The Motorola Droid was the first phone you developed for?
Sniffle: Yup... the Droid was my first smartphone.
Cvpcs: Yes, the droid was my first smartphone as well.
What future plans do you have for Sapphire?
Sniffle: Expanding :-D
Cvpcs: I'd like to see wider device support. I also have some big plans for features in Sapphire, but I'm keeping those more under-wraps for now.
Sniffle: I can think of a few things we have in the works, the biggest thing i would say we are trying to do now is work on a release called Ruby. Ruby will essentially be Sapphire for the Incredible. We will be changing to a blanket name for the group, and the individual devices will be their own gems.
Are you currently working on ROMs for any other phones?
Sniffle: Not yet but i know what we want... evo, droid x, droid 2, and anything else we can get our hands on :-P
Cvpcs: the hardest part is getting the hardware . We have to have someone willing to risk bricking there phone... or the cash to buy one.
Tell me a little more about yourselves.
Cvpcs: My name in real life is Austen. I’m 23. I live in North Dakota, and work as a software developer for an aviation company specializing in black-box recorder hardware. I am also a college student, computer science and math dual major. I work full time in the summer, while attending school in the fall.
Sniffle: My name is Todd. I’m 26, and live in Birmingham AL. By trade, I am a respiratory therapist, but I am starting school this fall for a computer science degree.
What do you think of the current state of Android?
Cvpcs: I think Android is the most promising new OS to come out in a decade. I can't imagine it losing speed any time soon. It's unique, it's useful, it's innovative, and the best part... it's open
Sniffle: Ditto... I don't think i could say it better.
What about the current state of ROM development?
Sniffle: To me, the state of Android development is kind of poor... well it was till we came along. For the most part, you have CyanogenMod. We're trying to change that.
Cvpcs: Agreed. There are a lot of ROMs out there that simply roll together lots of features from a lot of places, but don't do any actual development. That's perfectly fine, but it doesn't advance anything, and development remains stagnant. I think that things are just starting to heat up, as people are becoming more interested in source-based ROMs than they ever were in the past.
ETA on a Ruby release?
Cvpcs: No ETA. Ruby is too up in the air.
What other hobbies do you have, aside from android?
Sniffle: Video games, animals, and my wife. I just beat emerald weapon yesterday legitimately on FF7. As for animals, I have 7 ferrets and 4 cats.
Cvpcs: I'm big into music. I play the piano, guitar, and F horn. Also, I love to go camping.
What are the Android apps you can't live without?
Cvpcs: SetCPU, AndChat, Connectbot, SNESoid
Sniffle: Messaging Widget, AndChat, SetCPU, MangaStream
How can users contact you?
Cvpcs: twitter: twitter.com/Cvpcs, paypal/email: Cvpcsm@gmail.com
Sniffle: twitter.com/snifle – twitter, firstname.lastname@example.org - email
I would like to thank the two of you for a fantastic interview. I'm proud to currently be running your latest ROM, Sapphire 0.8.4, am extremely excited for your upcoming releases!
Full list of Sapphire features and download link here: start [CVPCS Sapphire Wiki]
Sapphire support forums/discussion here: cvpcs - Droid Forum - Verizon Droid & the Motorola Droid Forum