Sunday, September 3, 2017

Interview with Francisco Franco, Developer of the Franco Kernel (Part 1) – Origins, HMP vs EAS, F2FS & More!

I recently had the pleasure of interviewing the man behind one of the most popular Android kernels ever, the Franco Kernel. Currently, the kernel is available on many different devices, including various Nexus & OnePlus devices and the Google Pixel / Pixel XL.

In this part, we talk about Francisco Franco's journey into kernel development and his opinion on the changes Android has undergone over the years.


I'm Adam Conway here on XDA to interview Francisco Franco, developer of the Franco Kernel! Do you want to introduce yourself?

Sure, my name is Francisco, as you just said, and I guess I've been on XDA for 1 million years already! Been doing all sorts of stuff. Kernels, apps, and lately I've been slacking a little bit more on kernels because it gets tiresome after a while, but I'm still full force on most of my devices.

Okay, so I guess lots of people would be familiar with your work, but a lot of people wouldn't be familiar with the actual person behind the work. So I guess really do you have any kind of past experience before kernels? Like any computer science degree or anything like that beforehand?

I've always been passionate about computers, as any kid while growing up I guess. After I turned 18 and I decided to go to university like everyone else, and I think I was taking computer science or something but after a year or so, I figured that not what I was actually passionate about. After that year my expectations were starting to drop low because it was all talk and no action, and I was starting to feel bored – not because I was better than anyone else, I was just average – but the actual disciplines weren't exactly what I wanted. So I talked to my parents, and they were aware that I wasn't very happy in that.During the Christmas of 2010, I got my first Android phone. An LGP 500, that's a budget phone, very cheap, but I knew it was running Linux, and my favorite discipline in university was computer architecture or something, operating systems. And we were learning a little bit of shell and talking a little bit about the Linux kernel, and what was part of the kernel and all the connectivity in the kernel, and the actual operating system, and that was fascinating for me. And then I started to rebuild the Linux kernel for my old laptop together with a friend. We crashed our laptops like 100 times doing that, but we learned through the process. And then I started to play with my LG, and I guess the first thing I did was trying to push a little bit more performance because that device was actually pretty crappy. So the best thing I could do was just go through the standard Linux kernel parameters for the actual memory management and stuff, and just try to find something a little bit better than what was already there. I had fun a little bit then.

I think I haven't told this before in previous interviews, but back then that device was using an old file system called YAFFS – that means Yet Another Flash File System, but it was pretty slow when we tried to mount like a RAM-backed swap disk so, I don't remember specifics, but we did all sorts of different experiments with that and we ended up mounting the Dalvik on top of the memory RAM that had to be rebuilt every reboot because, as you know, RAM goes away every time we reboot. But it made opening applications and running benchmarks quite faster so we were happy. So after that, I started to go a little bit deeper, and try to compile LG's kernel sources for the device, and I made all sorts of bad judgments and all sorts of mistakes – Wi-Fi network, whatever – everything that you can possibly imagine from someone with no experience. This was fun, I learned a lot. I guess after a year or six months [of] doing that I was a little bit more focused, and I knew a little bit better what I had to get the downloads. That's what we all want at the end of the day. After that, I managed to get some donations and move up to other devices. I guess the Nexus S, then the Galaxy Nexus and then after that period, I managed to get my first app out. I guess I've been very fortunate and I've been able to finance myself buying new devices, and it blew up from there. So I guess at the end of the day I owe everything to, I wouldn't say XDA but the platform that XDA provides us.

And the community kind of behind it and all that.

Yes yes, I mean the platform, that's the community and the actual forums. For anyone listening, this isn't a paid sponsor or anything, I'm not being paid to say this, it's just true!

There's no video, the people don't see the gun being pointed at your head, it's alright.

Hahaha, yeah but someone will say that I'm being paid to say this so I'll just say it! But yeah, yeah it's been a marvelous platform for me to build cool stuff, learn a lot, I've learned everything there by mostly doing mistakes and in learning I still do my fair share of problems. I destroyed my Xiaomi Redmi Note 3, uh, the bootloader is just destroyed. So I have to connect it again with my Windows computer that's sitting back there and have to reflash everything and it's been sitting here for like three months. I'm getting all sorts of hate from everyone that I'm not paying attention to that device, and so I still make [mistakes] I guess, so even after all these years there's still stuff to learn and I've been very fortunate to have been through this journey and it's been awesome.

Well, I guess seeing as you started with the… LGP 500 was it?

Yeah, yeah.

How many years ago was that? Because that must have been around the original versions of Android right? Around Froyo or something?

Yeah, that shipped with Froyo and it was upgraded to Gingerbread couple months afterward. That device I think was 2010, beginning of 2011, probably earlier. I know my account on XDA was created in December 2010 but I had the device beforehand. So I guess probably around that time, yeah.

