Profile cover photo
Profile photo
Quint Stoffers
Tagline goes here, some day.
Tagline goes here, some day.

Quint's posts

Post has attachment
AppTracker is now available on Google Play

AppTracker lets you track for how long and how often you use apps on your phone. It uses an accessibility service for accurate tracking and minimal battery drain. It's very likely you'll simply forget it's running until you want to look at the gathered statistics.

AppTracker can also optionally integrate with QuantiModo , which is a service that's able to take the data AppTracker generates to correlate it with other variables you might track, such as calories burned from RunKeeper, or the number of mouseclicks from WhatPulse. QuantiModo is still in early stages of development, but I'm sure some of you will find it very useful.

We've been testing AppTracker for a while now, so I'm not expecting any major issues. I hope some of you'll find it useful!

Post has shared content

Post has shared content
Can you reproduce this one? If so, could you send a bugreport after it happens?
So... Was syncing some files between my phone and my tablet using " individual". The files transfer, but there is no indication that the files are transferring. Bug? I sent files to my ftp server and I get the speed graph, so I think it is just when I go device to device.

Post has shared content
Being one of Android's most iconic UI elements, the overflow has lead to quite some heated discussions. Recently an icon with round dots has appeared on Google Now and some other apps. While this is not yet to be seen as the standard overflow icon, we got a couple of requests for the alternative.

Here's a free, rounded overflow icon in 5 sizes and all 14 colors. (updated)

 If you don't have the full Android Icon Developer Set yet, get it from

Post has shared content
Glad this is getting some attention!

Post has attachment
Hello everyone,

I just published version of DataSync which among other things fixes the settings activity on Android 4.4. The update should be available for everyone in an hour or so.

I'd also like to let everyone know I took the beta label off DataSync Beta, and unpublished the original DataSync. Those who've downloaded the original in the past can still download and use it, but consider it unsupported.

In light of the foregoing I created the DataSync G+ community, where you'll be able to get support and answers to any questions you may have. The community will also let you get access to the future beta releases of DataSync, which will eventually include the file syncing changes I mentioned a while back, and a nice new UI by +Pol Kuijken.
The community can be found here:

From now on I'll be using my personal account for stuff not directly related to DataSync, so those who have me in their circles purely to stay updated on DataSync might want to move over to the new community.

Post has shared content
I remained silent about the whole Focal relicensing troubles for now. There was a lot of drama between the app being GPL, and the fact Cyanogen Inc wanted to use it, which drove some frustration between me, some CM contributors, and CM leaders. As a result, to avoid any problem, Focal has been removed from CyanogenMod. I think you deserve explanations and “behind the scenes” view on how all of this happened, and to know it’s not just a last-minute decision or ragequit.

This is the true, fully-featured story of the “Focal drama”. It's not a rant about how Cyanogen Inc is bad or anything (and it can be a good thing, with a few conditions, see at the end of the post), but just an insight on how this all happened, and how some people were and are feeling. 

A few months ago, I decided to work on an app to replace AOSP’s Camera app after +Steve Kondik  expressed concerns about the camera experience on CyanogenMod in a G+ post. I decided to take the challenge, and build up a camera app that would be up with users’ expectations: accessible and innovative UI, but fully-featured.
You all know how that worked out - the app has been out for some time now. I’ve been keeping the “internal” CM team (read: the CyanogenMod Dev private G+ group) tuned with my progress, releasing them mockups, screenshots and videos of the progress. Luckily, nobody ever leaked what it was, even with the big storm we started with the Nemesis trailer.

A few days before we started organizing Focal’s launch, I was approached by +Koushik Dutta  and +Steve Kondik . They wanted to talk to me about CyanogenMod’s future developments, that sounded cool. Koush told me in a video chat Cyanogen’s plans since he left Samsung: they found investors, and they’re ready to push forward Cyanogen Inc, a company selling services for CyanogenMod. At first, that sounded amazing, getting a few bucks for working on something I’ve been doing for free for some time. That would allow the student I am to get some stuff and get a kickstart for my future life. That would have given me the chance to spend more time on CM, as I wouldn't need to work elsewhere. Now, I didn’t have much information about what were Cyanogen Inc plans to make money, but I expected it to be through some kind of services - koush told me about CMID, which later became CMAccount, or other premium things like a one-click installer, or even a CMPhone. That sounded like a nice addition to CyanogenMod, leaving the community intact, and adding more value to the software distribution.
I had a similar chat with Steve, where he explained me some of the other aspects of Cyanogen Inc, his philosophy about it, etc. Okay, that sounds like a good plan, get me involved and enhance the open distribution I know and love. I have a few emails back and forth between Steve, Koush and me, talking about what I could work on, what I could enhance on Focal, etc. They’re telling me they’re looking into contracts, and I wait.

