Yuvi Panda

JupyterHub | MyBinder | Kubernetes | Open Culture

Cheese 2.31.1 Released

If you had read my Cheese GSoC proposal, it would’ve stressed on one major point – make Cheese sexy.

Two days ago, one of my classmates spent 5 minutes on the bus using Cheese and trying out different effects (and poses!). Today, my brother spent 20 minutes trying to get the perfect combination of style and vagueness for his Facebook profile picture – using Cheese. He then asked me to create an account for him in Ubuntu (he was an exclusively Win7 user till then) before leaving.

I’m still not where I want to be (the girls haven’t gone gaga over it…yet!), but I know very well that I am on the right path.

And a major milestone in that path is the release of Cheese 2.31.1. The ‘release’ means that the code is now stable enough to be actually shown off. The major features (rewrite in Vala, use Clutter, user defined Effects and most importantly, Live Previews) are in working condition. We are no longer walking through a minefield of segfaults. You can build it and show it off. When something breaks and you tell us, we’ll most probably not reply with ‘yeah, we know that. We’ll fix it when we get to it’. The road to Cheese 3.0 has begun.

So, what’s all in this release?

  1. Rewrite of the UI code. We removed the entire old src/ folder, and rewrote everything from scratch. Using Vala. Why? Because ~7000 lines of C code is now ~1500 lines of Vala code. And the Vala code has more features (Live preview, for one!). The Vala compiler is pretty mature – only one ‘real’ bug so far (rest have been mostly binding bugs, fixed with single line of code changes). And #vala has been incredibly helpful too! And we are re-using most of the ‘backend’ code (Camera detection, pipeline linking, etc) – it is still in C, and writing Vala bindings was incredibly simple.

  2. Move from Gtk to Clutter for display. Means I can do stuff like overlay semi-transparent text on top of the effects. Or have animated page transitions. Or (in the future), use OpenGL effects without having to do an extra to-fro copy from memory. Have drop shadows for everything. Make the effects tilt and rotate around when hovered over. Etc, etc, etc. Clutter is the major contributor to the ‘sexy’ part.

  3. User created effects. Effects are no longer hardcoded. A simple 4 line text file and enthusiasm for reading documentation is all that is required to create your own effect. The effects are based on GStreamer, and are very flexible – you can create something as simple as monochrome + hue, or something as complex as face detection + extra limb addition to specific people :P

  4. Live Streaming – biggie. All effects are arranged in grids of 3×3 in multiple pages that you can swipe through. Simply clicking one will activate it pretty much instantaneously. No more ‘select effect, apply, no-it-sucks, let’s go back and do it again’ games :)

I made a quick screencast to show the new Live preview stuff to those of you too lazy to actually get the source and compile. And the subject is a pink+green teddy bear sitting on my white netbook. (And the weird stuff that turns up after I exit fullscreen is a bug in RecordMyDesktop – and is an incentive for you to actually get the source and check it out :P)

These are the four major features that are new. All the other parts of previous Cheese UI have also been implemented (preferences, thumbnail viewer, fullscreen, wide mode, device detection, etc.)

As for the next release – keep looking out for it, it will land soon! It will primarily be a bug fix and code cleanup release – fixing crashes, UI inconsistencies and making sure everything works as intended.

A lot of late night hackery (mostly because my college takes up 10 hours of ‘regular’ time) has gone into this release – so check it out here and tell us what you think. Especially about the parts that suck. Especially useful would be if you can get someone non-technical to sit in front of Cheese, observe where all they fail (and succeed) and then report your observations back to us.