How has Android evolved performance wise since then? Like how has it changed for you writing kernels back then and writing them now? And I suppose what your opinions are on the changes.

Kernel wise, I think we have evolved with the actual Linux kernel and all the changes that the Android team actually wanted to implement for a certain Android release, so they dictate most of what special features the kernel will have, based on what they want to ship. But I guess actual performance, more cores actually help a lot because back then you didn't have any real way to move this thread (sic), or imagine network requests through a background thread, or at least actual real-time threading. I think that was the biggest change throughout the years, having more ways to spread out your work, and not have Android just slow down because everyone is trying to grab that little bit of CPU share. More than anything I think multi-core and actual real multi-threading backed by Linux. I thought that [was] the biggest change.

Ah okay, so what's your opinion then on HMP vs EAS? Because obviously EAS is only new and only being used in a few devices — like you use a Google Pixel right?

Yes, currently I am using a Galaxy S8, but I have a Pixel too. I don't know both in that [much] detail, they are just different implementations of how a multi-clustered device should act based on what's happening on the device at certain times. Running two different clusters with two different power consumptions, it's quite hard. You have to meet expectations of tasks moving up and down, and there's a latency involved in there and HMP was the first real implementation of a real multi-clustered architecture for ARM, because if I remember correctly, before HMP was in real-world usage, Samsung had an initial implementation where either you were using the first four cores, like low power cores, or four high-performance cores but they were never running at the same time. But then afterwards with the HMP the cores were ready to be used at any time and tasks just moved from one cluster to another and vice versa and that worked out, but you didn't have that much information from the scheduler to show this to the governor to actually decide what kind of frequency would be used at that specific time, so you had to deal with, like, trying to understand what happens in [about] 20 seconds and then based on what happened there, you decide what to do. EAS, it's more [about] understanding what's going to happen in the future and deciding in real time based on the power outputs of each core, and then it's a bunch of calculations and complicated things in the background

Like energy models and so on to back it all up.

Yes, I guess so, it's quite complicated, I don't know all the specifics I've read a bunch of documents but it's quite complicated and it's not just turning a switch on and having that ready to use. I get that question a lot can you implement EAS on XYZ phone. My replies are always "It's not turning a knob, it's not like that, it took a whole team of Googlers and guys from Linaro to implement that and you have to move stuff around, doing stuff, test stuff and that's just too much work and kind of going blind" and… yeah. It's hard.

So you have to know exactly what you're doing, it's not a one man job kind of thing?

Yeah you have to know what you're doing, anyone can pick the patches and merge them but actual testing and making sure it's working correctly and you would need a proper machine to detect the power usage of each component and there's a bunch of tables on the kernel where you can write the power of each core, and based on that the code will decide what to do. It's quite complicated. I don't think it's a definite solution for all the problems, but it's definitely the best we have right now.

So you see it as an improvement?

Yeah sure, miles miles miles away. It's a definite improvement from HMP or any other architecture, because if you can understand what's going to happen in the future you can react much faster to any request or whatever is happening on the device, that's why the Google Pixel is so fast and so smooth, because everything is happening almost in real-time. It's moving the frequencies up and down which is the easiest way to hit expectations of performance.

I guess with that then, if there's more adoption in the future of EAS, how do you see that affecting your own development as regards kernels? Would you still stick with HMP or would you go with already released energy models? For example on the OnePlus 3, [ROM developers] are re-using the energy model from the Google Pixel for EAS. Could you see yourself doing something like that?

I probably won't do that, if the device doesn't ship with EAS to begin with then I probably won't implement it in any way or form because as I said it's quite a lengthy process and no one in XDA knows better than all these engineers, so we are just trying to play God I guess.

On that note talking about the future with Android and kernels, what's your opinion then on the recent Android Oreo release? Do you think the changes are good? Have you looked at any of the new kernel commits?

There weren't as many changes on the kernel side on the Nexus 6P and the Nexus 5X, just little fixes here and there. On the Google Pixel, they were iterating on the EAS implementation, and they spent some time improving the binder section, because now the binder, together with Project Treble, it's like splitting different packages, so they have to go through 50 or 100 different patches to improve the binder and get it separated into different processes. Other than that, it was just normal work for a big release. When there's a new platform release, you usually don't mess with the kernel that much, because messing with the kernel you actually need a lot of QA, if you sometimes change one thing you hear it affects something in another subsystem. That's what they usually do, that's why you don't have a kernel version bump between platform upgrades. It is just a lot of work. Usually not worth it but yeah, it was mostly binder stuff, a little bit of the scheduler, and the usual security fixes. I went through them all, but nothing really caught my mind. My attention was only brought to the binder.

Ah okay, so just the standard stuff really.

Yeah, they're quite complicated and don't ask me for specifics!