That’s when the “drama” started.

I got a Hangouts chat from Koush, saying that Focal would need to be relicensed because GPL isn’t ideal -- wait what, not ideal for an Open Source project?

“The issue is that we need to be able to relicense it”
“It’ll be open as GPL, but CM can do what they want with it.”

Yes, Cyanogen Inc. will need to do changes in CyanogenMod’s source code - because here’s another way they will finance the project: customization for their customers (e.g. carriers). This will imply the work done by the community will be sold to a third party by Cyanogen Inc, and that they have to do changes that they cannot put online publicly. A future conversation with Steve Kondik will reveal that they might need to put hardware-specific enhancement for some camera devices, and that has to be hacked in the Camera app code. Putting these changes inside Camera apps instead of Hardware Abstraction Layers (HAL) could break other apps, which ironically kind of go against the goal of CTS (because then, only the “official” camera app will have those enhancements). Of course, those hardware enhancements are trade secrets, so they cannot be published back to CyanogenMod’s public repositories...

So this is where I started to feel screwed. I didn’t think much further, but I felt like I had no other choice but comply with Cyanogen’s relicensing, and allow them to do whatever they want with my code, and sell it customized to their vendors. They used the Contributor License Agreement as an argument, saying that basically they could do anything with my code since I submitted it.

At the same time, the “” domain was discovered, and concerns rised about what the hell it was. People such as pulser_g2 started to find connections between, Kirt McMaster, Steve Kondik, Koushik Dutta, and all these people working at a “secret company” in a “secret location”. From ways I cannot even explain, he was able to come up with everything Koush and Steve told me, how they’d make money, and what are their future plans. Since he already knew everything, I told him about what was going on with Focal licensing, and he came up with the fact that this wasn’t legally right: the software is licensed as GPL, the repository on CyanogenMod’s github is forked from my GitHub, so it didn’t go through the Contributor License Agreement (which only applies to Gerrit submissions), and the Berne convention can prove through the commits history that I did fully write the app, and not Cyanogen Inc. - and even if the CLA would apply, it only allows them to sublicense the software, not relicense or dual-license it without my permission.

I didn’t want to be a jerk on that licensing story, and went ahead to resolve the issue directly in private with Steve. At the same time, other people such as Andrew Dodd (Entropy512) beginned to hear echoes about something was going on with Cyanogen, and heard about the GPL licensing issues around the time Land of Droid revealed the connections. He got really upset about that, getting only silence or vague answers from CM leads, turning around sentences.
That’s where they started lying to the community, denying they had something to do with, denying there was a commercialization of CyanogenMod going on. When people said “Why would Focal get relicensed?” they would just say “No, it’s not relicensed. It will stay GPL.” - yes, that’s where “relicense” became “dual-license”, where the app would remain GPL publicly, but still allow Cyanogen Inc to do what they want with it. But they didn't mention that publicly.

pulser_g2 raised some points on an XDA post that became quite famous, quoted by some news websites, and raised to the attention of some CM leads.
The official answer was: “Don’t interfere, don’t reply, let it go”

So, they didn’t confirm or infirm that CyanogenMod was or was not going commercial. If it wasn’t going commercial, they would have denied it. But here, they ask to “let it go”. Why not tell the truth? For them, it was better to just sweep it under the rug. But who was right in the end?

At that point in time, I still had no news about the contracts I was meant to receive weeks ago for working with Cyanogen Inc on Focal. I pinged ciwrl, who told me to check with koush, who told me to check with Steve, who didn’t reply.

At that time, they also started scrapping features from CyanogenMod. Device’s “Advanced settings” disappeared, without getting a proper replacement first. Some features aren't considered as useful enough, and didn’t make it into the new CMHW HAL. Even if users want something, they won’t get it if it’s not useful enough. Save to external SD disappeared as well from the AOSP Camera app, because it breaks Google’s CTS. Root access is planned to be COMPLETELY removed by default, and to be downloaded in a separate package. Users don’t use root anyway, they say. All of this because of a future CyanogenMod Phone, which has to pass CTS to get Google Apps officially. Want some exotic features? Too bad. You won’t get them if Google don’t. Wasn’t that the point of CyanogenMod originally? Derp.

