My first experience with Kivy

Actual for Kivy 1.7.2

All the checks I made were performed on Samsung Galaxy S II


  1. Pure python and its almightiness is in your hand. No need to learn new language (I'm pretty lazy I should say) and no strict typization. I'm on the dark side of the force, so I think I'll never switch back voluntarily to java for instance.
  2. You can get help very fast on IRC channel (tested personally).
  3. Relatively simple to deploy with buildozer without any need to dive too deep into the details of particular platform.
  4. You can run your app on desktop also, so there is no need to install some extra emulators/VMs to get it work.


  1. Even if you use the presplash screen, you can see ugly start screen for half a second. You also can use png or jpg files only, so you can't animate on start of your application.
  2. Pretty messy documentation :( But I think I'm just too spoiled by Django.
  3. Not that much information in Internet, even on stackoverflow (it's surely connected to the fact, that kivy is quite young but sexy piece of software).
  4. Not obvious machanisms of placing widgets, especially in built in layouts, which causes situations like: you want place widget in the center of it's parent, but kivy places it anywhere but not where you want it to be.
  5. Official examples are quite ugly, so you may get false vision of how your application could look like. Here are some screenshots of my first app KOGNITIVO
  6. No obvious way to test the application (unittesting is not enough, I'd like to make behavioural auto testing somehow).
  7. My applicaton, although it's not that big, but takes over 40 MB RAM already, and i think it's not the limit. Be prepared, that the app is really greedy in this concept.
  8. Compressed images look really pixelized, so be prepared to maintain all possible pixel densities by yourself. UPDATE reddit user inclemnet offered to use mipmapping/POTs (textures sized as powers of 2), which should make the result better.
  9. Kivy doesn't have some small sweet manage stuff, which for example django has. So some every day operations should be implemented separately (creating atlases, deploying etc.). UPDATE Juan-Pablo Scaletti offered to use backer cool stuff!
  10. Kivy also does not have any philosophy for working with data storages, so if you use for instance [sqlalchemy] you'll need to create your own, which can cause some additional costs for someone, who wants to understand what have you actually typed there.
  11. And the last thing: Button widget is really bad, as much you are going to use it almost everywhere.
  12. No fancy swipes. Built-in Carousel widget is just a piece of pain.


It seems like I wouldn't like kivy, but it's not true.

Since I started to work with it, I had not more problems, as at my first days with Django. Also it's killer tool for prototyping, if you want just try out some concept and don't want to pay lots of money for creating an app for some particular platrform with java or objective c, which normally needs three times more for developing as in python. Ave startups!

So, if you ask me, I love it!

comments powered by Disqus