[Java for Android App Development] ExoComet:
While I agree with you that the "always online" model doesn't make sense for certain types of simple apps, and probably shouldn't be blindly forced onto every single game by a console or gaming platform like xbox, my point is that for many other types of games and apps the "always online" model is very reasonable and in fact has proven to be accepted by users. If you don't agree with me, read on and I'll both explain and give examples of apps that are *VERY* strongly DRM'ed with an "online only" model, but where probably no end users even think about the game or app as being DRM'ed, and would *never* complain about the requirement to be online.

If all I'm building is a simple calculator app then I probably am not going to be making a decent living as a software engineer ;)

As a software developer building one-of-a-kind, unique, highly complex apps and games that are well liked and in high demand, and if these games and apps are your sole source of income (or the income for your business if you are running a corporation), you would be foolish to not at least consider using an "online" based exploit/piracy/copy-protection/DRM protection (or whatever you want to call it).

The reality is that many of the latest extremely successful games have been cleverly designed to include very appealing features that are online in nature. Users don't even think of these "features" as a DRM mechanism, because they love and are addicted to these features. So, they are very happy and don't even think twice about the "online” requirement for the game.

It might be the case that the game still functions if offline, but that these "features" aren't available. That's up to the developer, and probably worth experimenting with to see if there is a difference in sales and user engagement depending on how it's done.

By "online" features I don't at all mean something like a "real time" MMORPG. It can still be effectively a single player game. Examples of such types of features are:

- Any type of social networking feature.

- Realtime awards, trophies, online leaderboards, prizes, etc, that your friends and competition see.

- In-app purchases in general.

- Storage of assets that are related to in-app purchases on the server. For example, most users won't think twice about their "gold" being stored on the server in an RPG if they can buy gold in game using real money. Unconsciously, they think of the gold being stored in some type of online "bank account" and this won't bother them.

- Creative features that allow for some level of interaction with other players.

Many of the most successful game developers today very deliberately design these types of features into their games, but they would never speak out loud that they have "DRM" on their game, since that's a bad word. And *almost none* of their users think of the game as having DRM.

I do agree that this is a bit more tricky for productivity apps, as there is no obvious reason the user can see for a requirement to be online. However, if it is a *very expensive* type of productivity app that is one of a kind and tends to be used in corporate offices, etc, "online only" will not be a deterrent and I believe you will make more revenue if you protect the software from piracy. If it's a more run-of-the-mill and cheaper sort of app, then YMMV.

Still, even with productivity apps you can come up with creative ideas for features that require users to be online *at times*, which will be accepted by your users. For example, look at Evernote. I can't use a pirated version of Evernote “premium” if I want to share my notebooks with my colleagues, and I have to pay money for the premium online collaboration features. But, I can also use the free version in offline mode if I just want to write my own notes to myself.

So, my advice is to "think outside the box" to come up with features for your games and apps that require internet access but which your users will love (or badly need), and as part of the internet based API calls you use to power these features to do license verification using Google's licensing servers.

Of course, if your online API calls for these features are slow or if your servers are down this is going to be very bad. That's why I spent so much time to build a very robust massively scalable platform for my game’s online API calls, which even includes a mechanism that will thwart DOS attacks on my servers.

As I mentioned, I'm happy to share my platform for doing this with everyone if people are interested. I truly believe that using this type of rock-solid online protection mechanism in "intelligent" ways would be for the benefit of the entire development community, from the smallest indy developers to very successful devs grossing millions from their games. I don't agree with anyone who argues that piracy isn't hurting developers, and I've yet to see someone provide concrete evidence for such an argument.

Simply put, incorporating interesting, creative, and unique features that are only possible if you have some type of online social networking or multiplayer aspects to your games or apps will actually make your software better and your users more engaged, and you will sell more licenses just for this fact alone - and that's on top of selling even more licenses since nobody wants to use a pirated version where the cool online features don't work. If you already have such online features, *of course* you are also going to want to do a license check against the Google license servers. Why wouldn’t you?

Let me know if anyone would like me to share this platform with the community. I'm not going to waste time writing documentation for it and bundling it up so that it can easily be used by people other than me if nobody understands what I'm talking about and nobody is interested in using this technology.