<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>matrix &amp;mdash; farooqkz</title>
    <link>https://blog.bananahackers.net/farooqkz/tag:matrix</link>
    <description>Farooq&#39;s KaiOS related experiences started with a hackable banana</description>
    <pubDate>Fri, 15 May 2026 15:18:28 +0200</pubDate>
    <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>When can you attend a LIVE development of Chooj?</title>
      <link>https://blog.bananahackers.net/farooqkz/when-can-you-attend-a-live-development-of-chooj</link>
      <description>&lt;![CDATA[#chooj #matrixclient #matrix&#xA;&#xA;I would like to go LIVE on BigBlueButton for the development of Chooj, a Matrix chat and call client for KaiOS. But first I would like to know if anyone&#39;s interested in attending such a meeting or LIVE and if anyone&#39;s interested, when would they attend?&#xA;&#xA;The meeting is going to happen on a BigBlueButton instance so you will need just your modern web browser to attend. Also, it would take less than an hour of time. And I will try to record the meeting and upload it to BananaHacker&#39;s PeerTube channel.&#xA;&#xA;So if you are interested, comment on this post with the date and time you will be able to attend.]]&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:matrixclient" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">matrixclient</span></a> <a href="/farooqkz/tag:matrix" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">matrix</span></a></p>

<p>I would like to go LIVE on BigBlueButton for the development of <a href="https://github.com/farooqkz/chooj" rel="nofollow">Chooj</a>, a Matrix chat and call client for KaiOS. But first I would like to know if anyone&#39;s interested in attending such a meeting or LIVE and if anyone&#39;s interested, when would they attend?</p>

<p>The meeting is going to happen on a <a href="https://bigbluebutton.org" rel="nofollow"><strong>BigBlueButton</strong></a> instance so you will need just your modern web browser to attend. Also, it would take <strong>less than an hour</strong> of time. And I will try to record the meeting and upload it to <a href="https://peertube.linuxrocks.online/c/bananahackers/videos" rel="nofollow">BananaHacker&#39;s PeerTube channel</a>.</p>

<p>So if you are interested, comment on this post with the date and time you will be able to attend.</p>
]]></content:encoded>
      <guid>https://blog.bananahackers.net/farooqkz/when-can-you-attend-a-live-development-of-chooj</guid>
      <pubDate>Sun, 31 Oct 2021 18:49:24 +0100</pubDate>
    </item>
    <item>
      <title>Matrix client project got a name + other news</title>
      <link>https://blog.bananahackers.net/farooqkz/matrix-client-project-got-a-name-other-news</link>
      <description>&lt;![CDATA[#chooj #matrixclient #matrix&#xA;&#xA;I have renamed the repository, package and app name to Chooj and from now on this is the name of the project.&#xA;&#xA;I have also added a few numbers of badges to the project&#39;s README.&#xA;&#xA;Project&#39;s repository&#xA;&#xA;!--more--&#xA;&#xA;What does Chooj mean?&#xA;&#xA;In my local language, Bandari, which is a version of Persian mixed with Arabic, English and many other languages, Chooj is name of a plant.&#xA;&#xA;What works so far?&#xA;&#xA;Currently, only login process with only password works on a real device. Even through much more works in a recent browser and I&#39;m looking for workarounds to fix this problem.&#xA;&#xA;These stuff has been implemented so far and should work(in browser and not on KaiOS, yet):&#xA;&#xA; Login with password&#xA; Seeing a list of DMs(1 to 1 rooms)&#xA; Contacting project author(me) via Email in About tab by pressing Call key&#xA; Seeing a list of messages in each DM. A text-box exists too but does not do anything, yet.]]&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:matrixclient" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">matrixclient</span></a> <a href="/farooqkz/tag:matrix" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">matrix</span></a></p>

<p>I have renamed the repository, package and app name to <code>Chooj</code> and from now on this is the name of the project.</p>

<p>I have also added a few numbers of badges to the project&#39;s README.</p>

<p><a href="https://github.com/farooqkz/chooj" rel="nofollow">Project&#39;s repository</a></p>



<h3 id="what-does-chooj-mean" id="what-does-chooj-mean">What does Chooj mean?</h3>

<p>In my local language, Bandari, which is a version of Persian mixed with Arabic, English and many other languages, Chooj is name of a plant.</p>

<h3 id="what-works-so-far" id="what-works-so-far">What works so far?</h3>

<p>Currently, only login process with only password works on a real device. Even through much more works in a recent browser and I&#39;m looking for workarounds to fix this problem.</p>

<p>These stuff has been implemented so far and should work(in browser and not on KaiOS, yet):</p>
<ul><li>Login with password</li>
<li>Seeing a list of DMs(1 to 1 rooms)</li>
<li>Contacting project author(me) via Email in About tab by pressing Call key</li>
<li>Seeing a list of messages in each DM. A text-box exists too but does not do anything, yet.</li></ul>
]]></content:encoded>
      <guid>https://blog.bananahackers.net/farooqkz/matrix-client-project-got-a-name-other-news</guid>
      <pubDate>Mon, 09 Aug 2021 15:32:57 +0200</pubDate>
    </item>
    <item>
      <title>The development of the Matrix client has started!</title>
      <link>https://blog.bananahackers.net/farooqkz/the-development-of-the-matrix-client-has-started</link>
      <description>&lt;![CDATA[#infernojs #inferno #matrix #matrixclient #voip #voicecall&#xA;&#xA;It has been a few days which I have started the development of the app. Just like the prototype I had coded before, InfernoJS is used as framework to create the app.&#xA;&#xA;You can see the Github repository here.&#xA;&#xA;!--more--&#xA;&#xA;Why InfernoJS?&#xA;&#xA;InfernoJS is a fork of ReactJS InfernoJS is a React-like framework but with a performance comparable to Vanilla JS which is Javascript without any framework. You can see benchmarks here. Let me explain the reasons Inferno has been chosen. If you are already familiar with React-like frameworks, you can skip this section and jump to Why Github?&#xA;&#xA;Just like React, an Inferno app is made of components and each component is parent of some other component or components. Of course there are &#34;low level&#34; components which are home to real CSS and HTML. But you code those low level ones once and them everywhere without a need to waste your time to think about HTML or CSS again. As an example, for Login component this is the tree:&#xA;&#xA;Login&#xA;  Header&#xA;  ListView&#xA;     TextInput(for homeserver address)&#xA;     TextInput(for username)&#xA;  SoftKey&#xA;&#xA;As you see when writing Login component, I only need to know about usage of Header, ListView, TextInput and SoftKey components. I don&#39;t need to know about their details and I can focus on important things. Regarding these child components I only need to write them once and use them everywhere which makes more free space in my mind to care about stuff I should really care about like the logic of my app and other things.&#xA;&#xA;This makes my code highly readable and components which I write are reusable. I could also distribute the components which are common so that someone else or I, would only need to use them afterwards. Just like how you use a library or module without caring about their details.&#xA;&#xA;You can check code for Login here&#xA;&#xA;Why Github?&#xA;&#xA;If you were already following me and my projects, you could see that I was always using notabug.org for projects but for this app I&#39;ve switched to Github a service by Microsoft running a propriety software. But I have reasons to choose it over NotABug and Gitlab as well which I&#39;ll explain them in two parts.&#xA;&#xA;The main reason I&#39;ve chosen Github over NotABug is to use Github Actions to improve the development of the project and automate stuff. Of course I could combine NotABug with an external CI/CD provider but I haven&#39;t got any machine to run CI/CD jobs on it and also I wanted to focus on the project rather than other stuff.&#xA;&#xA;However I could use Gitlab which provides a similar service to Github Actions(actually Gitlab had this before Github as far as I remember) for free of charge but I live in Iran in which because of sanctions I can&#39;t use Gitlab even for public free/open source software projects directly. An alternative way would be using some kind of VPN or proxy to change my IP address to one which is not from Iran but that reduces the quality of my internet connection which being in Iran is already very low. To realize what do I mean by &#34;very low&#34;, I should tell you that my wired home connection is 2Mbps ADSL which in reality is a bit lower than 2Mbps...]]&gt;</description>
      <content:encoded><![CDATA[<p><a href="/farooqkz/tag:infernojs" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">infernojs</span></a> <a href="/farooqkz/tag:inferno" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">inferno</span></a> <a href="/farooqkz/tag:matrix" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">matrix</span></a> <a href="/farooqkz/tag:matrixclient" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">matrixclient</span></a> <a href="/farooqkz/tag:voip" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">voip</span></a> <a href="/farooqkz/tag:voicecall" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">voicecall</span></a></p>

<p>It has been a few days which I have started the development of the app. Just like the prototype I had coded before, <a href="https://infernojs.org" rel="nofollow">InfernoJS</a> is used as framework to create the app.</p>

<p>You can see the Github repository <a href="https://github.com/farooqkz/chooj" rel="nofollow">here</a>.</p>



<h3 id="why-infernojs" id="why-infernojs">Why InfernoJS?</h3>

<p><del>InfernoJS is a fork of ReactJS</del> InfernoJS is a React-like framework but with a performance comparable to Vanilla JS which is Javascript without any framework. You can see benchmarks <a href="https://infernojs.org/benchmarks" rel="nofollow">here</a>. Let me explain the reasons Inferno has been chosen. If you are already familiar with React-like frameworks, you can skip this section and jump to <strong>Why Github?</strong></p>

<p>Just like React, an Inferno app is made of components and each component is parent of some other component or components. Of course there are “low level” components which are home to real CSS and HTML. But you code those low level ones once and them everywhere without a need to waste your time to think about HTML or CSS again. As an example, for <code>Login</code> component this is the tree:</p>

<pre><code>Login
  - Header
  - ListView
     - TextInput(for homeserver address)
     - TextInput(for username)
  - SoftKey
</code></pre>

<p>As you see when writing <code>Login</code> component, I only need to know about usage of <code>Header</code>, <code>ListView</code>, <code>TextInput</code> and <code>SoftKey</code> components. I don&#39;t need to know about their details and I can focus on important things. Regarding these child components I only need to write them <em>once</em> and use them everywhere which makes more free space in my mind to care about stuff I should really care about like the logic of my app and other things.</p>

<p>This makes my code highly readable and components which I write are reusable. I could also distribute the components which are common so that someone else or I, would only need to use them afterwards. Just like how you use a library or module without caring about their details.</p>

<p>You can check code for Login <a href="https://github.com/farooqkz/matrix-client/blob/master/src/Login.js" rel="nofollow">here</a></p>

<h3 id="why-github" id="why-github">Why Github?</h3>

<p>If you were already following me and my projects, you could see that I was always using notabug.org for projects but for this app I&#39;ve switched to Github a service by Microsoft running a propriety software. But I have reasons to choose it over NotABug and Gitlab as well which I&#39;ll explain them in two parts.</p>

<p>The main reason I&#39;ve chosen Github over NotABug is to use Github Actions to improve the development of the project and automate stuff. Of course I could combine NotABug with an external CI/CD provider but I haven&#39;t got any machine to run CI/CD jobs on it and also I wanted to focus on the project rather than other stuff.</p>

<p>However I could use Gitlab which provides a similar service to Github Actions(actually Gitlab had this before Github as far as I remember) for free of charge but I live in Iran in which because of sanctions I can&#39;t use Gitlab even for public free/open source software projects directly. An alternative way would be using some kind of VPN or proxy to change my IP address to one which is not from Iran but that reduces the quality of my internet connection which being in Iran is already very low. To realize what do I mean by “very low”, I should tell you that my wired home connection is 2Mbps ADSL which in reality is a bit lower than 2Mbps...</p>
]]></content:encoded>
      <guid>https://blog.bananahackers.net/farooqkz/the-development-of-the-matrix-client-has-started</guid>
      <pubDate>Thu, 22 Jul 2021 09:53:10 +0200</pubDate>
    </item>
    <item>
      <title>Developing a call only Matrix client with crowdfunding 2</title>
      <link>https://blog.bananahackers.net/farooqkz/developing-a-call-only-matrix-client-with-crowdfunding-2</link>
      <description>&lt;![CDATA[Nokia 800 Tough image&#xA;&#xA;#matrix #voip #voicecall&#xA;&#xA;As of now, enough money has been raised for the project to get a Nokia 800 Tough but not enough to even start the first stage of the project. Thanks to all of you who donated and also those who wanted to donate but they couldn&#39;t due to any reason(including an empty pocket!).&#xA;&#xA;If you wanna still donate, you can send some Bitcoin Cash to the address I shall write in the project&#39;s page but please DO NOT send anything to the addresses specified in the previous post.&#xA;&#xA;!--more--&#xA;&#xA;Because of what was not raised, I don&#39;t promise working 15 hours a week on the project but due to what was raised I cannot leave the project so I plan to work on the project about 7 hours a week starting from 1-2 weeks later.&#xA;&#xA;In the next post I will write about status of the project and also address of project&#39;s page on Github.]]&gt;</description>
      <content:encoded><![CDATA[<p><img src="https://wiki.bananahackers.net/devices/nokia_800_tough_ds_ta_1186_03_negro_ad_l.jpg" alt="Nokia 800 Tough image"></p>

<p><a href="/farooqkz/tag:matrix" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">matrix</span></a> <a href="/farooqkz/tag:voip" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">voip</span></a> <a href="/farooqkz/tag:voicecall" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">voicecall</span></a></p>

<p>As of now, enough money has been raised for the project to get a <strong>Nokia 800 Tough</strong> but not enough to even start the first stage of the project. Thanks to all of you who donated and also those who wanted to donate but they couldn&#39;t due to any reason(including an empty pocket!).</p>

<p>If you wanna still donate, you can send some Bitcoin Cash to the address I shall write in the project&#39;s page but please <strong>DO NOT send anything to the addresses specified in the previous post</strong>.</p>



<p>Because of what was not raised, I don&#39;t promise working 15 hours a week on the project but due to what <em>was</em> raised I cannot leave the project so I plan to work on the project about 7 hours a week starting from 1-2 weeks later.</p>

<p>In the next post I will write about status of the project and also address of project&#39;s page on Github.</p>
]]></content:encoded>
      <guid>https://blog.bananahackers.net/farooqkz/developing-a-call-only-matrix-client-with-crowdfunding-2</guid>
      <pubDate>Wed, 07 Jul 2021 14:52:47 +0200</pubDate>
    </item>
    <item>
      <title>Developing a call only Matrix client with crowdfunding</title>
      <link>https://blog.bananahackers.net/farooqkz/developing-a-call-only-matrix-client-with-crowdfunding</link>
      <description>&lt;![CDATA[Matrix logo&#xA;&#xA;As of 2021-06-19 72 USD out of 200 USD has been reached.&#xA;&#xA;#matrix #voip #voicecall&#xA;&#xA;The story&#xA;&#xA;It had been a very long time which I wanted to start developing a Matrix client with voice call support for KaiOS. Before that I had tried developing a Jitsi Meet app for KaiOS letting KaiOS users have group voice chat with their feature smartphones, which failed due to their ToS.&#xA;&#xA;!--more--&#xA;&#xA;What is Matrix?&#xA;&#xA;Matrix is an open and federated protocol for chatting which supports End to End Encryption, 1 to 1 voice and video calls(support for group calls is experimental). Is it also possible to integrate other chat applications like XMPP, Telegram, Discord, IRC, etc into Matrix using bridges.&#xA;&#xA;What am I going to do?&#xA;&#xA;I want to create a Matrix call only app for KaiOS letting users of this platform to use 1 to 1 calls, especially voice call. I need at least 350 US dollars to work on it as a job about 15 hours a week and to get a Nokia 800 Tough which costs me about 120 dollars 90 dollars in my country.&#xA;&#xA;Note that I&#39;ve got a 8110(aka the bananaphone) but its keypad is almost dead.&#xA;&#xA;Donators&#39; name as well as the amount they&#39;ve donated shall be written in Credits/About tab of the app visible to everyone who uses the app. If you want your name to be written you MUST email me your crypto public key before making the transaction&#xA;&#xA;hapu [at] riseup [dot] net&#xA;&#xA;I already have written a prototype of a Matrix app which let&#39;s you login and see a list of your &#34;DMs&#34; and start a voice call as well. However this prototype needs to be rewritten, most parts at least if not everything.&#xA;&#xA;prototype screenshot&#xA;&#xA;License of the software&#xA;&#xA;The Matrix app source code will be available to all for free on some site like Github under GPLv3. It will be available on BananaHackers store as well.&#xA;&#xA;Stages&#xA;So I split the development in the following stages:&#xA;&#xA;Stage 1 -once 200 dollars is reached, summer vacation has started and I have bought a Nokia 800 Tough- will be an app with the following features:&#xA;&#xA; Login with username and password is possible only.&#xA; You could see a list of DMs&#xA; Invites are auto-accepted&#xA; Possible to start a voice call with someone or receive voice call as long as the app&#39;s running&#xA; The app will be extensible letting us add other Matrix features later easily&#xA;&#xA;Stage 2 -once 300 dollars is reached and stage 1 has been done, includes push notification for incoming calls enabling users to receive calls even if the Matrix app is not running. This requires some server software as well as some modification in the KaiOS app. Also invites are no longer auto-accepted.&#xA;&#xA;Finally Stage 3 adds video call functionality once 350 dollars is reached and also tries to improve the UI as well as performance.&#xA;&#xA;Limitations&#xA;&#xA;Due to memory hungry design of matrix-js-sdk, users might not be able to use the app with their account if they have joined large rooms.&#xA;&#xA;Another thing is that I won&#39;t be sending the app to KaiStore due to their foolish rules for Voice over IP apps.&#xA;&#xA;Tech stack&#xA;&#xA;Tech stack for the KaiOS app, most likely, will be either ReactJS or InfernoJS as well as Adrian&#39;s KaiUI. And for the push notification server software it would be either Python or Rust which is preferred.&#xA;&#xA;Entering the campaign&#xA;&#xA;So if you want to enter the campaign, send cryptocurrency to one of the addresses below and remember even small amounts would help:&#xA;EDIT: The campaign has ended, check the same blog for status of the project.&#xA;&#xA;BTC: 1Lv3FRzqcG7GhLcAMrHDwXAN6dMbfLu78g&#xA;BCH: 1AGk1t3oCxeTqYX9kAUJHFULdP32D4d6d6&#xA;&#xA;Check how much was raised here for Bitcoin and here for Bitcoin cash.&#xA;&#xA;You don&#39;t have crypto? No problem you could buy some from places like Coinbase or Kraken or other exchanges.]]&gt;</description>
      <content:encoded><![CDATA[<p><img src="https://matrix.org/docs/projects/images//made-for-matrix.png" alt="Matrix logo"></p>

<p><em>As of 2021-06-19 <strong>72 USD</strong> out of <strong>200 USD</strong> has been reached.</em></p>

<p><a href="/farooqkz/tag:matrix" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">matrix</span></a> <a href="/farooqkz/tag:voip" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">voip</span></a> <a href="/farooqkz/tag:voicecall" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">voicecall</span></a></p>

<h2 id="the-story" id="the-story">The story</h2>

<p>It had been a very long time which I wanted to start developing a Matrix client with voice call support for KaiOS. Before that I had tried developing a Jitsi Meet app for KaiOS letting KaiOS users have group voice chat with their feature smartphones, which failed due to their ToS.</p>



<h2 id="what-is-matrix" id="what-is-matrix">What is Matrix?</h2>

<p>Matrix is an open and federated protocol for chatting which supports End to End Encryption, 1 to 1 voice and video calls(support for group calls is experimental). Is it also possible to integrate other chat applications like XMPP, Telegram, Discord, IRC, etc into Matrix using bridges.</p>

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

<p>I want to create a Matrix call only app for KaiOS letting users of this platform to use 1 to 1 calls, especially voice call. I need at least <strong>350 US dollars</strong> to work on it as a job about <strong>15 hours a week</strong> and to get a <strong>Nokia 800 Tough</strong> which costs me about <del>120 dollars</del> <strong>90 dollars</strong> in my country.</p>

<p>Note that I&#39;ve got a 8110(aka the bananaphone) but its keypad is almost dead.</p>

<p>Donators&#39; name as well as the amount they&#39;ve donated shall be written in Credits/About tab of the app visible to everyone who uses the app. <strong>If you want your name to be written you MUST email me your crypto public key <em>before</em> making the transaction</strong></p>

<pre><code>hapu [at] riseup [dot] net
</code></pre>

<p>I already have written <a href="https://notabug.org/bananaphone/marooq" rel="nofollow">a prototype</a> of a Matrix app which let&#39;s you login and see a list of your “DMs” and start a voice call as well. However this prototype needs to be rewritten, most parts at least if not everything.</p>

<p><img src="https://notabug.org/bananaphone/marooq/raw/master/prototype.screenshot.png" alt="prototype screenshot"></p>

<h2 id="license-of-the-software" id="license-of-the-software">License of the software</h2>

<p>The Matrix app source code will be available to all for free on some site like Github under GPLv3. It will be available on <a href="https://store.bananahackers.net" rel="nofollow">BananaHackers store</a> as well.</p>

<h2 id="stages" id="stages">Stages</h2>

<p>So I split the development in the following stages:</p>

<p>Stage 1 -once <strong>200 dollars</strong> is reached, summer vacation has started and I have bought a Nokia 800 Tough- will be an app with the following features:</p>
<ul><li>Login with username and password is possible only.</li>
<li>You could see a list of DMs</li>
<li>Invites are auto-accepted</li>
<li>Possible to start a voice call with someone or receive voice call as long as the app&#39;s running</li>
<li>The app will be extensible letting us add other Matrix features later easily</li></ul>

<p>Stage 2 -once <strong>300 dollars</strong> is reached and stage 1 has been done, includes push notification for incoming calls enabling users to receive calls even if the Matrix app is not running. This requires some server software as well as some modification in the KaiOS app. Also invites are no longer auto-accepted.</p>

<p>Finally Stage 3 adds video call functionality once <strong>350 dollars</strong> is reached and also tries to improve the UI as well as performance.</p>

<h2 id="limitations" id="limitations">Limitations</h2>

<p><em>Due to memory hungry design of <code>matrix-js-sdk</code>, users might <strong>not</strong> be able to use the app with their account if they have joined large rooms.</em></p>

<p>Another thing is that I <strong>won&#39;t</strong> be sending the app to KaiStore due to their foolish rules for Voice over IP apps.</p>

<h2 id="tech-stack" id="tech-stack">Tech stack</h2>

<p>Tech stack for the KaiOS app, most likely, will be either <strong>ReactJS</strong> or <strong>InfernoJS</strong> as well as Adrian&#39;s KaiUI. And for the push notification server software it would be either Python or Rust which is preferred.</p>

<h2 id="entering-the-campaign" id="entering-the-campaign">Entering the campaign</h2>

<p><del>So if you want to enter the campaign, send cryptocurrency to one of the addresses below and remember even small amounts would help:</del>
EDIT: The campaign has ended, check the same blog for status of the project.</p>

<pre><code>BTC: 1Lv3FRzqcG7GhLcAMrHDwXAN6dMbfLu78g
BCH: 1AGk1t3oCxeTqYX9kAUJHFULdP32D4d6d6
</code></pre>

<p>Check how much was raised <a href="https://blockchair.com/bitcoin/address/1Lv3FRzqcG7GhLcAMrHDwXAN6dMbfLu78g" rel="nofollow">here for Bitcoin</a> and <a href="https://blockchair.com/bitcoin-cash/address/1AGk1t3oCxeTqYX9kAUJHFULdP32D4d6d6" rel="nofollow">here for Bitcoin cash</a>.</p>

<p>You don&#39;t have crypto? No problem you could buy some from places like <a href="https://coinbase.com" rel="nofollow">Coinbase</a> or <a href="https://kraken.com" rel="nofollow">Kraken</a> or other exchanges.</p>
]]></content:encoded>
      <guid>https://blog.bananahackers.net/farooqkz/developing-a-call-only-matrix-client-with-crowdfunding</guid>
      <pubDate>Wed, 09 Jun 2021 18:04:46 +0200</pubDate>
    </item>
  </channel>
</rss>