[Galaxy S III Android Development] JustArchi:
The problem of people nowadays is the fact that they destroy their own system intentionally, then blame the ROM for all their problems.

If we look at google services for example, what are they? A bunch of closed-source apps that SHOULD work on android platform. Now if they don't work, it's a problem of android platform, or application itself. If CM12 is based purely on Android - AOSP, and google app doesn't work as it should, then it means that the problem is in poorly designed app, which is not possible to work under certain circumstances and flaws on specific android platform. Android is not perfect, it may look like it works, but it's just a thousand of pieces glued all together, if something breaks, everything will ruin.

Some people blindly restore their apps and data from other systems, and they can't see any problem with it. Poorly designed app may not work properly with data that was created BEFORE certain update was introduced. If Lollipop introduced a new way of doing something, and application is doing this thing in old way, which is incompatible or at least not fully compatible with the new way, it IS gonna break, sooner or later.

We're not fixing android here, we're not fixing the framework, we're not fixing the android runtime. We are fixing android's support for i9300 device. Long sms issue was related directly to the RIL, it didn't work, because our RIL had exactly the same problem as incompatible app has - it worked the old way, and didn't want to work in a new way. What we did? We added a workaround number #72381128293 that fixes the issue by implementing a new way that utilizes the old working way, making certain thing work in new environment.

i9300 does NOT support android platform well. It never did, because Samsung's policy denies any developer like me access to their proprietary sources that include the support for their platform. It's like working with a big blackbox, you put a cup in the front, and you get a cup of coffee from the back. You have no idea what is happening in between, you have input and the output. Now, when it works, it's nice, we're getting the effect we want, alright? The problem is when it doesn't work. We put a cup in the front, but the cup is too small and black box isn't working properly for it, so we get empty broken cup as the result, which is not the cup of coffee we want.

There is no software that is flawless. Software is designed and written by humans, humans are making mistakes. Even Google fuc*ed up their early lollipop release for their own devices - nexuses, which had various memory leaks, didn't work stable enough, and even wi-fi had several problems. You can say "well, it doesn't happen on iOS or windows phone...", you're wrong. Every operating system has it's problems, the question is how well they can hide them from the users, or catch the exceptions and handle them without interruptions. Developers design software that should work properly on certain hardware. If you know how certain hardware works, it's easier to spot problems, fix them in proper way, and make software run better. When you don't know how hardware works, you have no documentation and all you have is black box with the input at front and the output at back, fixing anything in proper way is impossible, and all your fixes are usually either workarounds or hacks, to make broken things work, without understanding what was broken in the first place.

This is the case with i9300. Some great developers such as Paul Kocialkowski reverse-engineered some parts of the black box, allowing us to fix it or modify as we please, but big majority of things that we need are impossible to reverse-engineer, due to complexity. For example MALI blobs or a modem. If google suddenly changed the way Android utilizes the GPU, making old blobs not working properly, we had no idea how to workaround/hack it, and Samsung didn't release new "blackbox" to fix this problem, we would have NEVER make working release. There are certain things that must stay the same to make support for certain device. If something changes, like RIL, it's the question how fast, and if, we will spot the issue and fix it. There are no assumptions, you can't assume that everything will be fixed at some point, because this statement is already false with samsung's policy - things like screen mirroring, support for Samsung's TVs and certain other highly-proprietary things will never work, until Samsung's policy changes. It's not like they can't work, they certainly do, the problem is that there is no developer that will even TRY to make it work, because the amount of knowledge and catch-and-try fun is too damn high to finish in the next couple of years.

Take a look at me for example. I started having fun with my sammy-based ArchiDroid around 2 years ago. This is not much, look at my join date, it's march 2013. Since then I learnt much how Android works, how badly is our device supported, how to make things a little easier. I spent much time on that, I managed to make one of the most popular ROMs up to this point for i9300 (ArchiDroid), this is much in terms of things that you can do in 2 years, especially, because I didn't know much about Android when I was starting the fun.

The more you know, the less time you have. I barely can find time for developing for i9300 these days, and I'm sure that I won't find any time when I change the phone, as my old LG E610 is waiting for kitkat since last year, and I managed to compile only TWRP since then. You know that this release wouldn't been possible without help of [MENTION=4604352]Moster2[/MENTION], as he is the boss here working on support for i9300 right now. I'm sad that there are only three developers left for i9300, and I'm the one of them.

Quoting Dhiru: By the time we fix hwcomposer and other core things to make proper support for i9300, people are going to change their phones already. If you want an advice from me, stay away from Samsung, don't support their "we-don't-care" policy regarding development. Take a look at many other companies that do make quality phones and care about the developer, Sony, LG, and Google (Nexuses) are only some noticable examples. I don't know when I'm going to change my phone, but it won't be a samsung for sure.