Interview with eng.stk, Developer of blu_spark Kernel – Part 2: F2FS, EAS and Tips for Aspiring Kernel Developers
I recently got the chance to interview XDA Senior Member eng.stk, developer of the blu_spark kernel. It’s available across many devices on our forums, including the Nexus 5, OnePlus 3/T and the OnePlus 5T. In this part, we ask eng.stk about EAS, F2FS, development tips and more!
What are the biggest changes in kernel development since you’ve begun?
Well, in 3.0 and 3.4 things were rawer. Upstream and backports were the most difficult [things to do] and took a lot of work. On the other hand, there was a time where people added and modded more stuff. On 3.10 CAF tags helped a bit when it came to standardization and nice baselines, 64-bit support was also a big jump in device support.
Nowadays on 3.18 and 4.4 life is easier. Platforms are more stable, it’s easier to build on top [of them]. The closer we get to mainline Linux, the better. I know Google is pushing towards this path and I am pleased with it. Either way, we can somewhat do it manually and adapt, but the result sometimes is not satisfactory and can result in derps and instability. So I refrain from full tags merge for the time being and pick what I need/want. Devices that are made from the start with this upstream idea in mind will benefit a lot from newer and up-to-date enhancements in performance, security, architecture fixes etc. I see people worrying more about security, we should always keep an eye on latest news and CVE stuff.
Some new stuff that was interesting lately to me, was the concept of working with unified trees for more than one device like with the OnePlus 3 and OnePlus 3T and now the OnePlus 5 and OnePlus 5T. That allowed me to do some nice things, such as backport newer code from the newer device to the “old” one and so on. I had a good time on the OP3/T even before the OEM pushed the source with that in mind already. It allowed me to push a zero-day fully fledged 5T kernel with no device whatsoever, with almost no quirks. I like the concept of unification a lot, I also put that in motion on my personal TWRP builds.
When I started, people were doing things for them, for fun, etc. At one point in time, we started to see a growing monetization of projects, which in my opinion ruined the original vibe and the “why” people should be doing OSS (Open source Software) projects in the first place. XDA threads began to look like sales channels and support hotlines. I have nothing against donations, I myself donate to several free projects like Wikipedia, Mozilla, VLC, libre office and I think if people can, they should do it also. My point it’s that the end goal is different I think.
I still do it like before: for me, for fun 🙂 Although, in the last few years, because of the number of people using my stuff, it made me also do some stuff in appreciation to the people that appreciate me. I consider (most) users my friends.
F2FS and EAS (Energy Aware Scheduling) are both examples of emerging standards which mark a change in Android kernel development. Do you have an opinion on either one? How do you feel about F2FS, and will you possibly support EAS at a later date?
I was a ferocious and early adopter of F2FS on XDA (if I recall correctly, around the Google Nexus times, Nexus 4/Nexus 7 and with exponent on the N5). It helped a lot of old devices [increase their] performance level when storage was weak and had all kind of issues, upstream and backports were all the rage. Nowadays I think the difference to the ext4 standard is less notable, due to ext4 development and HW improvements (taking a look to performance levels of UFS v2.1 is mindblowing and not even imaginable a few years back).
On the other hand, stuff like FBE (File-Based Encryption) brought some new challenges to F2FS and quite frankly in the latest months some bugs and issues have made [me] drive away from F2FS. I don’t see the point to gamble on instability anymore. I don’t see F2FS becoming standard anytime soon, but future will tell.
EAS is a nice concept (with some serious work from a team I like a lot – Linaro). I think that it still needs to prove itself a little more and when/if it becomes a standard I will get on the bandwagon I suppose. Something that is mostly reactive and turning it into a preemptive logic that can “guess” what is going to happen in the future, can get improve the overall device usage and experience. However, getting EAS working on a non-EAS device is hard work and most of the time doesn’t bring the wanted results. It’s a work for engineer teams mostly to get it done nicely, and from then on, there isn’t much we tinkers can do with it (besides upstream and some fixes). Qualcomm has also begun to ship some of that aware scheduling logic on their HMP devices, so I don’t really know what the future will bring.
Whatever it is, I’ll be here.
How can OEMs make your job easier besides releasing kernel sources and complying with GPLv2?
Well, the faster the sources are out, the better for developers. We can start to work right away. Also, sometimes sources miss stuff and/or pack proprietary modules that are not the best way to work with things. Sometimes stuff is obfuscated to hide some “trickeries” they do. I think OEMs should also take a look at unfinished trees and do as we do on XDA: the tree is out of the box finished, workable and complete.
Thankfully, some OEMs started looking at the developer community like a positive thing, giving options to unlock bootloaders, providing proper sources and so on. I know unlockable devices are disappearing, but on the other hand some OEMs are still doing it or are beginning to do it on new devices. For me, doing what you want to a device is what defined Android. Take that away, [and I will] have no interest in it. Most OEMs should allow it, should create bridges with the community, talk to developers about bugs, engage them in product cycles and testing stuff, etc. All of the people win and get a better product as a result.
Which OEMs do you think are doing a good job at fostering development on their devices?
Sony does an excellent job with their AOSP support on their devices, really neat. I wished we had more OEMs pushing sources early and shipping close to AOSP, giving trees like we had on the Nexus… we can dream, right? ;p
While Google kind of lost their developer friendliness with the death of the Nexus, I must say OnePlus is the most exciting player nowadays. Sources nowadays are pushed in a timely manner, people can talk to the company about stuff, I think it’s positive. They started all kinds of community programs and focused on the relation that the user has with the company/product. That alone allows fruits and better decisions for the future. Listening to the people is paramount to having nice results. I hope companies look at this and take inspiration.
The better the tools you are provided to work [with the] better the end result will be. The OnePlus developer program is one of the most exciting OEM action towards developers. Give people a place to discuss with other driven and skilled people, allow dialogue with specific development questions towards the company, handing out devices to [notable] persons on the developer scene to improve present and future development, etc. I’m very proud to be a part of it, props to OnePlus and specially Adam K for the work done with the community and all of the beta stuff.
Do you have any resources or tips for aspiring kernel developers or people who simply want to learn? Not just documentation, but learning the mechanics of what you are modifying and learning it somewhat naturally.
When I first started out, info was more scarce and dispersed. Nowadays there are lots of nice guides, tutorials and other info on XDA. Start there with learning the mechanics. My advice is to seek what you want to learn and read a lot about it. Test a lot. Fail lot. Repeat 🙂
Number one is having a passion for what you do, all the rest will come in time, but on the other hand, try to do something useful and unique, make your contribution count. Make a CM nightly or kang a kernel and apply the same recipe anyone can do. Ask yourself what value you can add to stuff and got for it.
A developer path is a long one and not everybody is cut for it. Maybe you can make a difference by going for a larger team and try to contribute there, either with testing, ideas, translations, etc or even fixing stuff and working on Gerrit.
This applies to any kind of development, not just kernels.
Did you have a lot of prior development experience before blu_spark? You touched on finding Linux in your early twenties, was there much else before that?
While being a child, like I said before, I tinkered with electronics mainly. My family didn’t have much money, so no computers at home. I mainly played with the Commodore, ZX Spectrum and Atari stuff from my cousins and neighbours/friends. I had some funky stuff in Basic, typing in codes from magazines we had at the time. Then came high school and I got in touch with the Internet and Linux. At the time I coded on a Casio graphic calculator also, pretty neat.
Fedora, Ubuntu and Knoppix were the weapons of choice at the time and during University. I started learning C/C++, bash and scripting stuff also. I got interested in kernel stuff at University I think, mainly building for particular hardware stuff I needed, but as an Android user, I really started getting more into it. I had [previous experience] with OSS before Android, I contributed to some projects with testing and translations besides coding.
We’ve learned a lot about your work, but do you have any hobbies outside of being a developer?
I love history and archaeology stuff, mainly documentaries about past stuff and ancient civilizations. I also like car stuff, music (especially heavy stuff and electronic) and I devour all kind of series.
My favourite cinema genres are sci-fi (especially cyberpunk stuff) and action/thrillers. I also love Anime. I’m also into sports, I love running 🙂
What’s your favourite device in recent memory?
I must say the Nexus 5.
I mean we did everything I can think of to that device, it was a developer dream really. My N5 thread still is the biggest one I have (?) and I continue to support the device, even though there is no more support from the OEM. It’s an awesome community we have here 🙂
More recently, and as a user, I must say the OnePlus 5: top-tier device really.
What device do you use as your daily driver?
I daily drive the OnePlus 5 mainly these days, I like it very much (until I get my hands on a 5T ;p ). I also use an iPhone SE and MS Surface Pro 4 for my mobility daily needs.
Happy holidays to all at XDA 🙂
Special big shouts to all of the blu_crew!