<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>kaios &amp;mdash; farooqkz</title>
    <link>https://blog.bananahackers.net/farooqkz/tag:kaios</link>
    <description>Farooq&#39;s KaiOS related experiences started with a hackable banana</description>
    <pubDate>Sun, 03 May 2026 12:20:06 +0200</pubDate>
    <item>
      <title>You can sideload on Nokia 2780 Flip thanks to Affe Null</title>
      <link>https://blog.bananahackers.net/farooqkz/you-can-sideload-on-nokia-2780-flip-thanks-to-affe-null</link>
      <description>&lt;![CDATA[Affe Null card&#xA;&#xA;#linux #kaios #bananahackers #bananahacker #pmOS #nokia2780 #hack #kaios3 #firefoxos&#xA;&#xA;It has been a while since 2780 is out. Most BananaHackers have been waiting a long time to get their hand on a KaiOS 3.x device and Nokia 2780 is the first one released which is not carrier-locked. Many other community members, like Luxferre seem to prefer waiting till a global 3.x device gets released. This 3.x flip phone is not global but because it&#39;s not carrier locked, one could import them from third party stores like Amazon.&#xA;&#xA;I haven&#39;t got my hand on a 2780, yet. But according to Affe, no code worked on Nokia 2780 Flip to enable debugging like other Nokia models such as the BananaPhone. And using W2D does not enable ADB. It&#39;s very unfortunate. But like most other hackers in the world, Affe was not willing to give up till he gets what he wanted and now we have the weeknd Toolbox created by him.&#xA;&#xA;!--more--&#xA;&#xA;This toolbox enables users to modify the internal storage of 2780. This let&#39;s us side-load third-party apps outside KaiStore as well as modifying the pre-installed System and obviously, the stock apps among them.&#xA;&#xA;Remember that debugging is not yet possible on 2780. And side-loading the apps is not done through the debugging protocol of B2G like the other phones. Thus, this phone is not suitable for app development purposes, yet. Unless, of course, you are willing to do some device hacks to make it so.&#xA;&#xA;If you want to learn more about 2780 and the technical story behind the hack, you can read the wiki page dedicated to this phone on BananaHackers wiki.]]&gt;</description>
      <content:encoded><![CDATA[<p><img src="https://farooqkz.de1.hashbang.sh/storage/download?name=affe.png" alt="Affe Null card"></p>

<p><a href="/farooqkz/tag:linux" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">linux</span></a> <a href="/farooqkz/tag:kaios" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">kaios</span></a> <a href="/farooqkz/tag:bananahackers" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">bananahackers</span></a> <a href="/farooqkz/tag:bananahacker" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">bananahacker</span></a> <a href="/farooqkz/tag:pmOS" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">pmOS</span></a> <a href="/farooqkz/tag:nokia2780" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">nokia2780</span></a> <a href="/farooqkz/tag:hack" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">hack</span></a> <a href="/farooqkz/tag:kaios3" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">kaios3</span></a> <a href="/farooqkz/tag:firefoxos" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">firefoxos</span></a></p>

<p>It has been a while since 2780 is out. Most BananaHackers have been waiting a long time to get their hand on a KaiOS 3.x device and Nokia 2780 is the first one released which is not carrier-locked. Many other community members, like <a href="https://gitlab.com/suborg" rel="nofollow">Luxferre</a> seem to prefer waiting till a global 3.x device gets released. This 3.x flip phone is not global but because it&#39;s not carrier locked, one could import them from third party stores like Amazon.</p>

<p>I haven&#39;t got my hand on a 2780, yet. But according to Affe, no code worked on Nokia 2780 Flip to enable debugging like other Nokia models such as <a href="https://wiki.bananahackers.net/en/devices/nokia-8110-4g" rel="nofollow">the BananaPhone</a>. And using <a href="https://w2d.bananahackers.net" rel="nofollow">W2D</a> does not enable ADB. It&#39;s very unfortunate. But like most other hackers in the world, Affe was not willing to give up till he gets what he wanted and now we have the <a href="https://git.abscue.de/affe_null/weeknd-toolbox/" rel="nofollow">weeknd Toolbox</a> created by him.</p>



<p>This toolbox enables users to modify the internal storage of 2780. This let&#39;s us side-load third-party apps <em>outside KaiStore</em> as well as modifying the pre-installed System and obviously, the stock apps among them.</p>

<p><strong>Remember that debugging is not yet possible on 2780. And side-loading the apps is not done through the debugging protocol of B2G like the other phones. Thus, this phone is not suitable for app development purposes, yet. Unless, of course, you are willing to do some device hacks to make it so.</strong></p>

<p>If you want to learn more about 2780 and the technical story behind the hack, you can read <a href="https://wiki.bananahackers.net/en/devices/nokia-2780-flip" rel="nofollow">the wiki page dedicated to this phone on BananaHackers wiki</a>.</p>
]]></content:encoded>
      <guid>https://blog.bananahackers.net/farooqkz/you-can-sideload-on-nokia-2780-flip-thanks-to-affe-null</guid>
      <pubDate>Fri, 19 May 2023 11:57:22 +0200</pubDate>
    </item>
    <item>
      <title>On the state of KaiOS and BananaHackers community as of summer of 2023</title>
      <link>https://blog.bananahackers.net/farooqkz/on-the-state-of-kaios-and-bananahackers-community-as-of-summer-of-2023</link>
      <description>&lt;![CDATA[#kaios #bananahackers #hacker #hacking #featurephonedevelopment #featurephone #notandroid&#xA;&#xA;A few years ago, Luxferre founded the BananaHackers community to hack KaiOS, the web based mobile OS, and to develop for this platform. I joined this community after I got my BananaPhone. The famous 8110 which has a yellow colour and is curved. I remember I was exactly looking for the yellow version of the phone and it was very exciting.&#xA;&#xA;I remember when I wanted to get my 8110 back in 2017, there were just around 100 apps in KaiStore or maybe even less. The community was young and so was KaiOS. I think my first app for KaiOS was VM-IRC which the VM part was standing for Very Minimalistic. Later when I joined the community chatrooms which back then were hosted on r/KaiOS Discord guild. I found the community welcoming and very active. We had Uncle Ivan(or Ivan Alex HC) among us who was not a developer but had spirit of a tinkerer. You might know his Youtube channel. We also had many other members which you can find a list, hopefully complete, in the credits page of our wiki.&#xA;&#xA;!--more--&#xA;&#xA;I was honored to become a trusted member of the community and later a council member. The council is the heart of the community and we have very old members there who are still active. We also had many members there who are no longer around, unfortunately.&#xA;&#xA;In 2018, the partnership of KaiOS and Mozilla was announced to bring modern and performant web for KaiOS. Almost everyone of us were waiting for KaiOS 3.0 which was based on the new Gecko rather the ancient one used in Firefox 48. There are so many advantages in this upgrade. Including but not limited to support of WebAssembly, newer WebGL, much better performance in rendering and new web APIs. We were looking forward to the new KaiOS and hoping it to be still debug-enabled and available worldwide.&#xA;&#xA;But now, in 2023, this mobile Operating System seems to be on the verge of death. Not only KaiOS 3.0 is out but also KaiOS 3.1 is also out. But there is no device which is available worldwide. Only few carrier-locked devices for North America. Nevertheless, there is Nokia 2780 Flip which is not carrier locked. And one can buy from online shops like Amazon almost anywhere in the world. But first, this phone will cost one around 140 bucks to get into their hand. Second and more important, this device is not debug enabled and thus it cannot be used for app development purposes in a convenient way.&#xA;&#xA;Many &#34;council&#34; members have lost interest in developing for KaiOS. Many have not and believe this OS will live on and cover a minority of the market. Both opinions seem reasonable and we&#39;ll have to wait to see what will happen.&#xA;&#xA;I&#39;ve already considered an alternative mobile OS. I have two main requirements: First and most important, I must be able to easily hack the OS and write apps for it. Unfortunately, not Android nor iOS are not my answer. Developing an Android app requires you to have huge resources on your PC. And its ecosystem is hard to hack. Compiling Android itself takes ages and a regular PC. iOS on the other hand is even worse. To develop for iOS you need a MacBook and a developer licence from Apple. The second requirement is that I don&#39;t want my phone to be only a display which is boring and the outside view of most smartphones these days.&#xA;&#xA;I haven&#39;t decided, yet. But postmarketOS looks very promising. There is already good support of hardware features in 8000 4G) and 2720 Flip). There is a possibility to port the new Gecko to pmOS to bring the new KaiOS to the older phones. However, this is not easy, simple nor trivial.&#xA;&#xA;One of members, mostly known as Affe Null, had developed their own ecosystem for KaiOS phones, mainly 8110 at that time. He had ported Debian to 8110 and also developed many apps for it including a graphical shell. Later, he moved to pmOS which seems a reasonable move.]]&gt;</description>
      <content:encoded><![CDATA[<p><a href="/farooqkz/tag:kaios" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">kaios</span></a> <a href="/farooqkz/tag:bananahackers" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">bananahackers</span></a> <a href="/farooqkz/tag:hacker" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">hacker</span></a> <a href="/farooqkz/tag:hacking" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">hacking</span></a> <a href="/farooqkz/tag:featurephonedevelopment" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">featurephonedevelopment</span></a> <a href="/farooqkz/tag:featurephone" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">featurephone</span></a> <a href="/farooqkz/tag:notandroid" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">notandroid</span></a></p>

<p>A few years ago, <a href="http://gitlab.com/suborg" rel="nofollow">Luxferre</a> founded the BananaHackers community to hack KaiOS, the web based mobile OS, and to develop for this platform. I joined this community after I got my BananaPhone. The famous 8110 which has a yellow colour and is curved. I remember I was exactly looking for the yellow version of the phone and it was very exciting.</p>

<p>I remember when I wanted to get my 8110 back in 2017, there were just around 100 apps in KaiStore or maybe even less. The community was young and so was KaiOS. I think my first app for KaiOS was <a href="https://notabug.org/bananaphone/VM-IRC" rel="nofollow">VM-IRC</a> which the VM part was standing for Very Minimalistic. Later when I joined the community chatrooms which back then were hosted on <code>r/KaiOS</code> Discord guild. I found the community welcoming and very active. We had Uncle Ivan(or Ivan Alex HC) among us who was not a developer but had spirit of a tinkerer. You might know <a href="https://www.youtube.com/@BananaHackers" rel="nofollow">his Youtube channel</a>. We also had many other members which you can find a list, hopefully complete, in the credits page of <a href="https://wiki.bananahackers.net/en/Credits" rel="nofollow">our wiki</a>.</p>



<p>I was honored to become a trusted member of the community and later a council member. The council is the heart of the community and we have very old members there who are still active. We also had many members there who are no longer around, unfortunately.</p>

<p>In 2018, the partnership of KaiOS and Mozilla was announced to bring modern and performant web for KaiOS. Almost everyone of us were waiting for KaiOS 3.0 which was based on the new Gecko rather the ancient one used in Firefox 48. There are so many advantages in this upgrade. Including but not limited to support of WebAssembly, newer WebGL, much better performance in rendering and new web APIs. We were looking forward to the new KaiOS and hoping it to be still debug-enabled and available worldwide.</p>

<p>But now, in 2023, this mobile Operating System seems to be on the verge of death. Not only KaiOS 3.0 is out but also KaiOS 3.1 is also out. But there is no device which is available worldwide. Only few carrier-locked devices for North America. Nevertheless, there is <a href="https://wiki.bananahackers.net/en/devices/nokia-2780-flip" rel="nofollow">Nokia 2780 Flip</a> which is not carrier locked. And one can buy from online shops like Amazon almost anywhere in the world. But first, this phone will cost one around 140 bucks to get into their hand. Second and more important, this device is not debug enabled and thus it cannot be used for app development purposes in a convenient way.</p>

<p>Many “council” members have lost interest in developing for KaiOS. Many have not and believe this OS will live on and cover a minority of the market. Both opinions seem reasonable and we&#39;ll have to wait to see what will happen.</p>

<p>I&#39;ve already considered an alternative mobile OS. I have two main requirements: First and most important, I must be able to easily hack the OS and write apps for it. Unfortunately, not Android nor iOS are not my answer. Developing an Android app requires you to have huge resources on your PC. And its ecosystem is hard to hack. Compiling Android itself takes ages and a regular PC. iOS on the other hand is even worse. To develop for iOS you need a MacBook and a developer licence from Apple. The second requirement is that I don&#39;t want my phone to be only a display which is boring and the outside view of most smartphones these days.</p>

<p>I haven&#39;t decided, yet. But <a href="https://postmarketos.org" rel="nofollow">postmarketOS</a> looks very promising. There is already good support of hardware features in <a href="https://wiki.postmarketos.org/wiki/Nokia_8000_4G_(nokia-sparkler)" rel="nofollow">8000 4G</a> and <a href="https://wiki.postmarketos.org/wiki/Nokia_2720_Flip_(nokia-beatles)" rel="nofollow">2720 Flip</a>. There is a possibility to port <a href="https://github.com/kaiostech/gecko-b2g" rel="nofollow">the new Gecko</a> to pmOS to bring the new KaiOS to the older phones. However, this is not easy, simple nor trivial.</p>

<p>One of members, mostly known as Affe Null, had developed their own ecosystem for KaiOS phones, mainly 8110 at that time. He had ported Debian to 8110 and also developed many apps for it including a <a href="https://git.abscue.de/obp/bananui/bananui" rel="nofollow">graphical shell</a>. Later, he moved to pmOS which seems a reasonable move.</p>
]]></content:encoded>
      <guid>https://blog.bananahackers.net/farooqkz/on-the-state-of-kaios-and-bananahackers-community-as-of-summer-of-2023</guid>
      <pubDate>Fri, 21 Apr 2023 20:38:33 +0200</pubDate>
    </item>
    <item>
      <title>chooj is back into the game!</title>
      <link>https://blog.bananahackers.net/farooqkz/chooj-is-back-into-the-game</link>
      <description>&lt;![CDATA[#chooj #matrix #matrixorg #chat #chatapp #chatclient #foss #kaios&#xA;&#xA;After a long period of no progress, I&#39;ve got time to work on chooj, the Matrix client for KaiOS, again! The progress is slow and constant funding is needed so that project will reach stable status within a reasonable period.&#xA;&#xA;!--more--&#xA;&#xA;What&#39;s new?&#xA;&#xA;From user point of view&#xA;&#xA;Because many security flaws were found in one of dependency libraries of chooj, matrix-js-sdk, I had to tell everyone to stop using chooj. The most important change is that with upgrade of this dependency, chooj is usable again.&#xA;&#xA;There are many small features which have been added. Most importantly, there is a much better and more friendly login progress, you can save pictures to gallery,  log out from chooj(In past the only option was uninstalling chooj and logging out from another client), and join rooms by entering room&#39;s alias(name) or id . Many bugs have been fixed and probably many new ones have been introduced. Finally, I&#39;ve added partial support for checking presence of your contacts. Please check if this feature works with your homeserver. For my homeserver, all contacts show as offline(gray badge next to the user avatar).&#xA;&#xA;From developer point of view&#xA;&#xA;All dependencies have been upgraded to latest versions. This include Inferno, the JS SDK, localforage and many others.&#xA;&#xA;I&#39;ve also switched from webpack to parceljs. The app was initially created with Create Inferno App which used webpack. But during upgrading dependencies(which also required upgrading node), I&#39;ve found webpack has too much overhead with its configuration. While when targeting KaiOS, zero configuration truly doesn&#39;t exist, parcel requires way less effort for this. Also parcel uses Rust which makes building much faster.&#xA;&#xA;There are working development and production builds. But more work must be done. For instance, when targeting Firefox 48, parcel tries to build a bundle which is good for both the ancient FF48 and newer browsers. FF48 doesn&#39;t support Javascript modules while modern browsers support. So parcel builds both module and nomodule Javascripts which make the bundle size twice. You can see this issue in parcel&#39;s repo for tracking the progress of it.&#xA;&#xA;Regarding the UI library, chooj was using AdrianMachado&#39;s KaiUI which is both ancient and intended to be a React UI library. React on KaiOS is really a terrible idea because of its efficiency. chooj, however, was using just styling stuff from the KaiUI. But the dependencies which were supposed to be used in a React project, was also installed with yarn install.&#xA;&#xA;As a long term solution, we need to fork this KaiUI and maintain it ourselves because Adrian is no longer working on it. For now I&#39;ve forked it to KaiUIv2 where all React stuff have been removed and now that is dependency of chooj. The styling stuff, however, is untouched. Many works must be done. I invite users of this KaiUI to help me with maintaining KaiUIv2.&#xA;&#xA;Future plans&#xA;&#xA;I plan to keep the look and feel of chooj as is till I release the first version(which will be 0.0.0). The 0.0.0 release will have very basic functionalities of a chat app including basic chatting, joining rooms both through public directories and by name, inviting users to DM, managing invites, experimental push notification support and perhaps voice call or end to end encryption support.&#xA;&#xA;After that, huge changes must be made. You can see a proposed UI design in this issue. And so many internal changes like separating the KaiUI Inferno components from chooj should also be done.&#xA;&#xA;KaiOS 3.x support&#xA;&#xA;There is no KaiOS 3.x support at the time of writing this post simply because there is no KaiOS 3.x global device which is also debug enabled. Many phones have been released which are US-only. There is Nokia 2780 which is US-only but not carrier locked. But community member who have bought this device are spending their time on finding a way to enable debug mode on this device.&#xA;&#xA;Funding and help needed&#xA;&#xA;Constant funding is needed for the project in the long term:&#xA;&#xA; Push gateway server is required for receiving push notifications. The server software should be written in Rust(or possibly Go if someone else wanted to take the job) which relays the notifications from user&#39;s homeserver to user&#39;s device. The server cost will vary depending on the number of users of chooj. If the number of users are big enough, we could have more than one server for different regions.&#xA;&#xA; Funding is also needed for development of chooj and its push gateway software. While I try to not abandon chooj, but I need an income for my life.&#xA;&#xA; chooj must be tested on different KaiOS versions and phones with different hardware features. For instance, the video call feature will require a phone with a front/selfie camera. While it is possible that I do this part of development remotely(e.g. tell someone else to test), it will be very painful and slow.&#xA;&#xA;To help with funding, I&#39;ve put a Bitcoin Cash(not Bitcoin) address in the project&#39;s README. If you are not already familiar with cryptocurrency stuff, you can buy from Paypal or an exchange like which I&#39;ve mentioned in the link above. And then sending to my address.&#xA;&#xA;There are many other stuff which money will not solve like testing. There is no machine which I can feed it money and after that it will tell me bugs of this project. Also I am a developer and not a UI/UX designer. So help and feedback from the community is necessary just like funding.]]&gt;</description>
      <content:encoded><![CDATA[<p><a href="/farooqkz/tag:chooj" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">chooj</span></a> <a href="/farooqkz/tag:matrix" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">matrix</span></a> <a href="/farooqkz/tag:matrixorg" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">matrixorg</span></a> <a href="/farooqkz/tag:chat" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">chat</span></a> <a href="/farooqkz/tag:chatapp" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">chatapp</span></a> <a href="/farooqkz/tag:chatclient" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">chatclient</span></a> <a href="/farooqkz/tag:foss" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">foss</span></a> <a href="/farooqkz/tag:kaios" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">kaios</span></a></p>

<p>After a long period of no progress, I&#39;ve got time to work on <a href="https://github.com/farooqkz/chooj" rel="nofollow">chooj, the Matrix client for KaiOS</a>, again! The progress is slow and constant funding is needed so that project will reach stable status within a reasonable period.</p>



<h3 id="what-s-new" id="what-s-new">What&#39;s new?</h3>

<h4 id="from-user-point-of-view" id="from-user-point-of-view">From user point of view</h4>

<p>Because many security flaws were found in one of dependency libraries of chooj, <code>matrix-js-sdk</code>, I had to tell everyone to stop using chooj. The most important change is that with upgrade of this dependency, chooj is usable again.</p>

<p>There are many small features which have been added. Most importantly, there is a much better and more friendly login progress, you can save pictures to gallery,  log out from chooj(In past the only option was uninstalling chooj and logging out from another client), and join rooms by entering room&#39;s alias(name) or id . Many bugs have been fixed and probably many new ones have been introduced. Finally, I&#39;ve added partial support for checking presence of your contacts. Please check if this feature works with your homeserver. For my homeserver, all contacts show as offline(gray badge next to the user avatar).</p>

<h4 id="from-developer-point-of-view" id="from-developer-point-of-view">From developer point of view</h4>

<p>All dependencies have been upgraded to latest versions. This include <a href="https://infernojs.org/" rel="nofollow">Inferno</a>, <a href="https://github.com/matrix-org/matrix-js-sdk" rel="nofollow">the JS SDK</a>, <a href="https://localforage.github.io/localForage" rel="nofollow">localforage</a> and many others.</p>

<p>I&#39;ve also switched from <a href="https://webpack.js.org" rel="nofollow">webpack</a> to <a href="https://parceljs.org" rel="nofollow">parceljs</a>. The app was initially created with <a href="https://github.com/infernojs/create-inferno-app" rel="nofollow">Create Inferno App</a> which used webpack. But during upgrading dependencies(which also required upgrading node), I&#39;ve found webpack has too much overhead with its configuration. While when targeting KaiOS, zero configuration truly doesn&#39;t exist, parcel requires way less effort for this. Also parcel uses <a href="https://rust-lang.org/" rel="nofollow">Rust</a> which makes building much faster.</p>

<p>There are working development and production builds. But more work must be done. For instance, when targeting Firefox 48, parcel tries to build a bundle which is good for both the ancient FF48 and newer browsers. FF48 doesn&#39;t support Javascript modules while modern browsers support. So parcel builds both module and nomodule Javascripts which make the bundle size twice. You can see <a href="https://github.com/parcel-bundler/parcel/issues/8783" rel="nofollow">this issue in parcel&#39;s repo</a> for tracking the progress of it.</p>

<p>Regarding the UI library, chooj was using <a href="https://github.com/AdrianMachado/KaiUI" rel="nofollow">AdrianMachado&#39;s KaiUI</a> which is both ancient and intended to be a React UI library. React on KaiOS is really a terrible idea because of its efficiency. chooj, however, was using just styling stuff from the KaiUI. But the dependencies which were supposed to be used in a React project, was also installed with <code>yarn install</code>.</p>

<p>As a long term solution, we need to fork this KaiUI and maintain it ourselves because Adrian is no longer working on it. For now I&#39;ve forked it to <a href="https://github.com/farooqkz/KaiUIv2" rel="nofollow">KaiUIv2</a> where all React stuff have been removed and now that is dependency of chooj. The styling stuff, however, is untouched. Many works must be done. I invite users of this KaiUI to help me with <a href="https://github.com/farooqkz/KaiUIv2/issues" rel="nofollow">maintaining KaiUIv2</a>.</p>

<h3 id="future-plans" id="future-plans">Future plans</h3>

<p>I plan to keep the look and feel of chooj as is till I release the first version(which will be <code>0.0.0</code>). The <code>0.0.0</code> release will have very basic functionalities of a chat app including basic chatting, joining rooms both through public directories and by name, inviting users to DM, managing invites, experimental push notification support and perhaps voice call or end to end encryption support.</p>

<p>After that, huge changes must be made. You can see a proposed UI design in <a href="https://github.com/farooqkz/chooj/issues/51" rel="nofollow">this issue</a>. And so many internal changes like <a href="https://github.com/farooqkz/chooj/issues/62" rel="nofollow">separating the KaiUI Inferno components from chooj</a> should also be done.</p>

<h3 id="kaios-3-x-support" id="kaios-3-x-support">KaiOS 3.x support</h3>

<p>There is no KaiOS 3.x support at the time of writing this post simply because there is no KaiOS 3.x global device which is also debug enabled. Many phones have been released which are US-only. There is <a href="https://wiki.bananahackers.net/en/devices/nokia-2780-flip" rel="nofollow">Nokia 2780</a> which is US-only but not carrier locked. But community member who have bought this device are spending their time on finding a way to enable debug mode on this device.</p>

<h3 id="funding-and-help-needed" id="funding-and-help-needed">Funding and help needed</h3>

<p>Constant funding is needed for the project in the long term:</p>
<ul><li><p>Push gateway server is required for receiving push notifications. The server software should be written in Rust(or possibly Go if someone else wanted to take the job) which relays the notifications from user&#39;s homeserver to user&#39;s device. The server cost will vary depending on the number of users of chooj. If the number of users are big enough, we could have more than one server for different regions.</p></li>

<li><p>Funding is also needed for development of chooj and its push gateway software. While I try to not abandon chooj, but I need an income for my life.</p></li>

<li><p>chooj must be tested on different KaiOS versions and phones with different hardware features. For instance, the video call feature will require a phone with a front/selfie camera. While it is possible that I do this part of development remotely(e.g. tell someone else to test), it will be very painful and slow.</p></li></ul>

<p>To help with funding, I&#39;ve put a Bitcoin Cash(<strong>not Bitcoin</strong>) address in <a href="https://github.com/farooqkz/chooj#donations" rel="nofollow">the project&#39;s README</a>. If you are not already familiar with cryptocurrency stuff, you can buy from Paypal or an exchange like which I&#39;ve mentioned in the link above. And then sending to my address.</p>

<p>There are many other stuff which money will not solve like testing. There is no machine which I can feed it money and after that it will tell me bugs of this project. Also I am a developer and not a UI/UX designer. So help and feedback from the community is necessary just like funding.</p>
]]></content:encoded>
      <guid>https://blog.bananahackers.net/farooqkz/chooj-is-back-into-the-game</guid>
      <pubDate>Sun, 12 Feb 2023 17:14:46 +0100</pubDate>
    </item>
    <item>
      <title>KaiOS shows us importance of FOSS</title>
      <link>https://blog.bananahackers.net/farooqkz/kaios-shows-us-importance-of-foss</link>
      <description>&lt;![CDATA[#kaios #foss #opensource #freesoftware #libresoftware&#xA;&#xA;About software and its distribution&#xA;&#xA;In the years which software was not commercialized and copyright about software was not yet a thing. People were distributing software and its source code and users were changing the software to their wish for better usability. The term hacker didn&#39;t mean someone who breaks into servers but it meant someone who plays around with the software and possibly fix bugs or add features to make it more useful. Today, this is known as &#34;Hacker in the MIT sense&#34;.&#xA;&#xA;!--more--&#xA;&#xA;Later came FOSS to bring the same advantages to the software world in the modern era. FOSS stands for Free Open Source Software. Strictly speaking, free software and open source software are different. Free here means freedom not zero price. However most pieces of software which are free software are also open source and vice versa. This includes those under MIT/X11, GPL, LGPL, MPL and many many other such these licences.&#xA;&#xA;Nowadays, a software does not necessarily come with the source code. Even if it&#39;s written in a language like Javascript which does not give your a binary, yet you don&#39;t have the source code because people mangle and minify the JS code. This will make the final package smaller and will also prevent users from understanding what the software does. To understand such a code, first you must add proper formatting and indentation to it. After that you&#39;ll have a bunch of function or variable names which use a single character and no comments to help you understand the code. I remember a friend had said &#34;These apps have been written without any love&#34;. I told him the &#34;love&#34; has been removed from the apps before deploying to production!&#xA;&#xA;From a point of view, KaiOS is just a pre-built Lego, just like any other Unix-like distribution. It&#39;s a Linux distro. The main parts of this Lego are the Linux kernel which its job is communication with the hardware, the libraries including libc which provide a useful and more abstract way to talk to kernel, and finally Gecko which on the top of it KaiOS applications, including the System app and the stock apps, run. There are also many other stuff like propriety vendor-dependent stuff.&#xA;&#xA;Which parts of KaiOS are FOSS?&#xA;&#xA;The Linux kernel used in KaiOS phones is under GPLv2. GPL is a strong copyleft licence. Many other &#34;userland&#34; libraries have similar licences. Gecko has a copyleft licence but a weak one. Copyleft means you can take the software and use it and possibly change it. But if you want to give the software to the others, you must give them the software and the changes in source code form as well. So from a legal point of view, KaiOS manufacturers must provide users the source codes which are under a copyleft licence. For example Nokia has published source code of Linux, many libraries and Gecko.&#xA;&#xA;But will giving you the source code make it possible for you to change the OS to your wish and deploy the new version to your phone? Sadly, the answer is not a total yes.&#xA;&#xA;First, many drivers are vendor-dependent and propriety. For instance, my 800 Tough has a Snapdragon from Qualcomm. If you have a similar phone, you will find many stuff in your phone with qcom in their name for various hardware features of the phone, including but not limited to Camera, charging, Cellular data and 3D acceleration. So where&#39;s the copyleft? The Linux kernel is under GPL which is a strong copyleft. Strong copyleft simply means you cannot combine propriety code with strong copyleft code. But Qualcomm uses propriety firmwares for various hardwares on the phone which are not linked with the Linux kernel and therefore it&#39;s not necessary to release the source code. Also not every part of KaiOS is strong copyleft. There is also weak copyleft which permits the combination as long as the original source code will be available. Or in other words, the open source part does not become closed source. Gecko uses Mozilla Public License or MPL which is of this kind.&#xA;&#xA;Second, there are many &#34;System&#34; and &#34;Stock&#34; apps used in KaiOS which are not FOSS. If you want your own free KaiOS, you&#39;ll have to write your own version of these apps. Like Contact, Call log, messaging and Settings app. And the most important one, the System app which runs other apps.&#xA;&#xA;Third and the worst problem is that even if you&#39;ve got an OS to deploy, the problem is the deploying process! You&#39;ll need to write your version of OS to device&#39;s internal storage and make your phone boot it. It&#39;s not easy, simple or straightforward. Companies usually lock their phones to prevent this and frighten customers that if they try such these ways, their phone will go out of warranty.&#xA;&#xA;Nevertheless, there has been attempts to port different stuff to KaiOS phones by using the Linux kernel and possibly other userlands. You can see Affe Null&#39;s Bananian project which ports Debian to the BananaPhone. I also remember Affe talking about running KaiOS 3.x on his port but it wasn&#39;t useful without hardware drivers and other apps, especially the System app. Last time I asked him, he said he is no longer working on Bananian and instead working on postmarketOS.&#xA;&#xA;Note: postmarketOS is a Linux distribution for the mobile phones. It uses the mainline Linux kernel and Alpine Linux on the top. You might see a variety of different old or very old mobile phones, mostly Android ones, which pmOS supports them. Unfortunately, because of drivers being propriety and little manpower to reverse engineer and replace them with FOSS ones, there aren&#39;t many devices with very good support of pmOS.&#xA;&#xA;So just the kernel being FOSS has enabled the community to port different stuff to these feature phones. And this shows importance of the kernel to be FOSS.&#xA;&#xA;Which parts of KaiOS are source available but not FOSS?&#xA;&#xA;Source available means you can see the source code but you are not permitted to change it and/or distribute with or without changes. All stock and System apps of KaiOS are source available because they are written in Javascript. Because the JS code has been mangled and minified, it&#39;s not easy to understand and modify them. Yet the BananaHackers community has provided near 20 ways as of writing this post to customize your device. To have custom launcher, custom Contact app, custom apps to launch from Lock-screen, change settings of stock apps and a lot more.&#xA;&#xA;Now imagine if we had source code of these apps under a FOSS licence, we could do much better and travel much further. Because the licence of stock apps does not allow re-distribution, legally we are not permitted to publish the entire improved packages or custom ROMs.&#xA;&#xA;Conclusion&#xA;&#xA;So if the ecosystem was FOSS-based and if the devices were not locked, KaiOS could be much better and it wasn&#39;t the only practical choice we have got on our mobile phones. And we see that even though the stock apps are not FOSS, and their sources are not available, we have made significant improvements to the ecosystem for ourselves and other users of this ecosystem. If locked phones were not locked, their users could have these improvements in their hands as well.]]&gt;</description>
      <content:encoded><![CDATA[<p><a href="/farooqkz/tag:kaios" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">kaios</span></a> <a href="/farooqkz/tag:foss" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">foss</span></a> <a href="/farooqkz/tag:opensource" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">opensource</span></a> <a href="/farooqkz/tag:freesoftware" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">freesoftware</span></a> <a href="/farooqkz/tag:libresoftware" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">libresoftware</span></a></p>

<h2 id="about-software-and-its-distribution" id="about-software-and-its-distribution">About software and its distribution</h2>

<p>In the years which software was not commercialized and copyright about software was not yet a thing. People were distributing software and its source code and users were changing the software to their wish for better usability. The term hacker didn&#39;t mean someone who breaks into servers but it meant someone who plays around with the software and possibly fix bugs or add features to make it more useful. Today, this is known as “Hacker in the MIT sense”.</p>



<p>Later came FOSS to bring the same advantages to the software world in the modern era. FOSS stands for Free Open Source Software. Strictly speaking, free software and open source software are different. Free here means freedom not zero price. However most pieces of software which are free software are also open source and vice versa. This includes those under <a href="https://en.wikipedia.org/wiki/MIT_License" rel="nofollow">MIT/X11</a>, <a href="https://en.wikipedia.org/wiki/GNU_General_Public_License" rel="nofollow">GPL</a>, <a href="https://en.wikipedia.org/wiki/GNU_Lesser_General_Public_License" rel="nofollow">LGPL</a>, <a href="https://en.wikipedia.org/wiki/Mozilla_Public_License" rel="nofollow">MPL</a> and many many other such these licences.</p>

<p>Nowadays, a software does not necessarily come with the source code. Even if it&#39;s written in a language like Javascript which does not give your a binary, yet you don&#39;t have the source code because people mangle and minify the JS code. This will make the final package smaller and will also prevent users from understanding what the software does. To understand such a code, first you must add proper formatting and indentation to it. After that you&#39;ll have a bunch of function or variable names which use a single character and no comments to help you understand the code. I remember a friend had said “These apps have been written without any love”. I told him the “love” has been removed from the apps before deploying to production!</p>

<p>From a point of view, KaiOS is just a pre-built Lego, just like any other Unix-like distribution. It&#39;s a Linux distro. The main parts of this Lego are the Linux kernel which its job is communication with the hardware, the libraries including <code>libc</code> which provide a useful and more abstract way to talk to kernel, and finally Gecko which on the top of it KaiOS applications, including the System app and the stock apps, run. There are also many other stuff like propriety vendor-dependent stuff.</p>

<h2 id="which-parts-of-kaios-are-foss" id="which-parts-of-kaios-are-foss">Which parts of KaiOS are FOSS?</h2>

<p>The Linux kernel used in KaiOS phones is under GPLv2. GPL is a strong copyleft licence. Many other “userland” libraries have similar licences. Gecko has a copyleft licence but a weak one. Copyleft means you can take the software and use it and possibly change it. But if you want to give the software to the others, you must give them the software and the changes in source code form as well. So from a legal point of view, KaiOS manufacturers must provide users the source codes which are under a copyleft licence. For example Nokia has published source code of Linux, many libraries and Gecko.</p>

<p>But will giving you the source code make it possible for you to change the OS to your wish and deploy the new version to your phone? Sadly, the answer is not a total yes.</p>

<p>First, many drivers are vendor-dependent and propriety. For instance, my 800 Tough has a Snapdragon from Qualcomm. If you have a similar phone, you will find many stuff in your phone with <code>qcom</code> in their name for various hardware features of the phone, including but not limited to Camera, charging, Cellular data and 3D acceleration. So where&#39;s the copyleft? The Linux kernel is under GPL which is a strong copyleft. Strong copyleft simply means you cannot combine propriety code with strong copyleft code. But Qualcomm uses propriety firmwares for various hardwares on the phone which are not linked with the Linux kernel and therefore it&#39;s not necessary to release the source code. Also not every part of KaiOS is strong copyleft. There is also weak copyleft which permits the combination as long as the original source code will be available. Or in other words, the open source part does not become closed source. Gecko uses Mozilla Public License or MPL which is of this kind.</p>

<p>Second, there are many “System” and “Stock” apps used in KaiOS which are not FOSS. If you want your own free KaiOS, you&#39;ll have to write your own version of these apps. Like Contact, Call log, messaging and Settings app. And the most important one, the System app which runs other apps.</p>

<p>Third and the worst problem is that even if you&#39;ve got an OS to deploy, the problem is the deploying process! You&#39;ll need to write your version of OS to device&#39;s internal storage and make your phone boot it. It&#39;s not easy, simple or straightforward. Companies usually lock their phones to prevent this and frighten customers that if they try such these ways, their phone will go out of warranty.</p>

<p>Nevertheless, there has been attempts to port different stuff to KaiOS phones by using the Linux kernel and possibly other userlands. You can see <a href="https://git.abscue.de/bananian/bananian" rel="nofollow">Affe Null&#39;s Bananian</a> project which ports <a href="https://debian.org" rel="nofollow">Debian</a> to the BananaPhone. I also remember Affe talking about running KaiOS 3.x on his port but it wasn&#39;t useful without hardware drivers and other apps, especially the System app. Last time I asked him, he said he is no longer working on Bananian and instead working on <a href="https://postmarketos.org/" rel="nofollow">postmarketOS</a>.</p>

<p><strong>Note: postmarketOS is a Linux distribution for the mobile phones. It uses the mainline Linux kernel and <a href="https://alpinelinux.org/" rel="nofollow">Alpine Linux</a> on the top. You might see a variety of different old or very old mobile phones, mostly Android ones, which pmOS supports them. Unfortunately, because of drivers being propriety and little manpower to reverse engineer and replace them with FOSS ones, there aren&#39;t many devices with very good support of pmOS.</strong></p>

<p>So just the kernel being FOSS has enabled the community to port different stuff to these feature phones. And this shows importance of the kernel to be FOSS.</p>

<h2 id="which-parts-of-kaios-are-source-available-but-not-foss" id="which-parts-of-kaios-are-source-available-but-not-foss">Which parts of KaiOS are source available but not FOSS?</h2>

<p>Source available means you can see the source code but you are not permitted to change it and/or distribute with or without changes. All stock and System apps of KaiOS are source available because they are written in Javascript. Because the JS code has been mangled and minified, it&#39;s not easy to understand and modify them. Yet <a href="https://wiki.bananahackers.net/Customizations" rel="nofollow">the BananaHackers community has provided near 20 ways</a> as of writing this post to customize your device. To have custom launcher, custom Contact app, custom apps to launch from Lock-screen, change settings of stock apps and a lot more.</p>

<p>Now imagine if we had source code of these apps under a FOSS licence, we could do much better and travel much further. Because the licence of stock apps does not allow re-distribution, <em>legally</em> we are not permitted to publish the entire improved packages or custom ROMs.</p>

<h2 id="conclusion" id="conclusion">Conclusion</h2>

<p>So if the ecosystem was FOSS-based and if the devices were not locked, KaiOS could be much better and it wasn&#39;t the only practical choice we have got on our mobile phones. And we see that even though the stock apps are not FOSS, and their sources are not available, we have made significant improvements to the ecosystem for ourselves and other users of this ecosystem. If <a href="https://wiki.bananahackers.net/en/devices/locked-devices" rel="nofollow">locked phones</a> were not locked, their users could have these improvements in their hands as well.</p>
]]></content:encoded>
      <guid>https://blog.bananahackers.net/farooqkz/kaios-shows-us-importance-of-foss</guid>
      <pubDate>Tue, 03 Jan 2023 17:27:51 +0100</pubDate>
    </item>
    <item>
      <title>KaiOS is a good choice for you if...</title>
      <link>https://blog.bananahackers.net/farooqkz/kaios-is-a-good-choice-for-you-if</link>
      <description>&lt;![CDATA[#kaios #recommendation #techrecommandation&#xA;&#xA;Special thanks to Simon for editing&#xA;&#xA;In this post, I write about different reasons people choose KaiOS as their primary mobile operating system over mainstream ones such as Android.&#xA;&#xA;Why did I prefer KaiOS?&#xA;&#xA;When I was beginning to enter university, just like many many other students at the same age as mine, I needed a mobile phone. As a student and a bookworm I needed some small and lightweight device to read books, articles, websites and such of these. On the other hand, I had seen how people waste their time in mainstream social medias such as WhatsApp, Telegram and Instagram.&#xA;&#xA;So I took a different approach: I don&#39;t get myself a smart Android phone which I could carry Instagram and such these with myself everywhere and waste my time with it instead of socializing and being with friends and family. Instead, I planned to get an Android tablet with E-ink display with which I can read books, articles, papers, websites and blogs and everything else. Because the screen is E-ink rather than IPS or LED, it is almost like a regular piece of paper and thus it won&#39;t hurt my eyes.&#xA;&#xA;But the E-ink Android tablet I wanted to buy didn&#39;t have access to Cellular data. Only WiFi and Bluetooth. So I needed something to feed Cellular data to my tablet on the go. I needed a phone capable of basic Telephony and Messaging plus hotspot. At that time I had found KaiOS and the BananaPhone which the name BananaHacker is derived from it.&#xA;&#xA;Back then, I looked in KaiStore and barely 100 apps were available for it. I thought I wouldn&#39;t need to do anything with my KaiOS phone because I would also have an Android tablet. So I bought 8110, Nokia&#39;s first KaiOS phone.&#xA;&#xA;!--more--&#xA;&#xA;First reason: You want to use KaiOS because you don&#39;t want to be a social media addict&#xA;&#xA;You might have the same reason as me preferring KaiOS to Android. You simply feel you shouldn&#39;t waste too much time with social media.&#xA;&#xA;Actually there is a working unofficial Telegram app for KaiOS and there is official WhatsApp. I think the ZAP Reddit client is still out there and I started developing a Matrix client, chooj, for the emerging mobile operating system. But will you be able to chat with people for a few hours with the ABC keyboard? I guess not!&#xA;&#xA;Second reason: You want to modify everything&#xA;&#xA;KaiOS 2.5.1 and 2.5.2 are easily rootable. And the System app which is the main app for KaiOS uses Javascript as well as all other apps, including the stock ones. Javascript is not a compiled language. Rather, it is interpreted language. So the compiled Javascript app is very easily moddable. This means you can easily mod the System, Keyboard and other stock apps. Or, like Luxferre, create your own cool replacement.&#xA;&#xA;KaiOS is really lovely if you love modding your phone. Maybe because you are a Geek and you cannot use your phone the way other ordinary people do.&#xA;&#xA;Third reason: You want to be part of the revolution&#xA;&#xA;KaiOS is a new operating system. It&#39;s very buggy, the 2.5.x version is relatively slow. And its stock apps are really terrible usually. But it might have a good future(or not). So perhaps it&#39;s a good idea putting sometime codding for it and learning it in the hope that it will have some good future. Of course, because of its clouded uncertain future, it is probably not a good idea putting too much effort on it.&#xA;&#xA;Other reasons&#xA;&#xA;There are many other reasons people prefer a KaiOS phone. These reasons include but are not limited to probably longer battery life, being cheaper and maybe more efficient comparing to Android devices of the same price.&#xA;&#xA;I might have missed something or forgotten or perhaps you want to share you own reasons for preferring KaiOS. Feel free to Email me and I will include your opinion here:&#xA;&#xA;fkz [at] riseup [dot] net&#xA;`]]&gt;</description>
      <content:encoded><![CDATA[<p><a href="/farooqkz/tag:kaios" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">kaios</span></a> <a href="/farooqkz/tag:recommendation" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">recommendation</span></a> <a href="/farooqkz/tag:techrecommandation" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">techrecommandation</span></a></p>

<h4 id="special-thanks-to-simon-for-editing" id="special-thanks-to-simon-for-editing">Special thanks to Simon for editing</h4>

<p>In this post, I write about different reasons people choose KaiOS as their primary mobile operating system over mainstream ones such as Android.</p>

<h2 id="why-did-i-prefer-kaios" id="why-did-i-prefer-kaios">Why did I prefer KaiOS?</h2>

<p>When I was beginning to enter university, just like many many other students at the same age as mine, I needed a mobile phone. As a student and a bookworm I needed some small and lightweight device to read books, articles, websites and such of these. On the other hand, I had seen how people waste their time in mainstream social medias such as WhatsApp, Telegram and Instagram.</p>

<p>So I took a different approach: I don&#39;t get myself a smart Android phone which I could carry Instagram and such these with myself everywhere and waste my time with it instead of socializing and being with friends and family. Instead, I planned to get an Android tablet with E-ink display with which I can read books, articles, papers, websites and blogs and everything else. Because the screen is E-ink rather than IPS or LED, it is almost like a regular piece of paper and thus it won&#39;t hurt my eyes.</p>

<p>But the E-ink Android tablet I wanted to buy didn&#39;t have access to Cellular data. Only WiFi and Bluetooth. So I needed something to feed Cellular data to my tablet on the go. I needed a phone capable of basic Telephony and Messaging plus hotspot. At that time I had found KaiOS and the BananaPhone which the name BananaHacker is derived from it.</p>

<p>Back then, I looked in KaiStore and barely 100 apps were available for it. I thought I wouldn&#39;t need to do anything with my KaiOS phone because I would also have an Android tablet. So I bought 8110, Nokia&#39;s first KaiOS phone.</p>



<h2 id="first-reason-you-want-to-use-kaios-because-you-don-t-want-to-be-a-social-media-addict" id="first-reason-you-want-to-use-kaios-because-you-don-t-want-to-be-a-social-media-addict">First reason: You want to use KaiOS because you don&#39;t want to be a social media addict</h2>

<p>You might have the same reason as me preferring KaiOS to Android. You simply feel you shouldn&#39;t waste too much time with social media.</p>

<p>Actually there is a working unofficial Telegram app for KaiOS and there is official WhatsApp. I think the ZAP Reddit client is still out there and I started developing a Matrix client, <a href="https://github.com/farooqkz/chooj" rel="nofollow">chooj</a>, for the emerging mobile operating system. But will you be able to chat with people for a few hours with the ABC keyboard? I guess not!</p>

<h2 id="second-reason-you-want-to-modify-everything" id="second-reason-you-want-to-modify-everything">Second reason: You want to modify everything</h2>

<p>KaiOS 2.5.1 and 2.5.2 are easily rootable. And the System app which is the main app for KaiOS uses Javascript as well as all other apps, including the stock ones. Javascript is not a compiled language. Rather, it is interpreted language. So the compiled Javascript app is very easily moddable. This means you can easily mod the System, Keyboard and other stock apps. Or, like Luxferre, <a href="https://blog.bananahackers.net/farooqkz/fastcontact-a-great-replacement-for-the-stock-kaios-contacts-app-by-luxferre" rel="nofollow">create your own cool replacement</a>.</p>

<p>KaiOS is really lovely if you love modding your phone. Maybe because you are a Geek and you cannot use your phone the way other ordinary people do.</p>

<h2 id="third-reason-you-want-to-be-part-of-the-revolution" id="third-reason-you-want-to-be-part-of-the-revolution">Third reason: You want to be part of the revolution</h2>

<p>KaiOS is a new operating system. It&#39;s very buggy, the 2.5.x version is relatively slow. And its stock apps are really terrible usually. But it might have a good future(or not). So perhaps it&#39;s a good idea putting sometime codding for it and learning it in the hope that it will have some good future. Of course, because of its clouded uncertain future, it is probably not a good idea putting too much effort on it.</p>

<h2 id="other-reasons" id="other-reasons">Other reasons</h2>

<p>There are many other reasons people prefer a KaiOS phone. These reasons include but are not limited to probably longer battery life, being cheaper and maybe more efficient comparing to Android devices of the same price.</p>

<p>I might have missed something or forgotten or perhaps you want to share you own reasons for preferring KaiOS. Feel free to Email me and I will include your opinion here:</p>

<pre><code>fkz [at] riseup [dot] net
</code></pre>
]]></content:encoded>
      <guid>https://blog.bananahackers.net/farooqkz/kaios-is-a-good-choice-for-you-if</guid>
      <pubDate>Wed, 29 Jun 2022 11:59:19 +0200</pubDate>
    </item>
    <item>
      <title>Some imaginary quotes from Master Ivan Alex HC</title>
      <link>https://blog.bananahackers.net/farooqkz/some-imaginary-quotes-from-master-ivan-alex-hc</link>
      <description>&lt;![CDATA[#starwars #kaios #bananahackers #gerda #gerdaos&#xA;&#xA;  This is Master Ivan Alex HC(aka Uncle Ivan). I have to regret that both the Gerda order and the Republic, the democracy we had have fallen in order to give their place to the dark shadows of Darth Kai and the Empire. This is a reminder and warning for all surviving coders. Do not return to the Gerda repository and trust only in the source. In time, a new hope will emerge. May the source be with you, always!&#xA;&#xA;-- Adapted from Master Obi-wan&#39;s qoutes in Star Wars Rebels series]]&gt;</description>
      <content:encoded><![CDATA[<p><a href="/farooqkz/tag:starwars" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">starwars</span></a> <a href="/farooqkz/tag:kaios" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">kaios</span></a> <a href="/farooqkz/tag:bananahackers" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">bananahackers</span></a> <a href="/farooqkz/tag:gerda" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">gerda</span></a> <a href="/farooqkz/tag:gerdaos" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">gerdaos</span></a></p>

<blockquote><p>This is Master Ivan Alex HC(aka Uncle Ivan). I have to regret that both the Gerda order and the Republic, the democracy we had have fallen in order to give their place to the dark shadows of Darth Kai and the Empire. This is a reminder and warning for all surviving coders. Do not return to the Gerda repository and trust only in the source. In time, a new hope will emerge. May the source be with you, always!</p></blockquote>

<p>— Adapted from Master Obi-wan&#39;s qoutes in Star Wars Rebels series</p>
]]></content:encoded>
      <guid>https://blog.bananahackers.net/farooqkz/some-imaginary-quotes-from-master-ivan-alex-hc</guid>
      <pubDate>Fri, 03 Jun 2022 19:02:27 +0200</pubDate>
    </item>
    <item>
      <title>FastContact: A great replacement for the stock KaiOS Contacts app by Luxferre</title>
      <link>https://blog.bananahackers.net/farooqkz/fastcontact-a-great-replacement-for-the-stock-kaios-contacts-app-by-luxferre</link>
      <description>&lt;![CDATA[#kaios #bananahackers&#xA;&#xA;Special thanks to Mort and Simon for editing&#xA;&#xA;Today, after several months of the first release of FastContact, an open-source and super light contact app replacement for the stock Contacts app, I gave it a try. Perhaps &#34;Super Awesome&#34; is the best phrase I can find to describe my experience with his app.&#xA;&#xA;!--more--&#xA;&#xA;If you&#39;ve been a user of KaiOS smart feature phones, you definitely have suffered from the lag and slowness in KaiOS and its stock applications. For some apps like WhatsApp and Email, I don&#39;t suffer that much as I don&#39;t need them almost every time I unlock my phone to do something with it. The lag has at least two sources:&#xA;&#xA;The KaiOS itself is based on an ancient version of Firefox, which is 48.&#xA;&#xA;The app itself if the app is using JavaScript and/or CSS frameworks which are slow for KaiOS.&#xA;&#xA;Luxferre on the other side has taken the approach to use no JavaScript framework in his FastContact app as well as other of his &#34;Fast&#34; apps, making the app as fast as possible. While I am not sure regarding the neglect of any JavaScript framework, even InfernoJS which has got a performance nearly as good as plain/vanilla JS, the performance of FastContact is more than impressive.&#xA;&#xA;Two other measures for the lightness of an app are Memory and Storage usage. Taking a memory snapshot of FastContact while running shows only 0.5-0.6 MB while for the stock Contacts app on my 800 Tough, it&#39;s around 5.5 MB. One of the reasons definitely would be that the stock app shows 20 contacts at a time and has a more complex DOM structure and more complex CSS.&#xA;&#xA;As for load time and storage, because FastContact loads only a little few contacts initially and because of using no &#34;heavy&#34; stuff is less in size which helps it load significantly faster when compared to the stock one.&#xA;&#xA;In the last paragraph of the post, I make you remember that Luxferre is from Ukraine. If you are a Russian citizen perhaps it is a good advice for your government to stop the going war in Ukraine.&#xA;&#xA;Bonus&#xA;&#xA;Haha, one more paragraph as a bonus: You might be interested in this guide in the BananaHackers wiki which is about assigning FastContact to a hotkey to quickly open it instead of the stock alternative.]]&gt;</description>
      <content:encoded><![CDATA[<p><a href="/farooqkz/tag:kaios" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">kaios</span></a> <a href="/farooqkz/tag:bananahackers" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">bananahackers</span></a></p>

<h4 id="special-thanks-to-mort-and-simon-for-editing" id="special-thanks-to-mort-and-simon-for-editing">Special thanks to Mort and Simon for editing</h4>

<p>Today, after several months of the first release of <a href="https://store.bananahackers.net/#fastcontact" rel="nofollow">FastContact</a>, an open-source and super light contact app replacement for the stock Contacts app, I gave it a try. Perhaps “Super Awesome” is the best phrase I can find to describe my experience with his app.</p>



<p>If you&#39;ve been a user of KaiOS smart feature phones, you definitely have suffered from the lag and slowness in KaiOS and its stock applications. For some apps like WhatsApp and Email, I don&#39;t suffer that much as I don&#39;t need them almost every time I unlock my phone to do something with it. The lag has at least two sources:</p>
<ol><li><p>The KaiOS itself is based on an ancient version of Firefox, which is 48.</p></li>

<li><p>The app itself if the app is using JavaScript and/or CSS frameworks which are slow for KaiOS.</p></li></ol>

<p>Luxferre on the other side has taken the approach to use no JavaScript framework in his FastContact app as well as other of his “Fast” apps, making the app as fast as possible. While I am not sure regarding the neglect of <em>any</em> JavaScript framework, even <a href="https://stefankrause.net/js-frameworks-benchmark8/table.html" rel="nofollow">InfernoJS which has got a performance nearly as good as plain/vanilla JS</a>, the performance of FastContact is more than impressive.</p>

<p>Two other measures for the lightness of an app are Memory and Storage usage. Taking a memory snapshot of FastContact while running shows only <code>0.5-0.6 MB</code> while for the stock Contacts app on my 800 Tough, it&#39;s around <code>5.5 MB</code>. One of the reasons definitely would be that the stock app shows 20 contacts at a time and has a more complex DOM structure and more complex CSS.</p>

<p>As for load time and storage, because FastContact loads only a little few contacts initially and because of using no “heavy” stuff is less in size which helps it load significantly faster when compared to the stock one.</p>

<p>In the last paragraph of the post, I make you remember that Luxferre is from Ukraine. If you are a Russian citizen perhaps it is a good advice for your government to <strong>stop the going war in Ukraine</strong>.</p>

<h2 id="bonus" id="bonus">Bonus</h2>

<p>Haha, one more paragraph as a bonus: You might be interested in <a href="https://wiki.bananahackers.net/en/Customizations/assigning-fastcontact-to-arrowright-key-or-any-other-app" rel="nofollow">this guide in the BananaHackers wiki</a> which is about assigning FastContact to a hotkey to quickly open it instead of the stock alternative.</p>
]]></content:encoded>
      <guid>https://blog.bananahackers.net/farooqkz/fastcontact-a-great-replacement-for-the-stock-kaios-contacts-app-by-luxferre</guid>
      <pubDate>Sun, 08 May 2022 09:29:14 +0200</pubDate>
    </item>
    <item>
      <title>A not so brief introduction to KaiOS and app development for it</title>
      <link>https://blog.bananahackers.net/farooqkz/a-not-so-brief-introduction-to-kaios-and-app-development-for-it</link>
      <description>&lt;![CDATA[#kaios #bananahackers #appdev #dev #development&#xA;&#xA;If you have checked recent messages(around 11-01, 3 o&#39;clock UTC. I think it wouldn&#39;t be so &#34;recent&#34; at the time you are reading my post), you could see yet another guy or girl interested in developing apps(in this case games) for KaiOS. Since it wasn&#39;t the first time someone newcomer in the BananaHackers community interested in app development had shown up, and since they were asking almost the same set of questions every now and then, I thought writing a blog post regarding that would be a good idea.&#xA;&#xA;Here you go with a list of titles and a sentence about what&#39;s inside the said section:&#xA;&#xA; A wild Mozilla reappears after about 5 years: Some historical words on the origin of KaiOS, Mozilla&#39;s late FirefoxOS, and the difference between FirefoxOS and KaiOS.&#xA;&#xA; Hardware properties of KaiOS devices: In this section, I&#39;ve written about what hardware KaiOS devices usually have, including physical keys, the display, connectivity, and other hardware features or properties.&#xA;&#xA; Software properties: I&#39;ve written what type of apps does KaiOS support, where to start developing for KaiOS, what language and technologies you can choose from, and such these.&#xA;&#xA; The reasons why you might not want to develop for KaiOS: Here I have mostly linked to another blog post regarding the reasons why you might not want to develop for KaiOS at all.&#xA;&#xA; Hardware requirements for the app development: This section is about the main coding device you need to develop for KaiOS as well as the KaiOS development device you can choose.&#xA;&#xA; Links collection: I&#39;ve linked to resources you probably will need while developing for KaiOS.&#xA;&#xA; Last words: Last words of the post...&#xA;&#xA;!--more--&#xA;&#xA;A wild Mozilla reappears after about 5 years&#xA;&#xA;Before going through anything else let me write a few words regarding this Operating System calling itself &#34;Open&#34;. KaiOS is just FirefoxOS or B2G which appeared years ago from Mozilla, by some called the web Robin Hood. I remember at that time it was a trend for almost every company to have their own mobile operating system. You could see Ubuntu Touch from Canonical, Tizen from Samsung if I remember correctly, FirefoxOS from Mozilla, and I suppose a few others which I don&#39;t remember right now.&#xA;&#xA;The late FirefoxOS was a web-based operating system for (low-end?) touch devices. This means the operating system was a big browser having web apps running in. And B2G stands for Boot2Gecko. Gecko, according to Cambridge dictionary, is a small lizard with wide feet, found especially in warm countries. You can pet one but I don&#39;t guarantee it does not bite! I never had one to pet but geckoes seem pretty cute. Don&#39;t they?&#xA;&#xA;A picture of Gecko&#xA;&#xA;However, in the context of front-end development, especially Firefox browser, is the name of an engine:&#xA;&#xA;  Gecko is the layout engine developed by the Mozilla Project and used in many apps/devices, including Firefox and Firefox OS. Gecko interprets JS, HTML and CSS plus embedded content like images and draws everything on the screen of the user&#39;s device. Gecko among other things includes a networking stack, graphics stack, a JS VM, and many other stuff.&#xA;&#xA; -- Gecko, MDN glossary&#xA;&#xA;So now that you kinda know what FirefoxOS is, you also know what KaiOS is. KaiOS is a version of FirefoxOS launched in 2018 for &#34;smart feature phones&#34; with no touch support(at least devices launched till now, which are running KaiOS v2.x or v1.0 never had touch support as far as I know). Most of these devices have got an ABC keypad. To read about the hardware properties of KaiOS devices, go ahead to the next section.&#xA;&#xA;  Kai means open in Chinese. So KaiOS means open operating system.&#xA;&#xA; -- From somewhere on KaiOSTech&#xA;&#xA;-----------&#xA;&#xA;Hardware properties of KaiOS devices&#xA;&#xA;Physical keys&#xA;&#xA;All KaiOS devices have got an ABC keyboard, with JioPhone 2 as an exception which has got a nice and soft QWERTY keyboard(see the photo below from tbrrss. This photo was originally used on this wiki page dedicated to JioPhone).&#xA;&#xA;A photo of JioPhone 2 running Luxferre&#39;s Wallace toolbox by tbrrss&#xA;&#xA;Other than that all KaiOS devices include D-pad navigation keys(up/down/right/left), Okay or Enter key to confirm things usually(or shoot at enemies in some games), Soft left and Soft right keys, Call key and Power or Back(space) key. Many devices have got one or two more keys like my Nokia 800 Tough which has got a shortcut key above the Call key and Back(space) key above the Power key.&#xA;&#xA;So to sum up you&#39;ve got these keys on all devices(excluding JioPhone 2):&#xA;&#xA; 0 to 9&#xA; ArrowUp, ArrowDown, ArrowLeft, ArrowRight&#xA; Enter&#xA; Call&#xA; Backspace&#xA; SoftRight&#xA; SoftLeft&#xA;&#xA;And these two as optional because you won&#39;t find them on all devices:&#xA;&#xA; Power&#xA; Shortcut key&#xA;&#xA;There are also other physical keys on some devices. Like the side power key on the BananaPhone(the other name for Nokia 8110 4G) which you can use to turn the display on/off and power the device on or off. Or 2720 Flip has got that of 8110 and two keys on the side for volume up and down. Not sure if you can capture even of these keys in your app.&#xA;&#xA;Display/Screen&#xA;&#xA;Regarding the display all devices have got a 240x320 one(height is 320 pixels and width is 240). JioPhone 2 is however an exception having 320x240 instead. Note that the size of the screen of devices is not the same for all devices but the screen resolution is. That&#39;s all that you&#39;ve got to draw your content on.&#xA;&#xA;Many devices like Nokia 2720 Flip have got another display, usually black and white. According to the website of Nokia, the Flip has got a secondary 1.3-inch front display which displays incoming text messages or caller ID of some incoming call as well as time and date. But I don&#39;t think you could use this screen in your apps to display stuff on them officially. And even if you could, it doesn&#39;t worth it to add such a functionality to your app which only a few users, comparing to the whole, could use it. Nevertheless, it would be a fun hack but in my humble opinion, not practical.&#xA;&#xA;Connectivity&#xA;&#xA;Now let me write a few words about the connectivity features of KaiOS phones. These &#34;smart feature phones&#34; usually support 3G or 4G mobile data and Bluetooth v4.x. Most of them also have got WiFi support so you won&#39;t have to waste your data plan if you are near your work or home router/access point. The other feature they usually have is Internet sharing with USB or WiFi tethering(supporting WPA 2-AES, WPA-TKIP, or no security). There is also (A)GPS but at least for me it doesn&#39;t work well every now and then and everywhere I try it. Some suggest it&#39;s not as good as some of an Android phone.&#xA;&#xA;Both my KaiOS phones, the late Bananaphone and the Tough support 4G mobile data on the primary SIM card and I suppose 3G or H on the other SIM card.  Of course, you probably could have 4G on both cards using this trick from the BananaHackers wiki(the origin of it is the BananaHacker website, however, added there, by Ivan Alex HC).&#xA;&#xA;4G or 3.9G?&#xA;&#xA;The 4G connectivity of some KaiOS device is not like a real 4G. According to my experience and reports from a friend of mine named Ivan Pasev, KaiOS limits(or has the limitation on) the maximum bandwidth you can use. It&#39;s still faster than 3G but probably slower than the typical 4G you would have on most Android phones.&#xA;&#xA;Other hardware features&#xA;&#xA;Physical ports&#xA;&#xA;KaiOS devices in general have got a microUSB port supporting USB 2.0 only which can be used for debugging, sideloading apps, Internet sharing, charging, and EDL if your device has got a Qualcomm chipset. They also come with a 3.5mm audio jack for audio input and output. Nothing new compared to other phones. Huh?&#xA;&#xA;Camera&#xA;&#xA;Compared to Android or iOS phones, the Camera(s) of a KaiOS device hasn&#39;t got anything to say. Nokia 8110 4G(aka the BananaPhone), 8000 4G, 2720 Flip, and 800 Tough have got only a single 2 Megapixels rear camera with no front one. 6300 4G has got only a rear VGA camera with no flash.&#xA;&#xA;However, according to KaiOSTech&#39;s device list, there are many other devices with both rear and a pretty weak front or selfie camera. I would like to just name a few:&#xA;&#xA; Akeza 4G, front: VGA, rear: VGA&#xA; KaiOS ONE, front: VGA, rear: VGA&#xA; Digit 4G Bold, front: VGA, rear: VGA&#xA; myPhone Up Smart LTE, front: VGA, rear: 5MP&#xA; ...&#xA;&#xA;Processor, Memory and Graphical processor&#xA;&#xA;I am lucky to have a Nokia which uses a Qualcomm Snapdragon processor with 512MB of RAM. Many devices have got only 256MB. Newer Nokia phone models like 8000 4G use a higher version or model quad-core Snapdragon instead of dual-core like my 800 Tough.&#xA;&#xA;On the other hand, not all are lucky like I am. According to the BananaHackers wiki(which its content mostly comes from bananahackers.net written by the founders of this community including Ivan Alex HC), there are devices with Mediatek based or Spreadtrum based chipsets. Which in some people&#39;s opinion are not as good as Qualcomm&#39;s. I cannot comment on this since I&#39;m not much of a mobile hardware geek. Also, there are devices whose chipset was never specified anywhere as far as we know.&#xA;&#xA;Regarding GPU, the KaiOS devices of Nokia which have got 512MB of RAM and Adreno as graphical processor unit, can run Christian Waadt&#39;s AirshipCombat 3D single and multiplayer game very well. It&#39;s an action shooter 3D game for KaiOS and a few community members, especially one, were addicted to it, at least for a while! I&#39;m not sure if Christian has the game&#39;s server still up so that you could still test the multiplayer part of the game. But you always can test its mission-based single-player mode. You can read or see more about this game through this link on BananaHackers&#39; webstore and perhaps download it and sideload it to your device. There is another 3D game for KaiOS, named Marble3D or something a lot like Neverball, which I was playing on my late Bananaphone and was very fun, fast and smooth.&#xA;&#xA;But that&#39;s not the end of the story! While these two 3D games were running smoothly on my device with Snapdragon and 512MB of memory, I remember Christian had reported that he had problems running his game on devices with 256MB instead of 512. I don&#39;t remember if he finally solved the problems or not. But if you are going to write a 3D game for these devices, I would recommend you get in touch with Christian. He is(or at least used to be) available on BananaHackers chatrooms available through Discord and Matrix(here&#39;s a link only to app development room, in the case your client does not support Matrix spaces)&#xA;&#xA;Farooq&#39;s dream KaiOS device&#xA;&#xA;  I always wished there was some non-Jio KaiOS device available in my country. With a soft keypad like you see in that photo of the lovely JioPhone. Perhaps with 8GiB or 12GiB of internal memory instead of 4, a quad-core processor, and at least 1GB of memory(RAM). But not always things go according to our wishes and not always everything&#39;s in our hands.&#xA;&#xA;-----------&#xA;&#xA;Software properties&#xA;&#xA;As you have read earlier in this post of mine, KaiOS has come from the ashes of Mozilla&#39;s late FirefoxOS which is basically a big browser with multiple tabs(called web apps). FirefoxOS was for a variety of Android touch devices. KaiOS, however, excluding KaiOS 3.0, doesn&#39;t support touch at all. And for KaiOS 3.0 which is still not out at the time of writing this post, there are whispers that it would support touch devices. But we can&#39;t be certain till a while later we see KaiOS 3.0 devices.&#xA;&#xA;So where to start?&#xA;&#xA;Obviously, you need to know programming and coding if you want to write apps for KaiOS. So I&#39;m not writing here about how to get started in this Computer Science area. If you don&#39;t know to program, you should already learn that. Like you cannot go to the third level before you haven&#39;t passed the second one. And there&#39;s no lift! It doesn&#39;t matter what language or technology you start in my opinion. It just does matter that you start. If your goal is writing apps for KaiOS or Front-end development, you could start with Javascript but there might be other options as well which I have written a little bit about them in the later sub-sections.&#xA;&#xA;What language(s) should I learn?&#xA;&#xA;First of all, English and I am serious! You&#39;ll need English to read the stuff on the Internet and learn from there as well as being in touch with other community members. CS is not the only area of science that requires people to learn English before anything. Nowadays, English is the language of science and scientists and if you want to access sources of knowledge you must learn it. Just like one had to learn Persian and Arabic languages in the Islamic Golden Age, in the past pre-modern days if he or she wanted to gather knowledge from the others.&#xA;&#xA;As you now know, KaiOS apps are web applications. This means most likely you want to go with Javascript, CSS, and HTML. There is another option, too: Write in like C, C++, or Rust and compile them to some sort of Assembly! In theory, you can do so for a variety of languages. But in reality, there might be no good toolchain or compiler or possibly nothing at all for your favorite language.&#xA;&#xA;But what is this &#34;Assembly&#34;? I&#39;m referring to asm.js and WebAssembly or WASM which you could compile your apps to one of them. asm.js is a subset of Javascript. Note that just KaiOS 3.0 and later support WebAssembly. On KaiOS 2.5 or so you could use just asm.js which is slower than WASM. You can read this post on Mozilla Hacks if you want to ask why.&#xA;&#xA;Does it mean you could abandon the sloppy Javascript? I&#39;m unaware since I&#39;ve never entered this area. But I am certain about a few things:&#xA;&#xA; You probably can use a language like Rust to write almost all parts of your app and abandon HTML, CSS, and JS. For example, see egui project on Github which doesn&#39;t use HTML at all. Everything in pure Rust using WebGL compiled to WebAssembly. See their demo here with a browser supporting WASM.&#xA;&#xA; You surely can have certain parts of your web app in, for example, C++. By using a C++ library compiled to asm.js(or WASM for KaiOS 3.0).&#xA;&#xA;I&#39;m going with the sloppy Javascript. So any frameworks I could use?&#xA;&#xA;This section is for those who want to go with Javascript for whatever reason. Perhaps they are starting programming and Javascript is way easier than a language like Rust. Or perhaps just because they want to write a simple app and don&#39;t want to bother with compiled languages.&#xA;&#xA;You can write your dream web app for KaiOS using vanilla Javascript and not using any framework. This brings a great performance compared to using most frameworks. Also, you won&#39;t have a build or compile process before you could test your app in the browser. But not using any framework ruins maintainability overtime when the code size grows. In my opinion and experience, if your web app is going to get bigger than small or trivial, it would be much better if you had used some framework.&#xA;&#xA;However, you may not go with any framework out there. Compared to normal web app development, there are a few things you&#39;d better consider including these:&#xA;&#xA; There is no mouse or touch on KaiOS devices. This means the navigation and control are completely done by keys. Nevertheless, there is an exception: you could enable &#34;emulated cursor&#34; in your app&#39;s manifest. After that user will have a cursor that could move it using D-pad and click anywhere using the Enter or Okay key. But that is not convenient for users at all and also you won&#39;t be able to use the full capacity of the device inputs. Not to mention that it is impossible for something like Christian&#39;s AC3D which I&#39;ve named in the &#34;Processor, Memory and Graphical processor&#34; sub-section.&#xA;&#xA; As I said in the &#34;Display/Screen&#34;, the screen resolution is pretty low. About 10 pixels shorter in height if you have enabled the status bar in the manifest. Most likely about 10 pixels less for Softkey labels.&#xA;&#xA;The most important thing: Performance, performance, and performance! Firstly you&#39;ve got only 256-512MB of RAM some of which the operating system itself uses. Secondly, the processor used by KaiOS devices is not so powerful. 2 or 4 cores running at 1.0 to 1.4 GHz usually. And the third concern is that you are developing for mobile with small batteries with a capacity of about 1500-2500mAh. You absolutely don&#39;t want to drain all the power saved in the device&#39;s battery by using some nasty and heavy framework doing hundreds or thousands of unnecessary or avoidable operations in a second.&#xA;&#xA;So after all these, especially the last one which is performance, you have to chicken out many frameworks, probably including ReactJS. And with any other framework, you would want to optimize it enough especially for memory consumption unless you want the OOM killer to commit an unforgiving crime(from your point of view as the developer of the app and not as a user) and murder your app!&#xA;&#xA;I personally use InfernoJS after some experiences with pure JS(no framework) in many of my apps like https://notabug.org/bananaphone/vm-irc, Fooplot, SimpleQuran or toys like TalkingBot. Inferno is a fork of the famous ReactJS optimized for mobile and high performance. According to benchmarks on Inferno website, it is just a bit worse than Javascript with no framework while it brings good features of ReactJS(it is unclear, at least for me, that such a performance is gained by disabling normalization or not). This framework is also has been suggested in KaiOSTech&#39;s developer FAQ here. And I&#39;ve heard by some, Inferno is what KaiOSTech itself uses for stock apps of its operating system. However, I can&#39;t confirm or deny that.&#xA;&#xA;After all these, InfernoJS is not the only option you&#39;ve got. I&#39;ve seen many using other frameworks. I will name a few in brief:&#xA;&#xA; garredow uses Preact for his foxcasts-lite podcast app.&#xA;&#xA; tbrrss uses Svelte for his PodLP podcast app.&#xA;&#xA; speeduploop, one of the founders of the BH community, uses Mithril for his ADBroot app. Just look at the small code size!&#xA;&#xA;According to the benchmark on Inferno website and many other benchmarks which you can easily find using your favorite search engine, for example this one on Medium, all these frameworks provide better performance compared to ReactJS.&#xA;&#xA;Let me end this part with a few words regarding other concerns you should have:&#xA;&#xA; The CSS you use is important too. You&#39;d better not forget that! KaiOS, excluding v3.0, hasn&#39;t got Quantum engine&#xA;&#xA; The library and modules you use are just as important as the framework you use. They must be optimized for performance especially memory. Remember the OOM killer? However, sometimes you have not got many choices. For example for Chooj it seems the only option I&#39;ve got so far is matrix-js-sdk. Also, you might need to modify the library you want to use, a little or more than a little, to suit your requirements. Again for Chooj, I have to somehow make mozSystem property enabled in XMLHttpRequest or CORS will block the requests I make.&#xA;&#xA;The reasons why you might not want to develop for KaiOS&#xA;&#xA;I&#39;ve written a separate blog post about reasons one(mostly a user) would not want to use a KaiOS device. Writing apps is useless if there are no users to use them. Right? However, there is no absolute good or bad operating system. I highly recommend reading that post or at least the titles inside if you are thinking to spend time and effort developing apps for KaiOS, especially as a real job and not only a fun thing.&#xA;&#xA;-----------&#xA;&#xA;Hardware requirements for the app development&#xA;&#xA;So you are sure you want to develop for KaiOS? Firstly you need a PC or laptop or something with a comfortable and fast keyboard to code on. The good news is that you do not need 8GB of RAM only for Android Studio or 4GB for Flutter! You only need enough for these:&#xA;&#xA; A Firefox tab which you test your app there in most cases.&#xA;&#xA; 2 or 3 more browser tabs to search stuff on the Internet and read them. &#xA; WebIDE to deploy your app to your KaiOS device and also to debug it. You probably could use command-line tools like Luxferre&#39;s gdeploy or Fabrice&#39;s b2gclitool which eat less of your valuable RAM.&#xA;&#xA; A Matrix client to join BananaHackers Matrix rooms so that you could get in touch with the community and perhaps ask questions from them. Fortunately, there are a variety of Matrix clients for many operating systems including but not limited to KaiOS, Windows, Android, GNU/Linux, and OS X. From Terminal-based Weechat to graphical and memory hungry Element. The choice is yours. See a list of clients here&#xA;&#xA;At last the Operating System you use also will consume memory. If you don&#39;t have much memory available, you could go for a pretty light-on-memory but yet well-supported Linux distro. For example those with XFCE or LXDE as graphical shells. You could alternatively use just a window manager like Openbox or my favorite tiling WM, i3 which eat much less memory compared to something even like XFCE.&#xA;&#xA;Another device you need for KaiOS app development is obviously a KaiOS device. But not any device. Of course, you should be able to install your app on your KaiOS device through your other device, say your laptop. This process is called sideloading and you need to enable debugging mode on your device to sideload apps. The process of getting debug mode enabled is not the same for all devices. On some nearly impossible or really hard and on some is easy like prey. You can read stuff on the wiki or the website.&#xA;&#xA;If you need quick advice, most community members, including myself, will suggest Nokia phones for development. The reason behind this, other than the fact that a Nokia device is unlikely to be unavailable in your region, is that enabling debug mode on Nokia devices is as easy as dialing ##33284## and voila! A bug icon will appear in the status bar meaning now you can sideload apps to your device through your computer! There are, however, at least two confirmed exceptions: Nokia 2720 Flip and 800 Tough if you upgrade their firmware to v30(do not confuse with KaiOS v3.0 that&#39;s a different thing). Fortunately, before the OTA update become available in my region, a friend told me not to upgrade to firmware v30. And thanks to him, I did not.&#xA;&#xA;-----------&#xA;&#xA;Links collection&#xA;&#xA;While I tried to put as many links as possible in the content to give you clues for further reading, there are many links which either did not fit in the content, or I think I would better repeat them here.&#xA;&#xA; BananaHackers wiki and website: Contains handy resources on rooting different KaiOS devices, developing on them, code snippets, device APIs, and much more. You can contribute and add content too! Just ask for a wiki account and permission to edit and add pages. Any good contribution to the wiki shall be appreciated!&#xA;&#xA; BananaHackers chatrooms on Matrix and Discord: You can keep in touch with the community, ask from them or answer their questions and share the progress on your work with them. As always don&#39;t ask to ask just ask!&#xA;&#xA; Unofficial KaiOS development wiki by alego4710: Contains useful resources regarding app development for KaiOS.&#xA;&#xA; B2G docs on Wayback machine: These pages are super helpful. At least the APIs part has been so helpful for all of us. It is so unfortunate that Mozilla removed these from MDN. If the Wayback machine link did not work for you, there is an alternative link from the University of Chicago. And finally you might want to check out this Github repository to self-host these or for offline use.&#xA;&#xA; Adrian&#39;s KaiUI: It has got UI components for creating KaiOS apps. It is in ReactJS but you could easily use the (S)CSS files and port to other React-like frameworks. For example in my project, Chooj, I have ported many of those which I needed to InfernoJS. See this directory on Chooj&#39;s repository&#xA;&#xA; nadim&#39;s KaiUI: It has got fewer components compared to Adrian&#39;s. It still seems nice.&#xA;&#xA; KaiUI topic on Github: You can see other KaiUIs.&#xA;&#xA; Tom&#39;s blog about KaiOS: You can find many interesting information here about KaiOS devices and also app development for them. Tom is the developer of PodLP, a very popular podcast app for KaiOS and one of the most popular apps in 2020&#xA;&#xA;Got any other useful resources? Feel free to tell me about them by emailing me and I will add them to the collection.&#xA;&#xA;-----------&#xA;&#xA;Last words&#xA;&#xA;I am not a professional developer and my knowledge is limited. Feel free to contact me, either by commenting under this post or emailing me or pinging me on Matrix, if you think something was written not right by me or perhaps some of my writings were not clear enough.&#xA;&#xA;While I would be happy to answer your questions regarding app development for KaiOS if you contact me somehow, I highly recommend that you ask in the chatrooms and if you want my attention, you could ping or mention me there. This way others could enter the discussion. Perhaps their answers are faster or more correct than mine. Also, others could use your answered question and benefit from it. Of course, this does not mean I will not answer your questions in private whenever I can.]]&gt;</description>
      <content:encoded><![CDATA[<p><a href="/farooqkz/tag:kaios" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">kaios</span></a> <a href="/farooqkz/tag:bananahackers" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">bananahackers</span></a> <a href="/farooqkz/tag:appdev" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">appdev</span></a> <a href="/farooqkz/tag:dev" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">dev</span></a> <a href="/farooqkz/tag:development" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">development</span></a></p>

<p>If you have checked recent messages(around 11-01, 3 o&#39;clock UTC. I think it wouldn&#39;t be so “recent” at the time you are reading my post), you could see yet another guy or girl interested in developing apps(in this case games) for KaiOS. Since it wasn&#39;t the first time someone newcomer in the BananaHackers community interested in app development had shown up, and since they were asking almost the same set of questions every now and then, I thought writing a blog post regarding that would be a good idea.</p>

<p>Here you go with a list of titles and a sentence about what&#39;s inside the said section:</p>
<ul><li><p><strong>A wild Mozilla reappears after about 5 years</strong>: Some historical words on the origin of KaiOS, Mozilla&#39;s late FirefoxOS, and the difference between FirefoxOS and KaiOS.</p></li>

<li><p><strong>Hardware properties of KaiOS devices</strong>: In this section, I&#39;ve written about what hardware KaiOS devices usually have, including physical keys, the display, connectivity, and other hardware features or properties.</p></li>

<li><p><strong>Software properties</strong>: I&#39;ve written what type of apps does KaiOS support, where to start developing for KaiOS, what language and technologies you can choose from, and such these.</p></li>

<li><p><strong>The reasons why you might not want to develop for KaiOS</strong>: Here I have mostly linked to another blog post regarding the reasons why you might not want to develop for KaiOS at all.</p></li>

<li><p><strong>Hardware requirements for the app development</strong>: This section is about the main coding device you need to develop for KaiOS as well as the KaiOS development device you can choose.</p></li>

<li><p><strong>Links collection</strong>: I&#39;ve linked to resources you probably will need while developing for KaiOS.</p></li>

<li><p><strong>Last words</strong>: Last words of the post...</p></li></ul>



<h2 id="a-wild-mozilla-reappears-after-about-5-years" id="a-wild-mozilla-reappears-after-about-5-years">A wild Mozilla reappears after about 5 years</h2>

<p>Before going through anything else let me write a few words regarding this Operating System calling itself “Open”. KaiOS is just FirefoxOS or B2G which appeared years ago from Mozilla, by some called the web Robin Hood. I remember at that time it was a trend for almost every company to have their own mobile operating system. You could see Ubuntu Touch from Canonical, Tizen from Samsung if I remember correctly, FirefoxOS from Mozilla, and I suppose a few others which I don&#39;t remember right now.</p>

<p>The late FirefoxOS was a web-based operating system for (low-end?) touch devices. This means the operating system was a big browser having web apps running in. And B2G stands for Boot2Gecko. Gecko, <a href="https://dictionary.cambridge.org/dictionary/english/gecko" rel="nofollow">according to Cambridge dictionary</a>, is <code>a small lizard with wide feet, found especially in warm countries</code>. You can pet one but I don&#39;t guarantee it does not bite! I never had one to pet but geckoes seem pretty cute. Don&#39;t they?</p>

<p><img src="https://upload.wikimedia.org/wikipedia/commons/thumb/c/c3/Phelsuma_l._laticauda.jpg/391px-Phelsuma_l._laticauda.jpg" alt="A picture of Gecko"></p>

<p>However, in the context of front-end development, especially Firefox browser, is the name of an engine:</p>

<blockquote><p>Gecko is the layout engine developed by the Mozilla Project and used in many apps/devices, including Firefox and Firefox OS. Gecko interprets JS, HTML and CSS plus embedded content like images and draws everything on the screen of the user&#39;s device. Gecko among other things includes a networking stack, graphics stack, a JS VM, and many other stuff.</p></blockquote>

<p> — <a href="https://developer.mozilla.org/en-US/docs/Glossary/Gecko" rel="nofollow">Gecko, MDN glossary</a></p>

<p>So now that you kinda know what FirefoxOS is, you also know what KaiOS is. KaiOS is a version of FirefoxOS launched in 2018 for “smart feature phones” with no touch support(at least devices launched till now, which are running KaiOS v2.x or v1.0 never had touch support as far as I know). Most of these devices have got an ABC keypad. To read about the hardware properties of KaiOS devices, go ahead to the next section.</p>

<blockquote><p>Kai means open in Chinese. So KaiOS means open operating system.</p></blockquote>

<p> — From somewhere on <a href="https://kaiostech.com" rel="nofollow">KaiOSTech</a></p>

<hr>

<h2 id="hardware-properties-of-kaios-devices" id="hardware-properties-of-kaios-devices">Hardware properties of KaiOS devices</h2>

<h3 id="physical-keys" id="physical-keys">Physical keys</h3>

<p>All KaiOS devices have got an ABC keyboard, with JioPhone 2 as an exception which has got a nice and soft QWERTY keyboard(see the photo below from tbrrss. This photo was originally used on <a href="https://wiki.bananahackers.net/devices/jio-phone" rel="nofollow">this wiki page dedicated to JioPhone</a>).</p>

<p><img src="https://wiki.bananahackers.net/devices/jio-lyf-f300b-running-wallace-toolbox-by-tbrrss.jpeg" alt="A photo of JioPhone 2 running Luxferre&#39;s Wallace toolbox by tbrrss"></p>

<p>Other than that all KaiOS devices include D-pad navigation keys(up/down/right/left), Okay or Enter key to confirm things usually(or shoot at enemies in some games), Soft left and Soft right keys, Call key and Power or Back(space) key. Many devices have got one or two more keys like my Nokia 800 Tough which has got a shortcut key above the Call key and Back(space) key above the Power key.</p>

<p>So to sum up you&#39;ve got these keys on all devices(excluding JioPhone 2):</p>
<ul><li><code>0</code> to <code>9</code></li>
<li><code>ArrowUp</code>, <code>ArrowDown</code>, <code>ArrowLeft</code>, <code>ArrowRight</code></li>
<li><code>Enter</code></li>
<li><code>Call</code></li>
<li><code>Backspace</code></li>
<li><code>SoftRight</code></li>
<li><code>SoftLeft</code></li></ul>

<p>And these two as optional because you won&#39;t find them on all devices:</p>
<ul><li>Power</li>
<li>Shortcut key</li></ul>

<p>There are also other physical keys on some devices. Like the side power key on the BananaPhone(the other name for Nokia 8110 4G) which you can use to turn the display on/off and power the device on or off. Or 2720 Flip has got that of 8110 and two keys on the side for volume up and down. Not sure if you can capture even of these keys in your app.</p>

<h3 id="display-screen" id="display-screen">Display/Screen</h3>

<p>Regarding the display all devices have got a <code>240x320</code> one(height is 320 pixels and width is 240). JioPhone 2 is however an exception having <code>320x240</code> instead. Note that the size of the screen of devices is not the same for all devices but the screen resolution is. That&#39;s all that you&#39;ve got to draw your content on.</p>

<p>Many devices like Nokia 2720 Flip have got another display, usually black and white. According to the website of Nokia, the Flip has got a secondary 1.3-inch front display which displays incoming text messages or caller ID of some incoming call as well as time and date. But I don&#39;t think you could use this screen in your apps to display stuff on them officially. And even if you could, it doesn&#39;t worth it to add such a functionality to your app which only a few users, comparing to the whole, could use it. Nevertheless, it would be a fun hack but in my humble opinion, not practical.</p>

<h3 id="connectivity" id="connectivity">Connectivity</h3>

<p>Now let me write a few words about the connectivity features of KaiOS phones. These “smart feature phones” usually support 3G or 4G mobile data and Bluetooth v4.x. Most of them also have got WiFi support so you won&#39;t have to waste your data plan if you are near your work or home router/access point. The other feature they usually have is Internet sharing with USB or WiFi tethering(supporting WPA 2-AES, WPA-TKIP, or no security). There is also (A)GPS but at least for me it doesn&#39;t work well every now and then and everywhere I try it. Some suggest it&#39;s not as good as some of an Android phone.</p>

<p>Both my KaiOS phones, the late Bananaphone and the Tough support 4G mobile data on the primary SIM card and I suppose 3G or H on the other SIM card.  Of course, you probably could have 4G on both cards using <a href="https://wiki.bananahackers.net/customizations/sim-internet-tweaks" rel="nofollow">this trick</a> from the BananaHackers wiki(the origin of it is <a href="https://bananahackers.net" rel="nofollow">the BananaHacker website</a>, however, added there, by Ivan Alex HC).</p>

<h4 id="4g-or-3-9g" id="4g-or-3-9g">4G or 3.9G?</h4>

<p>The 4G connectivity of some KaiOS device is not like a real 4G. According to my experience and reports from a friend of mine named Ivan Pasev, KaiOS limits(or has the limitation on) the maximum bandwidth you can use. It&#39;s still faster than 3G but probably slower than the typical 4G you would have on most Android phones.</p>

<h3 id="other-hardware-features" id="other-hardware-features">Other hardware features</h3>

<h4 id="physical-ports" id="physical-ports">Physical ports</h4>

<p>KaiOS devices in general have got a microUSB port supporting USB 2.0 only which can be used for debugging, sideloading apps, Internet sharing, charging, and <a href="https://wiki.bananahackers.net/en/development/edl" rel="nofollow">EDL</a> if your device has got a Qualcomm chipset. They also come with a 3.5mm audio jack for audio input and output. Nothing new compared to other phones. Huh?</p>

<h4 id="camera" id="camera">Camera</h4>

<p>Compared to Android or iOS phones, the Camera(s) of a KaiOS device hasn&#39;t got anything to say. Nokia 8110 4G(aka the BananaPhone), 8000 4G, 2720 Flip, and 800 Tough have got only a single 2 Megapixels rear camera with no front one. 6300 4G has got only a rear <strong>VGA</strong> camera with <strong>no flash</strong>.</p>

<p>However, according to <a href="https://www.kaiostech.com/explore/devices/" rel="nofollow">KaiOSTech&#39;s device list</a>, there are many other devices with both rear and a pretty weak front or selfie camera. I would like to just name a few:</p>
<ul><li>Akeza 4G, front: VGA, rear: VGA</li>
<li>KaiOS ONE, front: VGA, rear: VGA</li>
<li>Digit 4G Bold, front: VGA, rear: VGA</li>
<li>myPhone Up Smart LTE, front: VGA, rear: 5MP</li>
<li>...</li></ul>

<h4 id="processor-memory-and-graphical-processor" id="processor-memory-and-graphical-processor">Processor, Memory and Graphical processor</h4>

<p>I am lucky to have a Nokia which uses a Qualcomm Snapdragon processor with 512MB of RAM. Many devices have got only 256MB. Newer Nokia phone models like 8000 4G use a higher version or model quad-core Snapdragon instead of dual-core like my 800 Tough.</p>

<p>On the other hand, not all are lucky like I am. According to <a href="https://wiki.bananahackers.net" rel="nofollow">the BananaHackers wiki</a>(which its content mostly comes from <a href="http://bananahackers.net" rel="nofollow">bananahackers.net</a> written by the founders of this community including Ivan Alex HC), there are devices with Mediatek based or Spreadtrum based chipsets. Which in some people&#39;s opinion are not as good as Qualcomm&#39;s. I cannot comment on this since I&#39;m not much of a mobile hardware geek. Also, there are devices whose chipset was never specified anywhere as far as we know.</p>

<p>Regarding GPU, the KaiOS devices of Nokia which have got 512MB of RAM and Adreno as graphical processor unit, can run Christian Waadt&#39;s AirshipCombat 3D single and multiplayer game very well. It&#39;s an action shooter 3D game for KaiOS and a few community members, especially one, were addicted to it, at least for a while! I&#39;m not sure if Christian has the game&#39;s server still up so that you could still test the multiplayer part of the game. But you always can test its mission-based single-player mode. You can read or see more about this game through <a href="https://store.bananahackers.net/#airshipcombat3d" rel="nofollow">this link on BananaHackers&#39; webstore</a> and perhaps download it and sideload it to your device. There is another 3D game for KaiOS, named Marble3D or something a lot like <a href="https://neverball.org/" rel="nofollow">Neverball</a>, which I was playing on my late Bananaphone and was very fun, fast and smooth.</p>

<p>But that&#39;s not the end of the story! While these two 3D games were running smoothly on my device with Snapdragon and 512MB of memory, I remember Christian had reported that he had problems running his game on devices with 256MB instead of 512. I don&#39;t remember if he finally solved the problems or not. But if you are going to write a 3D game for these devices, I would recommend you get in touch with Christian. He is(or at least used to be) available on BananaHackers chatrooms available through <a href="https://discord.gg/rQ93zEu" rel="nofollow">Discord</a> and <a href="https://matrix.to/#/%23bananahackers:mozilla.org" rel="nofollow">Matrix</a>(<a href="https://matrix.to/#/%23bh-appdev:mozilla.org" rel="nofollow">here&#39;s a link only to app development room</a>, in the case your client does not support Matrix spaces)</p>

<h3 id="farooq-s-dream-kaios-device" id="farooq-s-dream-kaios-device">Farooq&#39;s dream KaiOS device</h3>

<blockquote><p>I always wished there was some non-Jio KaiOS device available in my country. With a soft keypad like you see in that photo of the lovely JioPhone. Perhaps with 8GiB or 12GiB of internal memory instead of 4, a quad-core processor, and at least 1GB of memory(RAM). But not always things go according to our wishes and not always everything&#39;s in our hands.</p></blockquote>

<hr>

<h2 id="software-properties" id="software-properties">Software properties</h2>

<p>As you have read earlier in this post of mine, KaiOS has come from the ashes of Mozilla&#39;s late FirefoxOS which is basically a big browser with multiple tabs(called web apps). FirefoxOS was for a variety of Android touch devices. KaiOS, however, excluding KaiOS 3.0, doesn&#39;t support touch at all. And for KaiOS 3.0 which is still not out at the time of writing this post, there are whispers that it would support touch devices. But we can&#39;t be certain till a while later we see KaiOS 3.0 devices.</p>

<h3 id="so-where-to-start" id="so-where-to-start">So where to start?</h3>

<p>Obviously, you need to know programming and coding if you want to write apps for KaiOS. So I&#39;m not writing here about how to get started in this Computer Science area. If you don&#39;t know to program, you should already learn that. Like you cannot go to the third level before you haven&#39;t passed the second one. And there&#39;s no lift! It doesn&#39;t matter what language or technology you start in my opinion. It just does matter that you start. If your goal is writing apps for KaiOS or Front-end development, you could start with Javascript but there might be other options as well which I have written a little bit about them in the later sub-sections.</p>

<h3 id="what-language-s-should-i-learn" id="what-language-s-should-i-learn">What language(s) should I learn?</h3>

<p>First of all, English and I am serious! You&#39;ll need English to read the stuff on the Internet and learn from there as well as being in touch with other community members. CS is not the only area of science that requires people to learn English before anything. Nowadays, English is the language of science and scientists and if you want to access sources of knowledge you <em>must</em> learn it. Just like one had to learn <a href="https://en.wikipedia.org/wiki/Persian_language" rel="nofollow">Persian</a> and <a href="https://en.wikipedia.org/wiki/Arabic" rel="nofollow">Arabic</a> languages in the <a href="https://en.wikipedia.org/wiki/Islamic_Golden_Age" rel="nofollow">Islamic Golden Age</a>, in the past pre-modern days if he or she wanted to gather knowledge from the others.</p>

<p>As you now know, KaiOS apps are web applications. This means most likely you want to go with Javascript, CSS, and HTML. There is another option, too: Write in like C, C++, or <a href="https://www.rust-lang.org/" rel="nofollow">Rust</a> and compile them to some sort of <a href="https://en.wikipedia.org/wiki/Assembly_language" rel="nofollow">Assembly</a>! In theory, you can do so for a variety of languages. But in reality, there might be no good toolchain or compiler or possibly nothing at all for your favorite language.</p>

<p>But what is this “Assembly”? I&#39;m referring to <a href="https://en.wikipedia.org/wiki/Asm.js" rel="nofollow">asm.js</a> and <a href="https://webassembly.org/" rel="nofollow">WebAssembly or WASM</a> which you could compile your apps to one of them. asm.js is a subset of Javascript. Note that <strong>just KaiOS 3.0 and later support WebAssembly</strong>. On KaiOS 2.5 or so you could use just asm.js which is slower than WASM. You can read <a href="https://hacks.mozilla.org/2017/03/why-webassembly-is-faster-than-asm-js/" rel="nofollow">this post on Mozilla Hacks if you want to ask why</a>.</p>

<p>Does it mean you could abandon the sloppy Javascript? I&#39;m unaware since I&#39;ve never entered this area. But I am certain about a few things:</p>
<ul><li><p>You probably can use a language like Rust to write almost all parts of your app and abandon HTML, CSS, and JS. For example, see <a href="https://github.com/emilk/egui" rel="nofollow">egui project on Github</a> which doesn&#39;t use HTML at all. Everything in pure Rust using <a href="https://en.wikipedia.org/wiki/WebGL" rel="nofollow">WebGL</a> compiled to WebAssembly. See their demo <a href="https://emilk.github.io/egui/index.html" rel="nofollow">here</a> with a browser supporting WASM.</p></li>

<li><p>You surely can have certain parts of your web app in, for example, C++. By using a C++ library compiled to asm.js(or WASM for KaiOS 3.0).</p></li></ul>

<h3 id="i-m-going-with-the-sloppy-javascript-so-any-frameworks-i-could-use" id="i-m-going-with-the-sloppy-javascript-so-any-frameworks-i-could-use">I&#39;m going with the sloppy Javascript. So any frameworks I could use?</h3>

<p>This section is for those who want to go with Javascript for whatever reason. Perhaps they are starting programming and Javascript is way easier than a language like Rust. Or perhaps just because they want to write a simple app and don&#39;t want to bother with compiled languages.</p>

<p>You can write your dream web app for KaiOS using vanilla Javascript and not using any framework. This brings a great performance compared to using most frameworks. Also, you won&#39;t have a build or compile process before you could test your app in the browser. But not using any framework ruins maintainability overtime when the code size grows. In my opinion and experience, if your web app is going to get bigger than small or trivial, it would be much better if you had used some framework.</p>

<p>However, you may not go with any framework out there. Compared to normal web app development, there are a few things you&#39;d better consider including these:</p>
<ul><li><p>There is no mouse or touch on KaiOS devices. This means the navigation and control are completely done by keys. Nevertheless, there is an exception: you could enable <a href="https://developer.kaiostech.com/docs/getting-started/main-concepts/emulated-cursor" rel="nofollow">“emulated cursor”</a> in your app&#39;s <a href="https://developer.kaiostech.com/docs/getting-started/main-concepts/manifest" rel="nofollow">manifest</a>. After that user will have a cursor that could move it using D-pad and click anywhere using the <code>Enter</code> or <code>Okay</code> key. But that is not convenient for users at all and also you won&#39;t be able to use the full capacity of the device inputs. Not to mention that it is impossible for something like Christian&#39;s AC3D which I&#39;ve named in the “Processor, Memory and Graphical processor” sub-section.</p></li>

<li><p>As I said in the “Display/Screen”, the screen resolution is pretty low. About 10 pixels shorter in height if you have enabled the status bar in the manifest. Most likely about 10 pixels less for Softkey labels.</p></li>

<li><p>The most important thing: Performance, performance, and performance! Firstly you&#39;ve got only 256-512MB of RAM some of which the operating system itself uses. Secondly, the processor used by KaiOS devices is not so powerful. 2 or 4 cores running at 1.0 to 1.4 GHz usually. And the third concern is that you are developing for mobile with small batteries with a capacity of about 1500-2500mAh. You absolutely don&#39;t want to drain all the power saved in the device&#39;s battery by using some nasty and heavy framework doing hundreds or thousands of unnecessary or avoidable operations in a second.</p></li></ul>

<p>So after all these, especially the last one which is performance, you have to chicken out many frameworks, probably including ReactJS. And with any other framework, you would want to optimize it enough especially for memory consumption unless you want the OOM killer to commit an unforgiving crime(from your point of view as the developer of the app and not as a user) and murder your app!</p>

<p>I personally use <a href="https://www.infernojs.org/" rel="nofollow">InfernoJS</a> after some experiences with pure JS(no framework) in many of my apps like <a href="VM-IRC" rel="nofollow">https://notabug.org/bananaphone/vm-irc</a>, <a href="https://notabug.org/bananaphone/fooplot" rel="nofollow">Fooplot</a>, <a href="https://notabug.org/bananaphone/simplequran" rel="nofollow">SimpleQuran</a> or toys like <a href="https://notabug.org/bananaphone/talkingbot" rel="nofollow">TalkingBot</a>. Inferno is a fork of the famous <a href="https://reactjs.org/" rel="nofollow">ReactJS</a> optimized for mobile and high performance. According to <a href="https://www.infernojs.org/benchmarks" rel="nofollow">benchmarks on Inferno website</a>, it is just a bit worse than Javascript with no framework while it brings good features of ReactJS(it is unclear, at least for me, that such a performance is gained by <a href="https://www.infernojs.org/docs/guides/optimizations" rel="nofollow">disabling normalization</a> or not). This framework is also has been suggested in KaiOSTech&#39;s developer FAQ <a href="https://developer.kaiostech.com/docs/developer-faq/" rel="nofollow">here</a>. And I&#39;ve heard by some, Inferno is what KaiOSTech itself uses for stock apps of its operating system. However, I can&#39;t confirm or deny that.</p>

<p>After all these, InfernoJS is not the only option you&#39;ve got. I&#39;ve seen many using other frameworks. I will name a few in brief:</p>
<ul><li><p><a href="https://github.com/garredow" rel="nofollow">garredow</a> uses <a href="https://preactjs.com/" rel="nofollow">Preact</a> for his <a href="https://github.com/garredow/foxcasts-lite" rel="nofollow">foxcasts-lite podcast app</a>.</p></li>

<li><p><a href="https://github.com/Tombarr/" rel="nofollow">tbrrss</a> uses <a href="https://svelte.dev/" rel="nofollow">Svelte</a> for his <a href="https://podlp.com" rel="nofollow">PodLP podcast app</a>.</p></li>

<li><p>speeduploop, one of the founders of the BH community, uses <a href="https://mithril.js.org/" rel="nofollow">Mithril</a> for his <a href="https://store.bananahackers.net/#adbroot" rel="nofollow">ADBroot</a> app. Just look at the small code size!</p></li></ul>

<p>According to the benchmark on Inferno website and many other benchmarks which you can easily find using your favorite search engine, for example <a href="https://rajaraodv.medium.com/using-preact-instead-of-react-70f40f53107c" rel="nofollow">this one on Medium</a>, all these frameworks provide better performance compared to ReactJS.</p>

<p>Let me end this part with a few words regarding other concerns you should have:</p>
<ul><li><p>The CSS you use is important too. You&#39;d better not forget that! KaiOS, excluding v3.0, hasn&#39;t got <a href="https://wiki.mozilla.org/Quantum" rel="nofollow">Quantum engine</a></p></li>

<li><p>The library and modules you use are just as important as the framework you use. They must be optimized for performance especially memory. Remember the OOM killer? However, sometimes you have not got many choices. For example for <a href="https://github.com/farooqkz/chooj" rel="nofollow">Chooj</a> it seems the only option I&#39;ve got so far is <a href="https://github.com/matrix-org/matrix-js-sdk" rel="nofollow">matrix-js-sdk</a>. Also, you might need to modify the library you want to use, a little or more than a little, to suit your requirements. Again for Chooj, I have to somehow make <a href="https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/mozSystem" rel="nofollow">mozSystem property enabled in XMLHttpRequest</a> or <a href="https://developer.mozilla.org/en-US/docs/Glossary/CORS" rel="nofollow">CORS</a> will block the requests I make.</p></li></ul>

<h2 id="the-reasons-why-you-might-not-want-to-develop-for-kaios" id="the-reasons-why-you-might-not-want-to-develop-for-kaios">The reasons why you might not want to develop for KaiOS</h2>

<p>I&#39;ve written <a href="https://blog.bananahackers.net/farooqkz/there-are-too-many-reasons-to-avoid-kaios" rel="nofollow">a separate blog post about reasons one(mostly a user) would not want to use a KaiOS device</a>. Writing apps is useless if there are no users to use them. Right? However, there is no absolute good or bad operating system. I highly recommend reading that post or at least the titles inside if you are thinking to spend time and effort developing apps for KaiOS, especially as a real job and not only a fun thing.</p>

<hr>

<h2 id="hardware-requirements-for-the-app-development" id="hardware-requirements-for-the-app-development">Hardware requirements for the app development</h2>

<p>So you are sure you want to develop for KaiOS? Firstly you need a PC or laptop or something with a comfortable and fast keyboard to code on. The good news is that you do not need 8GB of RAM only for Android Studio or 4GB for Flutter! You only need enough for these:</p>
<ul><li><p>A Firefox tab which you test your app there in most cases.</p></li>

<li><p>2 or 3 more browser tabs to search stuff on the Internet and read them.</p></li>

<li><p>WebIDE to deploy your app to your KaiOS device and also to debug it. You probably could use command-line tools like <a href="https://gitlab.com/suborg/gdeploy" rel="nofollow">Luxferre&#39;s gdeploy</a> or <a href="https://github.com/fabricedesre/b2gclitool" rel="nofollow">Fabrice&#39;s b2gclitool</a> which eat less of your valuable RAM.</p></li>

<li><p>A Matrix client to join BananaHackers Matrix rooms so that you could get in touch with the community and perhaps ask questions from them. Fortunately, there are a variety of Matrix clients for many operating systems including but not limited to KaiOS, Windows, Android, GNU/Linux, and OS X. From Terminal-based Weechat to graphical and memory hungry Element. The choice is yours. See a list of clients <a href="https://matrix.org/clients/" rel="nofollow">here</a></p></li>

<li><p>At last the Operating System you use also will consume memory. If you don&#39;t have much memory available, you could go for a pretty light-on-memory but yet well-supported Linux distro. For example those with <a href="https://xfce.org/" rel="nofollow">XFCE</a> or <a href="http://www.lxde.org/" rel="nofollow">LXDE</a> as graphical shells. You could alternatively use just a window manager like <a href="http://openbox.org/wiki/Main_Page" rel="nofollow">Openbox</a> or <a href="https://i3wm.org/" rel="nofollow">my favorite tiling WM, i3</a> which eat much less memory compared to something even like XFCE.</p></li></ul>

<p>Another device you need for KaiOS app development is obviously a KaiOS device. But not any device. Of course, you should be able to install your app on your KaiOS device through your other device, say your laptop. This process is called sideloading and you need to enable debugging mode on your device to sideload apps. The process of getting debug mode enabled is not the same for all devices. On some nearly impossible or really hard and on some is easy like prey. You can read stuff on <a href="https://wiki.bananahackers.net" rel="nofollow">the wiki</a> or <a href="http://bananahackers.net" rel="nofollow">the website</a>.</p>

<p>If you need quick advice, most community members, including myself, will suggest Nokia phones for development. The reason behind this, other than the fact that a Nokia device is unlikely to be unavailable in your region, is that enabling debug mode on Nokia devices is as easy as dialing <code>*#*#33284#*#*</code> and voila! A bug icon will appear in the status bar meaning now you can sideload apps to your device through your computer! There are, however, at least two confirmed exceptions: Nokia 2720 Flip and 800 Tough if you upgrade their firmware to <code>v30</code>(do not confuse with KaiOS v3.0 that&#39;s a different thing). Fortunately, before the OTA update become available in my region, a friend told me not to upgrade to firmware v30. And thanks to him, I did not.</p>

<hr>

<h2 id="links-collection" id="links-collection">Links collection</h2>

<p>While I tried to put as many links as possible in the content to give you clues for further reading, there are many links which either did not fit in the content, or I think I would better repeat them here.</p>
<ul><li><p>BananaHackers <a href="https://wiki.bananahackers.net" rel="nofollow">wiki</a> and <a href="https://bananahackers.net" rel="nofollow">website</a>: Contains handy resources on rooting different KaiOS devices, developing on them, code snippets, device APIs, and much more. You can contribute and add content too! Just ask for a wiki account and permission to edit and add pages. Any good contribution to the wiki shall be appreciated!</p></li>

<li><p>BananaHackers chatrooms on <a href="https://matrix.to/#/%23bh-appdev:mozilla.org" rel="nofollow">Matrix</a> and <a href="https://discord.gg/rQ93zEu" rel="nofollow">Discord</a>: You can keep in touch with the community, ask from them or answer their questions and share the progress on your work with them. As always <strong>don&#39;t ask to ask just ask!</strong></p></li>

<li><p><a href="http://ukaiosdev.wikidot.com" rel="nofollow">Unofficial KaiOS development wiki by alego4710</a>: Contains useful resources regarding app development for KaiOS.</p></li>

<li><p><a href="https://web.archive.org/web/20210308002050/https://developer.mozilla.org/en-US/docs/Archive/B2G_OS" rel="nofollow">B2G docs on Wayback machine</a>: These pages are super helpful. At least the APIs part has been so helpful for all of us. It is so unfortunate that Mozilla removed these from MDN. If the Wayback machine link did not work for you, there is <a href="https://contest-server.cs.uchicago.edu/ref/JavaScript/developer.mozilla.org/en-US/docs/Archive/B2G_OS/API.html" rel="nofollow">an alternative link from the University of Chicago</a>. And finally you might want to check out <a href="https://github.com/mdn/archived-content" rel="nofollow">this Github repository</a> to self-host these or for offline use.</p></li>

<li><p><a href="https://github.com/AdrianMachado/KaiUI" rel="nofollow">Adrian&#39;s KaiUI</a>: It has got UI components for creating KaiOS apps. It is in ReactJS but you could easily use the (S)CSS files and port to other React-like frameworks. For example in my project, Chooj, I have ported many of those which I needed to InfernoJS. See <a href="https://github.com/farooqkz/chooj/tree/master/src/ui" rel="nofollow">this directory on Chooj&#39;s repository</a></p></li>

<li><p><a href="https://github.com/nadim1992/KaiUI" rel="nofollow">nadim&#39;s KaiUI</a>: It has got fewer components compared to Adrian&#39;s. It still seems nice.</p></li>

<li><p><a href="https://github.com/topics/kaiui" rel="nofollow">KaiUI topic on Github</a>: You can see other KaiUIs.</p></li>

<li><p><a href="https://kaios.dev" rel="nofollow">Tom&#39;s blog about KaiOS</a>: You can find many interesting information here about KaiOS devices and also app development for them. Tom is the developer of PodLP, a very popular podcast app for KaiOS and one of <a href="https://www.kaiostech.com/2020-most-popular-kaios-apps/" rel="nofollow">the most popular apps in 2020</a></p></li></ul>

<p><strong>Got any other useful resources? Feel free to tell me about them by emailing me and I will add them to the collection.</strong></p>

<hr>

<h2 id="last-words" id="last-words">Last words</h2>

<p>I am not a professional developer and my knowledge is limited. Feel free to contact me, either by commenting under this post or emailing me or pinging me on Matrix, if you think something was written not right by me or perhaps some of my writings were not clear enough.</p>

<p>While I would be happy to answer your questions regarding app development for KaiOS if you contact me somehow, I highly recommend that you ask in the chatrooms and if you want my attention, you could ping or mention me there. This way others could enter the discussion. Perhaps their answers are faster or more correct than mine. Also, others could use your answered question and benefit from it. Of course, this does not mean I will not answer your questions in private whenever I can.</p>
]]></content:encoded>
      <guid>https://blog.bananahackers.net/farooqkz/a-not-so-brief-introduction-to-kaios-and-app-development-for-it</guid>
      <pubDate>Wed, 01 Dec 2021 07:29:57 +0100</pubDate>
    </item>
    <item>
      <title>There are too many reasons to avoid KaiOS</title>
      <link>https://blog.bananahackers.net/farooqkz/there-are-too-many-reasons-to-avoid-kaios</link>
      <description>&lt;![CDATA[#kaios #bananahackers #kai&#xA;&#xA;After my recent so long messages in the BananaHackers community chat rooms regarding why KaiOS sucks, I thought it would be much better if I write a blog post in the BH blog to let more people hear my voice and read my reasons regarding why one should not use KaiOS.&#xA;&#xA;In the beginning, I chose Nokia 8110 4G instead of an Android phone for the following reasons:&#xA;&#xA; Avoiding social media and carrying them everywhere with myself. You know it is harder to chat using an ABC keypad!&#xA; I needed a cheap phone capable of the basics of every mobile phone(Calls and SMS) plus 3G or 4G internet sharing with WiFi hotspot so that I could feed the internet to my Onyx Boox Poke Pro which is an Android ebook reader with an E-Ink display(which doesn&#39;t hurt eyes).&#xA;&#xA;KaiOS is still capable of those for me including a few other stuff which I didn&#39;t need in the beginning but not everyone&#39;s use case just like mine.&#xA;&#xA;Here I go through many reasons one might want to avoid using KaiOS and go for an Android phone instead. Many of the reasons I have listed here may only apply to app developers.&#xA;&#xA;Note that all these reasons mostly apply to current versions of KaiOS excluding KaiOS 3.0&#xA;&#xA;!--more--&#xA;&#xA;Poor support from manufacturers&#xA;&#xA;How many OTA updates have your device got? one? two? perhaps zero? It seems that manufactures aren&#39;t much interested in giving away firmware updates for their KaiOS devices. As far as I remember my late bananaphone(aka Nokia 8110 4G) had got just 2 OTA updates. And it never got an update to KaiOS 2.5.2!&#xA;&#xA;But for Android phones, the story is so different as most manufacturers bump Android version once or twice. And for KaiOS, Nokia didn&#39;t even go up by 0.0.1 which really sucks. This means the customer or user probably needs to buy a new phone to get every new minor software update.&#xA;&#xA;So at least most current KaiOS devices, if not all, will never get to KaiOS 3.0, unfortunately.&#xA;&#xA;Recent Let&#39;s Encrypt certificates problem and OTA updates&#xA;&#xA;The LE problem has been solved on most or all devices with a Store update.&#xA;&#xA;As far as I know, due to a recent problem, KaiOS recognizes websites with Let&#39;s Encrypt certificates as insecure. And since there are no OTA updates for most phones, at least not so soon, this ruins a lot of functionalities of a KaiOS device. The problem&#39;s not with browsing website&#39;s with the poor browser of KaiOS. You can hardly browse a website with that browser. And if you ever wanted to, you could add websites using LE certificates as exceptions which is kinda annoying but at least works.&#xA;&#xA;The real problem arises when an app tries to access some API of itself. However, I&#39;ve read in the BH App development chat room from tbrrss(if I remember correctly) that there is a workaround:&#xA;&#xA;  Visit API of your Application in KaiOS&#39;s browser and add it as an exception.&#xA;&#xA;I haven&#39;t tested it myself so I can&#39;t confirm it but let&#39;s be optimistic and suppose it does work. Imagine two API servers for each KaiOS app and a total of 5 apps on your device using APIs. I guess you&#39;ll need to adb pull all 5 apps off your device, find the API servers in the source code of those 5 apps and type in KaiOS&#39;s browser with ABC keyboard. Typing API endpoints even using Android&#39;s QWERTY keyboard is not an easy job...&#xA;&#xA;And it&#39;s not the end of the certificates story: Not all apps work like this, using one or more API endpoints and retrieving data from them. For example for my friend&#39;s RSS reader app, John David&#39;s feedolin, you&#39;d have to do this for all the websites you want to read feeds from and are using LE certificates.&#xA;&#xA;And yet for John&#39;s app, it is the good part. What about some Podcast app? I guess the developer has to get a server with a database(or a list) of podcast websites using LE certificates and tell the user to do the process for every website, including the API endpoint of the app itself if any. The developer should also add Dear Users, I know this really sucks but it is OEM&#39;s fault and you&#39;ve got no other choice&#xA;&#xA;Regarding my Matrix client for KaiOS, Chooj, I&#39;ve got to tell users to visit their homeserver address with browser to make Chooj work.&#xA;&#xA;As a final word in this sub-section, it seems to be no workaround for other protocols using LE certificates like the ones used by Email app.&#xA;&#xA;KaiStore takes a big share of the income of your KaiOS app&#xA;&#xA;This section and the next one apply only if you are a KaiOS app developer. If you are a user, you might want to skip this section.&#xA;&#xA;According to Christian, developer of AirshipCombat3D and SpaceWalk3D, and many other developers also, Kai takes about 70% of the income your app makes through ads. I remember Christian had said:&#xA;&#xA;   App Development for KaiOS is burning time and money. my game(AirshipCombat3D) has hardly made the costs of the server.&#xA;&#xA;Surprise: KaiStore has stupid rules for you dear developers!&#xA;&#xA;One stupid rule Kai has made for dear developers is that you must add KaiAds to your app!&#xA;&#xA;So this means one of these:&#xA;&#xA; You must integrate your app with KaiAds but you can simply disable it. However, it will make your app about 4KiB larger. Possibly with useless API calls to Kai.&#xA;&#xA; You must add KaiAds to your recipe and you must use it!&#xA;&#xA;Both suck, the latter sucks more. That&#39;s why many developers and I have never submitted our apps to KaiStore, yet. Besides, I will probably make my free/open source app, non-free by letting KaiAds in.&#xA;&#xA;There&#39;s however this quote from KaiOS developers FAQ which I&#39;m unaware how much is it real:&#xA;&#xA;  If for the specific reason you can’t monetize your content or would not like to monetize, kindly reach out to developersupport@kaiostech.com&#xA;&#xA;Another stupid rule is the one regarding VoIP apps when they want to use Mobile data for voice or video calls. I don&#39;t know if it is still there. Luxferre had pointed to it somewhere(on the forum?) and I had seen it myself on Kai&#39;s website. This means I probably cannot submit Chooj to KaiStore even if I wanted to use KaiAds!&#xA;&#xA;Weak hardware and crappy devices&#xA;&#xA;As far as I know, all KaiOS devices come either with 512MiB or 256MiB of RAM. I know KaiOS can run on 256MiB of RAM and that&#39;s great but what about the apps?&#xA;&#xA;And their processor is usually pretty weak dual/quad-core ones. I was lucky to have Qualcomm&#39;s processor on my Nokia phones but what about the other users?&#xA;&#xA;Another problem is with the shape of devices: The Bananaphone is curved and the Flip of Nokia is... Flip. Both are subject to be easily breakable...&#xA;&#xA;And as the last set of problems I&#39;ll specify here, I would like to mention that there are hardware or software bugs in many devices which never got fixed. Hey, Nokia! Don&#39;t you hear the voice of probably thousands of users of 8110 including me complaining about its keypad? Or the problem of 6300&#39;s GPS perhaps?&#xA;&#xA;You may install apps from KaiStore or... KaiStore!&#xA;&#xA;Unlike in Android which you can simply download APKs from the Internet and install them on your device or use third party stores like the cool and free(as in freedom) F-droid, on KaiOS the only source of apps is KaiStore.&#xA;&#xA;Some users might mention sideloading with WebIDE but firstly, it requires a computer of some sort and secondly, it is not available on all devices easily.&#xA;&#xA;Even on those which you can easily sideload stuff, there is a code which you should dial which nowhere(as far as I&#39;ve seen) in the official documentation of KaiOS(not FirefoxOS), it has been written! And to enable the developer menu you need to sideload something like Luxferre&#39;s Wallace Toolbox after you enabled debug mode with that code.&#xA;&#xA;Also on the newer firmware build for the Flip and the Tough of Nokia which is v30, sideloading seems to be disabled and you have to patch the /boot partition with EDL to be able to sideload apps again. Fortunately, I didn&#39;t upgrade to the v30 build for my 800 Tough.&#xA;&#xA;Other reasons in brief why KaiOS sucks...&#xA;&#xA; Except for Jiophone which is only available in India and working with their carriers only, KaiOS phones are not so cheap. And yet Kai advertises about devices as cheap as 10 USD...&#xA;&#xA; KaiOS phones officially got no task manager of some sort for managing open apps&#xA;&#xA;What am I going to do?&#xA;&#xA;I will wait till KaiOS 3.0 and only if it satisfied me, I would continue being on this platform and develop for it. Otherwise, I would leave it and perhaps go for an Android phone. Nevertheless, I shall continue developing Chooj if possible.&#xA;&#xA;I might be wrong in some cases. So I love to hear from you, readers! Consider commenting at the bottom of this post.]]&gt;</description>
      <content:encoded><![CDATA[<p><a href="/farooqkz/tag:kaios" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">kaios</span></a> <a href="/farooqkz/tag:bananahackers" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">bananahackers</span></a> <a href="/farooqkz/tag:kai" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">kai</span></a></p>

<p>After my recent so long messages in the BananaHackers community chat rooms regarding why KaiOS sucks, I thought it would be much better if I write a blog post in the BH blog to let more people hear my voice and read my reasons regarding why one should not use KaiOS.</p>

<p>In the beginning, I chose Nokia 8110 4G instead of an Android phone for the following reasons:</p>
<ul><li>Avoiding social media and carrying them everywhere with myself. You know it is harder to chat using an ABC keypad!</li>
<li>I needed a cheap phone capable of the basics of every mobile phone(Calls and SMS) plus 3G or 4G internet sharing with WiFi hotspot so that I could feed the internet to my Onyx Boox Poke Pro which is an Android ebook reader with an E-Ink display(which doesn&#39;t hurt eyes).</li></ul>

<p>KaiOS is still capable of those for me including a few other stuff which I didn&#39;t need in the beginning but not everyone&#39;s use case just like mine.</p>

<p>Here I go through many reasons one might want to avoid using KaiOS and go for an Android phone instead. <strong>Many of the reasons I have listed here may only apply to app developers.</strong></p>

<p>Note that all these reasons mostly apply to current versions of KaiOS <strong>excluding KaiOS 3.0</strong></p>



<h2 id="poor-support-from-manufacturers" id="poor-support-from-manufacturers">Poor support from manufacturers</h2>

<p>How many OTA updates have your device got? one? two? perhaps zero? It seems that manufactures aren&#39;t much interested in giving away firmware updates for their KaiOS devices. As far as I remember my late bananaphone(aka Nokia 8110 4G) had got just 2 OTA updates. And it never got an update to KaiOS 2.5.2!</p>

<p>But for Android phones, the story is so different as most manufacturers bump Android version once or twice. And for KaiOS, Nokia didn&#39;t even go up by <code>0.0.1</code> which really sucks. This means the customer or user probably needs to buy a new phone to get every new minor software update.</p>

<p>So at least most current KaiOS devices, if not all, will <em>never</em> get to KaiOS 3.0, unfortunately.</p>

<h3 id="recent-let-s-encrypt-certificates-problem-and-ota-updates" id="recent-let-s-encrypt-certificates-problem-and-ota-updates">Recent Let&#39;s Encrypt certificates problem and OTA updates</h3>

<p>The LE problem has been solved on most or all devices with a Store update.</p>

<p>~~
As far as I know, due to a recent problem, KaiOS recognizes websites with Let&#39;s Encrypt certificates as insecure. And since there are no OTA updates for most phones, at least not so soon, this ruins a lot of functionalities of a KaiOS device. The problem&#39;s not with browsing website&#39;s with the poor browser of KaiOS. You can hardly browse a website with that browser. And if you ever wanted to, you could add websites using LE certificates as exceptions which is kinda annoying but at least works.</p>

<p>The real problem arises when an app tries to access some API of itself. However, I&#39;ve read in the BH App development chat room from tbrrss(if I remember correctly) that there is a workaround:</p>

<blockquote><p>Visit API of your Application in KaiOS&#39;s browser and add it as an exception.</p></blockquote>

<p>I haven&#39;t tested it myself so I can&#39;t confirm it but let&#39;s be optimistic and suppose it does work. Imagine two API servers for each KaiOS app and a total of 5 apps on your device using APIs. I guess you&#39;ll need to <code>adb pull</code> all 5 apps off your device, find the API servers in the source code of those 5 apps and type in KaiOS&#39;s browser with ABC keyboard. Typing API endpoints even using Android&#39;s QWERTY keyboard is not an easy job...</p>

<p>And it&#39;s not the end of the certificates story: Not all apps work like this, using one or more API endpoints and retrieving data from them. For example for my friend&#39;s RSS reader app, <a href="https://github.com/strukturart/feedolin" rel="nofollow">John David&#39;s feedolin</a>, you&#39;d have to do this for all the websites you want to read feeds from and are using LE certificates.</p>

<p>And yet for John&#39;s app, it is the good part. What about some Podcast app? I guess the developer has to get a server with a database(or a list) of podcast websites using LE certificates and tell the user to do the process for every website, including the API endpoint of the app itself if any. The developer should also add <code>Dear Users, I know this really sucks but it is OEM&#39;s fault and you&#39;ve got no other choice</code></p>

<p>Regarding my Matrix client for KaiOS, <a href="https://github.com/farooqkz/chooj" rel="nofollow">Chooj</a>, I&#39;ve got to tell users to visit their homeserver address with browser to make Chooj work.</p>

<p>As a final word in this sub-section, it seems to be no workaround for other protocols using LE certificates like the ones used by Email app.</p>

<p>~~</p>

<h2 id="kaistore-takes-a-big-share-of-the-income-of-your-kaios-app" id="kaistore-takes-a-big-share-of-the-income-of-your-kaios-app">KaiStore takes a big share of the income of your KaiOS app</h2>

<p>This section and the next one apply only if you are a KaiOS app developer. If you are a user, you might want to skip this section.</p>

<p>According to Christian, developer of AirshipCombat3D and SpaceWalk3D, and many other developers also, Kai takes about <code>70%</code> of the income your app makes through ads. I remember Christian had said:</p>

<blockquote><p>App Development for KaiOS is burning time and money. my game(AirshipCombat3D) has hardly made the costs of the server.</p></blockquote>

<h2 id="surprise-kaistore-has-stupid-rules-for-you-dear-developers" id="surprise-kaistore-has-stupid-rules-for-you-dear-developers">Surprise: KaiStore has stupid rules for you dear developers!</h2>

<p>One stupid rule Kai has made for dear developers is that you <strong>must</strong> add <a href="https://kaiads.com" rel="nofollow">KaiAds</a> to your app!</p>

<p>So this means one of these:</p>
<ul><li><p>You must integrate your app with KaiAds but you can simply disable it. However, it will make your app about 4KiB larger. Possibly with useless API calls to Kai.</p></li>

<li><p>You must add KaiAds to your recipe and you <strong>must</strong> use it!</p></li></ul>

<p>Both suck, the latter sucks more. That&#39;s why many developers and I have never submitted our apps to KaiStore, yet. Besides, I will probably make my free/open source app, non-free by letting KaiAds in.</p>

<p>There&#39;s however this quote from KaiOS developers FAQ which I&#39;m unaware how much is it real:</p>

<blockquote><p>If for the specific reason you can’t monetize your content or would not like to monetize, kindly reach out to developersupport@kaiostech.com</p></blockquote>

<p>Another stupid rule is the one regarding VoIP apps when they want to use Mobile data for voice or video calls. I don&#39;t know if it is still there. Luxferre had pointed to it somewhere(on the forum?) and I had seen it myself on Kai&#39;s website. This means I probably cannot submit Chooj to KaiStore even if I wanted to use KaiAds!</p>

<h2 id="weak-hardware-and-crappy-devices" id="weak-hardware-and-crappy-devices">Weak hardware and crappy devices</h2>

<p>As far as I know, all KaiOS devices come either with 512MiB or 256MiB of RAM. I know KaiOS can run on 256MiB of RAM and that&#39;s great but what about the apps?</p>

<p>And their processor is usually pretty weak dual/quad-core ones. I was lucky to have Qualcomm&#39;s processor on my Nokia phones but what about the other users?</p>

<p>Another problem is with the shape of devices: The Bananaphone is curved and the Flip of Nokia is... Flip. Both are subject to be easily breakable...</p>

<p>And as the last set of problems I&#39;ll specify here, I would like to mention that there are hardware or software bugs in many devices which never got fixed. Hey, Nokia! Don&#39;t you hear the voice of probably thousands of users of 8110 including me complaining about its keypad? Or the problem of 6300&#39;s GPS perhaps?</p>

<h2 id="you-may-install-apps-from-kaistore-or-kaistore" id="you-may-install-apps-from-kaistore-or-kaistore">You may install apps from KaiStore or... KaiStore!</h2>

<p>Unlike in Android which you can simply download APKs from the Internet and install them on your device or use third party stores like the cool and free(as in freedom) F-droid, on KaiOS the only source of apps is KaiStore.</p>

<p>Some users might mention sideloading with WebIDE but firstly, it requires a computer of some sort and secondly, it is not available on all devices easily.</p>

<p>Even on those which you can easily sideload stuff, there is a code which you should dial which nowhere(as far as I&#39;ve seen) in the official documentation of KaiOS(not FirefoxOS), it has been written! And to enable the developer menu you need to sideload something like Luxferre&#39;s Wallace Toolbox after you enabled debug mode with that code.</p>

<p>Also on the newer firmware build for the Flip and the Tough of Nokia which is v30, sideloading seems to be disabled and you have to patch the <code>/boot</code> partition with EDL to be able to sideload apps again. Fortunately, I didn&#39;t upgrade to the v30 build for my 800 Tough.</p>

<h2 id="other-reasons-in-brief-why-kaios-sucks" id="other-reasons-in-brief-why-kaios-sucks">Other reasons in brief why KaiOS sucks...</h2>
<ul><li><p>Except for Jiophone which is only available in India and working with their carriers only, KaiOS phones are not so cheap. And yet Kai advertises about devices as cheap as 10 USD...</p></li>

<li><p>KaiOS phones officially got <strong>no task manager of some sort for managing open apps</strong></p></li></ul>

<h2 id="what-am-i-going-to-do" id="what-am-i-going-to-do">What am I going to do?</h2>

<p>I will wait till KaiOS 3.0 and only if it satisfied me, I would continue being on this platform and develop for it. Otherwise, I would leave it and perhaps go for an Android phone. Nevertheless, I shall continue developing Chooj if possible.</p>

<p>I might be wrong in some cases. So I love to hear from you, readers! Consider commenting at the bottom of this post.</p>
]]></content:encoded>
      <guid>https://blog.bananahackers.net/farooqkz/there-are-too-many-reasons-to-avoid-kaios</guid>
      <pubDate>Mon, 01 Nov 2021 16:18:57 +0100</pubDate>
    </item>
  </channel>
</rss>