That’s when my concerns started to raise about the community contributions. People such as +Nebojša Cvetković  contributed a lot of features to CyanogenMod’s launcher “Trebuchet”, and felt bad about not getting any reward for his work, when Cyanogen Inc. would make money out of it. Same concerns were raised by other maintainers and developers who contribute, or used to contribute to CyanogenMod. It was the last bit required for multiple people to leave the CyanogenMod development community, or for some users to simply stop using CyanogenMod. They didn’t know exactly what Cyanogen Inc was up to, but since the leaders would just lie to them to hide the truth, they felt let down. And it was clear from my chats with Steve that they had no ideas or plans, besides contracting everyone, to reward contributors. But they cannot just contract everyone, like nebkat as he’s not old enough yet to have a contract. Some other people just don’t want to be contracted, but still want to get a reward. It’s only recently that I told Steve that people would be totally happy with some perks (computer stuff, t-shirts, usb drives, devices for big contributors, etc.), and it seems like he didn’t think about that at first.

This continued for some time, until now. Cyanogen Inc is now public, and they revealed (part of) their plans for the near future. And a sentence struck me on most news sites that relayed the news: they talk about “Cyanogen’s new Camera app” -- what WHAT? So it’s Cyanogen’s camera app now? It not a CONTRIBUTION anymore?!  - They claim it's their app, and I still had no news about the whole licensing thing, even if I had the chance to raise the point a few times.
This was too much this time - I pulled the alarm. I first contacted +Abhisek Devkota  on why it was phrased this way, to be welcomed with a “You submitted it…” … Uhm, no, but he wasn’t going to argue with me, and told me to see that with Steve, which I did. After some chat, explaining how he could reward nebkat and other contributors, he told me that he was still waiting on me to “list my pricing, features and milestones for Focal” -- which I did, back on July 23rd. I never had any answer, seemingly because the “Focal drama started” and he got frustrated. From there, it seemed like Steve just wanted to stop dealing with it because “this is too much drama”. The exact drama part that bothers him? Well, some contributors weren’t happy about what Cyanogen Inc is. +Andrew Dodd really insisted and wanted to have explanations on WHY Focal would need to be relicensed, and why all this secrecy, without any real answer ever. 

And how does Steve deals with these kind of reactions now? Easy answer:
“Oh god please tell me the story. grabs popcorn

Well, here’s your story. And here’s how they treat huge contributors like Andrew, who aren’t big enough and don’t open their mouth with the right people. The most ironical thing? If they want to dual-license, it is to make non-open changes to the apps. So, we’ll need CyanogenMod for the CyanogenMod Phone, because the code shipping on the device won’t match the public code.

Steve’s argument to avoid rewarding people, is that people wants to be “retroactively paid” - but he doesn’t seem to understand that people contributed when CyanogenMod was still a project all about open source, that wasn’t removing features from the ROM, and that had no commercial intentions. Nebkat contributed a lot of stuff in the Launcher, which is a central component of CyanogenMod today. But he did it a few months ago, “before” Cyanogen Inc, so he doesn’t deserve anything. But Cyanogen Inc can sell it to his customers.
Entropy512 wanted to clarify that point for his situation, which is true for many other contributors: “Some people like myself contribute to the project to keep our minds sharp and it's rewarding in and of itself.  I make more than enough money in my day job.  If someone is planning on creating a closed source fork, which is the only thing that dual licensing enables, it is no longer rewarding.”

Now, don't get me wrong. Cyanogen Inc is a huge milestone for CyanogenMod, and I can only applaud Steve for the initiative and being able to get there. There are not only dark points with the company, far from that. There’s a big bright side: CyanogenMod will become more stable, and will eventually get more features (even if they’re not going to do anything against CTS). Device support might get enhanced, since they’re paid to work on it now (even if issues existing for a LONG time aren’t fixed). And users maybe will get official support.

But the community can feel let down at some point. People from external ROMs would have loved to contribute back to CM at some point. However when Cyanogen’s leaders refers to Paranoid Android or AOKP, they call it “that other ROM”. Steve, always saying “Go ahead and fork”, isn’t actually taking seriously contributions from other developers. And since external contributors know their contributions are going to be ignored, they just don’t submit anything.
I could go on and on with many other things, how the code review is done (or rather, not done), how submissions are just -2’d without explanations, how they criticize XDA users (yes, where ¾ of their user base come from), how they complain people don’t contribute, when they DID but the patch was ignored because the maintainer didn’t want it at that time, how unstable devices are tagged as RC/stable (without asking their maintainers ; Netflix won’t run on a “stable” build of CM for exynos devices), etc. But I’m not here for that.