This is an entirely different topic, what's your opinion on F2FS against ext4? Because you'd see a lot of people will say that F2FS is unstable and stuff and causes issues, I'm just kind of wondering what's your take on it.

I don't know either [about] specifics because file systems are quite hard, there are a lot of moving parts here and there. I'll just quote a Google engineer which says that based on their test, F2FS doesn't perform any faster than the ext4, and on top of that when they were testing stuff for the Google Pixel, F2FS didn't provide support for… I think it was file block encryption, while ext4 for supports it. So that alone means — just scrap it. You have to think about two things, ext4 is being worked on for like 20 years with a lot of very smart engineers from different companies and they know what they're doing. F2FS was, if I remember correctly, implemented by Samsung. It's quite a new file system so things as complicated as these take time to improve and iterate, as you can see from the Apple file system that was just released on iOS, and they are going to do the same for Mac OS. Things take time, you need a huge team to do these things correctly. I'm a big supporter of "if it's working, don't touch it" and what we have right now — it's working, and I don't think it gives you any performance problems so I don't see a reason to mess with it.

Ah okay, that's fair enough! What about SDCardFS being switched to from FUSE? What would your opinion be on that?

That happened because the older FUSE file system was one of the worst things that happened on Android. The performance was horrible, there were a lot of system calls between the kernel and the user space and now with SDCardFS it's done properly. It's a normal file system to deal with this, again I don't know the specifics as it's a very complicated thing, but what I've read and seen and heard from different podcasts from the Android team is, it basically fixed all of the problems with the old system. That was quite horrible, performance was horrible.


Check out Part 2 by clicking this button!



from xda-developers http://ift.tt/2guTu2A
via IFTTT

Support for Android Apps in Extended Desktops is Coming to Chromebooks

Since Android app support came to Chromebooks, Google has been working tirelessly in order to make these apps look and feel more integrated into the Chrome OS system. While Android app support itself is still in beta, we've seen true improvements. Apps work way more fluently compared to before, and with Android Nougat, apps can be opened in phone orientation/form instead of just a full screen, tablet interface for all apps (you can also force freeform windows in Developer options). However, while it's definitely usable up to this point, there's still plenty of work to be done. Luckily, Google is addressing some of these issues.

Before, one of the most annoying limitations of Android app support was the inability to move Android apps across extended desktops. Google has addressed this behavior, also adding some additional improvements in order to make extended display workflow more easily manageable with Android apps. As discovered by ChromeUnboxed.com, Android apps can now be moved across all displays, like regular windows inside Chrome OS. The previous behavior locked Android apps to the Chromebook's primary display, making additional screens pretty useless when using Android apps. This changed behavior should come with the newest Chrome OS update in your Chromebook.

Also, if you closed an Android app inside your other displays and you open it again, the app will reopen in that same display. These two changes, added to all the previous Android app improvements, should make for a much more cohesive and comfortable experience if you use your Chromebook with multiple screens, and should feel like a much more finished product. Having in mind that lots of Chromebooks keep getting Android Nougat app support, we're probably at the final stages of the beta, and way closer to the integrated experience Google promised almost a year ago. So, we're excited for all the changes surely coming soon to future Chrome updates. If you want to learn more about these changes, head over to ChromeUnboxed.com to read more.


Source: ChromeUnboxed.com



from xda-developers http://ift.tt/2gAFxDZ
via IFTTT

Saturday, September 2, 2017

Unofficial Android 8.0 Oreo Experimental Build Arrives on the OnePlus One

The OnePlus One will always be remembered as controversy's love child; the device that pushed OnePlus into the headlines for quite a few reasons and not all of them were positive either. But despite all the questionable tactics of the past, there is no denying that the One was a legendary device. Because of its fairly open hardware, its $299 starting price in 2014 and some beastly specifications that punched above the price at the time, the OnePlus One quickly became an enthusiast's choice when looking for a device with great value.

It's Settled: The OnePlus One has Stood the Test of Time

Just as we have predicted time and time again, the OnePlus One continues to be a flashaholic's best friend multiple years later, and has received its first builds of unofficial AOSP based on Android 8.0 Oreo. This experimental build comes to us courtesy of XDA Senior Member Agent_fabulous and team, and offers users of the aged device a chance to try out the latest Android version available right now.

The working feature list for the ROM includes key functionality like WiFi, Bluetooth, RIL, audio and video playback, NFC and more. But because of its early and experimental nature, a few key aspects like the camera and camcorder are disabled while others like the graphics and 3D rendering are considered a work-in-progress. There's also an issue with AOSP and its support for hardware navigation keys, because of which both the on-screen navigation bar and the hardware keys are enabled.

