KIVY INDEPTH SERIES, KIVY 2.0
Tags: python, mobile
Published: 2021-06-12 12:05:23

Hello there, My Name is Higenyi Tobias Thomas, but you can just refer to me as Tobias HT. 
I am a programmer and have been coding in mainly Python and C for the past 6 years.
I deeply fell in love with python, it had everything I ever needed. However, there was mainly one problem. Other than the developer community, many software users detest the use of commandline interfaces, and others are even afraid of them.
Also software users love beautiful and interactive graphical user interfaces that Python's default GUI suite(Tkinter) and others simply cannot offer.

That's why I'm presenting to you, **KIVY 2.0.0.**
Kivy is a beautiful, cross platform library that adds a professional look to your GUI applications. Version 2.0 was released in December 2020, and it's the latest release that comes with major bugfixes, faster speed improvements and much more. 
It has a rich support for multimedia such as Images and videos of various formats. It provides a consistent look and feel of your app over all major mobile and desktop platforms.
You can checkout more about kivy [here](https://kivy.org/#home).

My Job here is to make you a pro at the kivy framework. We are going to learn how to develop beautiful apps and also how to compile them for both desktop and mobile. I shall be using the windows platform for desktop and Android for mobile. The examples shall be sufficient to compile to both iOS and MacOS. I do assume though, that you are sufficiently good at the python programming language, that's what we're gonna be using. Without further ado, let's dive in.

###comparison between Kivy and flutter
Before we dive deeper into kivy, I'm sure you're wondering why you would rather choose kivy instead of the hundreds of other frameworks out there that can do the same job, most notably the flutter framework. Well, here is a couple of reasons why.

#####Language in use
Kivy uses Python language for development of apps, Python has been battle tested, very fast, and easy to learn. It's used in the highly computational field of Artificial intelligence and Machine Learning and other fields of Science. Flutter on the other hand uses Dart language, a relatively new language that is still under going various tests and not really recommended for large scale production because of it's high volatility.

#####Rendering Engine
Kivy uses the SDL2 Engine, a very powerful GPU based rendering engine to display the user interface. The advantage of using sdl2 is that all the graphics that are displayed on screen are created by the fast GPU. On the other hand, Flutter uses the Skia Engine, a very powerful CPU based rendering engine. The skia engine is great when it gets to render simple user interfaces, however due to it's CPU constraint, it doesn't do well when it gets to rendering intensive apps like 3D games, simulations and more.

#####FrameRates
Kivy has a minimum framerate of around 75 frames per second, which immerses the user in a fluid app experience with almost Zero latency. This frame rate can go up 125 frames per second. while flutter provides a frame rate of 60 frames per second and barely any chance of increasing the rate speed. This is the major cause of the latency in the user experience of flutter apps.

#####App size
Kivy framework produces very light weight, highly compact and extremely fast App bundles for all the major platforms. Flutter on the other hand produces large app bundles which are almost twice and in worse cases, three times bigger than the ones produced by Kivy.

#####Native platform interaction
All frameworks have to be able to provide a way an app can interact with the system features of the underlying native platform. Kivy provides a simple way to call native android and iOS system calls with in the app through a Java Bridge and Objective C bridge which is extremely fast. Flutter on the other hand provides a message passing solution where the flutter app calls to native code and acquires results through a simple message. This is relatively slow compared to kivy.

###Conclusion
I could write about the differences between kivy and other platforms as well, but that will be much talk and yet we need to get down into business. Instead of telling you why Kivy is better, I am going to show you why.
This has just been the introduction to this series and you should expect much more.
The next 5 articles will include:
     1) introduction to the kivy app development cycle
     2) introduction to kivy widgets
     3) introduction to kivy events
     4) introduction to kivy graphics
     5) compiling kivy apps for mobile and desktop