At this point, on my end the issue is solved, Focal is pulled from CyanogenMod. It wasn't a last minute decision, it wasn't just because I discovered it just now. It's something that has been running for around two months, and the solution was only found yesterday after a long discussion, and because it had to be stopped quickly.
I will keep on improving the app, fixing bugs, and make it better. If it’s not in CyanogenMod, then it will find room in another ROM. The app is GPL, and I will put it up on the Play Store at some point.
I have plans to raise the awareness of the importance of Open Source, and how GPL doesn't prevent any paid work, and that that there are easy ways to keep the community happy with such a situation.
And at the same time, I wish the best to Cyanogen Inc.

Keep in mind: CyanogenMod wouldn’t be what it is today without its contributors. If you’re able to run CyanogenMod on your device today, it might not be only thanks to Steve, Koushik or Ricardo. There are hundreds of people behind them who pushed many patches, and enabled many devices as a hobby. Have you ever heard of them?

As some of you will hopefully remember, a while back I asked your opinions on open soucing DataSync. Today, I'm happy to announce that I plan to do just that in the near future. I feel that DataSync has more to offer, and I hope the open source community can help me with that. Since this will be my first experience with "managing" an open source project all help is greatly appreciated, hence this post.

I'm not entirely sure what to do with the current apps on the Play store. I'd like to keep the beta's package name, so that future updates can be made available there. I suppose unpublishing DataSync and DataSync+ would be best, so there won't be any confusion. The current beta would then be renamed to "DataSync", and all is well. As someone who has little experience with open source projects, I can use any help I can get. I do plan on using a licence that won't allow closed source or commercial copies, so all efforts will hopefully benefit the community.

You might be wondering, why open source it now? Well, a couple of weeks back I was contacted by the team behind Quantimodo, and I've been actively working with them since. I'll make sure to post about the project in the future, so keep an eye out if you're interested!

I'll write a more detailed post later. For now I'd like to hear your opinions and ideas in the comments, people who'd like to personally assist me are free to email me!

Best regards,

Version 4.0.3 of DataSync Beta should be available for download soon.
+ Syncs can be stopped
+ Improved Bluetooth/WiFi scanning
+ More reliable bluetooth/Android Beam implementation
+ Added settings to enable pure background sync
! Improved the way real-time syncs handle updated data
! Fixed force up/download behaviour

I rewrote DataSync's NFC/Android Beam implementation, it should be much more reliable and near instant when bluetooth is enabled on both devices. If you haven't used it yet I recommend you try it out!

Post has attachment
I just updated DataSync Beta on the Play store, so you should all be able to download it soon!

Release 4.0 brings a brand new syncing algorithm that only syncs an app's changedfiles. It's faster, much more efficient and overall a whole lot better than the previous solution. The new algorithm also brings two-way syncing to the free version of DataSync to prevent possible confusion. DataSync will alert you in case of a conflict, so you still have full control of your data. File warnings are still in, and show a worst case size. Thanks to on the fly compression actual data usage is often much lower.

Existing backups aren't compatible, so make sure you re-sync important applications if you use clouds. The settings menu has a new "clean clouds" entry to get rid of old backups.

The new algorithm also allows for some neat new features like incremental local backups and per-app file management, both of which will be implemented in future releases.

EDIT: Some have emailed me regarding "useless" files being synced, so I thought I'd clarify a couple of things regarding the new algorithm and how it differs from the previous solution.

Previously, DataSync would check if an apps data has changed. If that was the case it would create an archive containing all appdata and sync that. That's horribly inefficient, and wasn't working for some games that stored progress and game data in the same location.

The new algorithm checks each file individually, and compares it to what files are stored on the other device or the cloud. When a file is out of sync, only that file is synced and it's timestamp will be copied over. This approach has a couple of advantages:
- Timestamps are equal across all devices, allowing cross-cloud/device sync
- File info can be stored in the cloud
- Syncs are faster and consume less data
- No need to cache a large archive before syncing

The initial sync will sync all data to create a mirror on the other device or cloud. In the future only modified files will be synced, so there's no need to worry. I can (and already do) filter files by extension, so feel free to email when you spot extensions that can be filtered!

Also new is Drive integration, including automatic list synchronisation. Drive sync is currently limited to apps, something that'll change in the future.

Notable other changes:
+ Various UI improvements for large devices
! Fixed bug causing apps to uninstall
+ Faster realtime sync
+ Added time-based scheduled syncs
+ Improved Box auth

Alpha testers here on G+ have been great (thanks everyone!), so I expect this release to be quite stable. As usual, contact me if you spot a bug, and make sure you send those crash reports! 
Wait while more posts are being loaded