Wednesday, December 7, 2011

Developer burn-out and addiction

Those of you that follow my twitter have likely noticed that I've become more hostile online. I'm frustrated and annoyed. I'm suffering developer burn-out. I've put in over 300 hours on TWRP 2 in the last 4 1/2 months. That's 20 hours a week, on top of my 40+ hours a week at my regular job. It was fun when I started, but Android is an addiction to me, and TWRP only makes that addiction worse. In 2011, I've spent over $4,000 on Android devices (not including accessories or phone/data plans). Recently, that addiction to porting onto new devices had me order a Galaxy Nexus, out of pocket. That probably tipped some of the stress, because instead of spending that money on my kids and wife for Christmas, I spent it on another Android device.

Four months ago, working on TWRP made me happy and helped me relax. It doesn't anymore. It's been in a crunch to get done since October, and as the hours add up, those are hours I'm not spending with family. Now, what makes me happy and helps me relax is playing with my kids and seeing them smile. But I'm always exhausted from the long hours of programming and debugging. And like everyone, Christmas is a strain on the finances, especially when I keep buying devices. So in an attempt to make up for it, I tried offering up a way of donating towards getting the software released for the device. That got ridiculed to the point where I pulled the plug on TWRP 2 on the Galaxy Nexus entirely, with my wife having the only copy of TWRP for the device.

Couple this with all the drama going on in the forums and on twitter. I'm going to be blunt to everyone. Shut the fuck up. I don't care. Really. I don't. You don't pay me to care, I don't care. If someone wants to beg for donations, more power to them. I don't care. I don't have much faith in the community as a whole, and that comes from being over on XDA and getting burned pretty heavily on my HDMI work. We received less than $500 in donations for that work which we gave away for free. The trolls in the forums were enough to make me leave XDA entirely. That means you, bradleyw801. Where was the community defending the developers who were giving away their shit for free then? Oh yeah, they were busy that day begging other developers for more free shit.

How many people are using TWRP 1.0 or 1.1 and have actually donated to the time that the developers put in to release it? But you think nothing of dropping $0.99 on a random app on the market which takes a fraction of the time to develop. Why do I have developer burn-out? Because I'm good developer. I care about the quality of my work. I care that people want the code I'm working on. And I just wish I could do this stuff for a living. But I can't. I have a family to support. I want TWRP to run on all devices, and I want people to be excited. But it's hard to be excited when I'm surrounded by politics, be it on Twitter, XDA, or even within TeamWin.

So where does this leave TWRP? Dees_troy is taking the lead on getting the devices which already work out the door while I back off and re-evaluate my reasons. My only obligation is to release TWRP 2 for the Epic Touch 4G, because RootzWiki was kind enough to provide me one just for porting. And I take that obligation seriously.

Monday, November 28, 2011

Supporting devices in recovery...

So I (Agrabren) commonly get asked why we're not "finishing up TWRP" and instead, are supporting more and more devices. So let me explain how this helps everyone. For starters, the TWRP team is not just one person. The core of the UI logic has been done for a while, but there is still a lot of little things that need to be tweaked and tested, all of which are happening every day. It's also very important that a recovery system be robust and stable. This isn't some run-of-the-mill app that you can re-launch every time it crashes. This is recovery. Too many times, a push to release before it's ready leads to bad software that doesn't do what it promises to deliver. In the case of recovery, this can be unusable backups, inability to flash custom ROMs, even hard-bricking a device. So there's no room for an "almost works" recovery. It needs to be tested and it needs to work flawlessly.

So why aren't we just focused on testing? Because a good portion of the design is towards robustness. The small number of devices we have (compared to the number of people intending to install TWRP 2 when it releases) means that we can't possibly verify every file system on every phone in every configuration that everyone has. That's not a reasonable exit criteria. So instead, we have to test as best we can with the limited devices we have. We pick out a few custom ROMs and the stock ROM, and we flash between them, we backup, we restore, we wipe, etc. But to help ensure robustness, we can spread our testing across multiple device types. Because the engine remains the same, it's being tested against different partition sizes, different nvram types, new ROMs, and more. This helps us ensure the experience you get on your (insert your supported device here) is as stable as we can make it. It's not just to "get on every device". It's to fully support the devices we run on, and feel confident that we're not going to leave you stuck in a tree.

(Please note: This does *not* mean we take any responsibility if we brick your device. Like every recovery and custom ROM out there, we take no responsibility for what happens with your device. What it *does* mean is that we care about it. This is more than a hobby to me, it's also my reputation as an android developer (and to some extent, a developer in general) that I'm putting out there. And I'm sure I'm not the only team member who feels this way. I just won't speak for anyone but myself. I take pride in what I do, and I take pride in what TeamWin has allowed me to be a part of. I have no interest in making any of the team look bad.)

Friday, November 11, 2011

Starting down the road to TWRP 3...

Even thought TWRP 2 isn't even out yet, plans are being made for TWRP 3. Like the movie industry, with it's constant rebooting of franchises, TWRP 3 is a reboot of recovery. Hence the blog name, rebooting in recovery. While working on TWRP 2, I realized that trying to build a recovery system based on the AOSP recovery engine has severe limitations. So instead of continuing to try to hack around these problems and find new and creative ways to patch it, we're starting from scratch. I've appointed myself the primary architect for TWRP 3 (as nobody else was jumping up and down to do it) and I'm going to use this blog to help keep the world in the loop of the design and development process, as well as the requirements we're setting, the design decisions, the limitations or problems we encounter, etc. Occasionally, I'll likely also use this blog as a place to spout off about random Android things, and rarely, non-Android stuff. At first, it will be slow, because we're wrapping up TWRP 2.0... But I expect things to pick up shortly.

So welcome aboard, and enjoy the show.