The ROM is fairly stable for an early build, but many would agree that it is not exactly something one would recommend using as a daily driver on the OnePlus One/bacon in its current state. That however, does not take away from the fact that you can enjoy the sweetest Android dessert right now on the flagship killer of 2014.


Do you still use the OnePlus One as your daily driver? Have you tried out Android Oreo on your OnePlus One? Let us know in the comments below!

Unofficial AOSP Oreo Builds for the OnePlus One



from xda-developers http://ift.tt/2eQ5wU6
via IFTTT

Early Ports of Android Oreo Available for the Galaxy S6, Galaxy Tab S2 9.7 WiFi (2016)

Thanks to an early port released by XDA Member lukasb06, Samsung Galaxy S6 users can now get the sweet taste of Android Oreo on their devices, too. The port is based on LineageOS and should work on both flat screen Galaxy S6 and curved screen Galaxy S6 Edge models. Since it's an early build, there are still quite a few bugs to be ironed out, however, basic functionalities such as WiFi, RIL, Bluetooth, NFC, and fingerprint scanner are reportedly working fine. If you want to give it a shot, be sure to check out the main thread for detailed instructions.

Check out the Android Oreo port for the Samsung Galaxy S6

Meanwhile, an unofficial build of LineageOS 15.0 has also been ported to the Samsung Galaxy Tab S2 9.7 WiFi (2016), courtesy of XDA Recognized Developer LuK1337. As far as stability is concerned, everything seems to be working fine in the early build, except the fact that the camera is broken and SELinux Policy couldn't be set to Enforcing. For more information, check out the main thread by clicking on the link below.

Check out the port of LineageOS 15.0 for the Galaxy Tab S2 9.7 (2016)



from xda-developers http://ift.tt/2exZP06
via IFTTT

Android Oreo Unofficial Port Released for the Xiaomi Mi Max

The Xiaomi Redmi Note 3 received an unofficial port of Android Oreo just the other day, and now the Xiaomi Mi Max has received a port of Android Oreo in part thanks to the Redmi Note 3 version.

This release has all of the same bugs as the Redmi Note 3 release (no USB tethering, no VoLTE and so on) and a few of its own, but as a proof of concept, it certainly works. Other known issues include the camera not working, nor the flashlight or camcorder, and the device randomly reboots. Still, this is a pretty impressive first port and shows the dedication our forums have to Xiaomi devices. Check it out down below!


Android Oreo for the Xiaomi Mi Max



from xda-developers http://ift.tt/2iTddO3
via IFTTT

LG V30 Camera App Ported to the LG G6, Brings Graphy Features and More

The LG V30 is now officially here. And perhaps one of the biggest improvements compared to other LG devices is in the camera department. You could say that LG designed the V30's camera with camera buffs in mind: a 16-megapixel dual camera with a 13-megapixel wide angle lens, a f/1.6 aperture (although exif data says otherwise) and lots of other features. The newest flagship from LG also comes with a feature-rich camera app to match. And while LG G6 users are officially staying with the lesser one (at least until the next update), the V30's camera app has already been ported to the G6 in our forums.

This news comes a couple of days after the LG V30 was officially announced. Ported to the LG G6 by XDA Recognized Developer / Recognized Contributor xpirt, the LG V30 camera mod includes all existing LG G6 features, plus all V30 new modes (except Cine mode), all Graphy features completely functional and manual options working as well. While it was initially only compatible with Fulmics ROM for the LG G6, it has since been ported to all G6s as long as you're on the stock ROM. You'll need a rooted LG G6 in order to use this port.

The developer notes that he made the camera available since he's not sure yet whether full UX 6.0 will come to Fulmics or not. He also notes that the Cine mode will never come to the G6 because it's sensor-dependent, meaning that it relies on the improved capabilities of the V30's sensor. You'll need to flash the new camera app through TWRP since it replaces the stock G6 camera. With a little more modding this could even be ported to other phones like the V20 or the G5, according to the developer, so we're excited to see how this turns out. Interested? Head to our forums in order to download the flashable ZIP.


Source: Forums



from xda-developers http://ift.tt/2iRIuRd
via IFTTT

Huawei Removes EMUI Firmware Downloads from their Website

Some of us are used to being able to visit a website to directly download a new update for a smartphone or tablet. Google does this and OnePlus does as well, but even community members maintain websites for other OEMs as well. Huawei used to do this via a downloads page on the emui.huawei.com website, but XDA Senior Member RedSkull23 just brought to our attention that this is changing. If you visit this downloads page right now you'll be greeted with the following message. . .

To deliver a more convenient and satisfactory update service, Huawei now only provides online updates for its phones, Tables, etc. SD card update packages are no longer supplied.By this time,all the SD card upgrade packages will be removed from the website and the download page will be closed.


Join the discussion in our Honor 6X forum



from xda-developers http://ift.tt/2wwfz8n
via IFTTT