Nov 5, 2012

About Webcamoid and the transition to Carnival-LiveCam

As (may be) you know, I have two main projects: Carnival-LiveCam and Webcamoid, both are brother projects, both focussed on filling the gap of a good Free open source webcam software.

This should be Webcamoid 4.0.0

Webcamoid fills the gap of a native webcam software for KDE, while Carnival-LiveCam is a more ambitious project, aimed for provide a very advanced live streams manipulation framwork.

The core of Webcamoid and Carnival-LiveCam are completly different, the first is based on PyQt and GStreamer with a fixed pipeline system, the second is based on C++/Qt and uses it's own pipeline system written from scratch, with a very modular design thanks to Qt plugins system.

paradoxically, Webcamoid and Carnival-LiveCam shares the same ancestor, oh yes, Carnival-LiveCam was originally written en Python and had most of the current features that Webcamoid has right now, but without the effects, with a very similar GUI design.

I have suddenly switched to C++, due to the lack of a good 3D engine for Python.

Webcamoid born 3 months after the public announce un Carnival-LiveCam, thanks to the blogger of Blue Leaf Linux, taking the code of my old experiments and rewriting it as a plasmoid.

With Carnival-LiveCam, I decided to mantain a very low feedback with the users, but not with developers, since I don't like to release unfinished and very buggy software. But with Webcamoid the history was completly different, receiving very hi feedback from beginning (thanks so much), and because it is a small proyect, was relatively easy to add new features and fixing many bugs.

Also after the first public announce of Carnival-LiveCam, I have been working very hard rewriting the core of it, taking many concepts learned from GStreamer, but with a design based on the Qt Signals & Slots concept. Recently, I have ported Carnival-LiveCam to Qt5, it will not compile with Qt4 any more.

Furthermore, there is still need to rewrite two modules before a new release of Carnival-LiveCam and to be fully functional again.

The development status of Webcamoid reached to a point in which is impossible to continue using Python for it, due to a very critical bug of PyGTK and the Python GIL in programs that made's a heavy usage of threads,  this bug causes random segfaults when using Webcamoid as plasmoid, oddly, this bug doesn't affects the stand alone mode at all.

Webcamoid 4.0.0 and the segfault bug

I spent many hours trying to fix this bug, and I can guarantee that is impossible to fix it from inside the Python code.

I decided to use the PyGTK/PyGST modules instead of gst-launch, as in previous releases, because the excesive resources consumption, and the big delay or total hangups when setting and previewing the effects.

This bug prevents me to release the 4.0.0 version of Webcamoid.

Since I can't fix this bug under Python, then I decided to rewrite Webcamoid in C++. I think that this port will no take more than 1 or 2 months.

I know, this solution has some cons, for example, the new Webcamoid will not be just install and run as in the previous versions, and I will not able to provide a custom package for each combination of Package System/Architecture/Distro/Version, before you give me a suggestion, no, I will not install 10, 5, and not even 2 distributions in my computer, and no, my computer doesn't supports virtualization, and no I will not spend many hours of my life making a package for every exotic distro without a very good money feedback.

Then I'm asking to all software packagers from all major distributions, at least Ubuntu, Debian, Arch, Chakra, Fedora, OpenSUSE, Mandriva, Gentoo and Slackware, to provide and support Webcamoid for your distribution.

I will try to make the installation of Webcamoid as easy as possible.

After the port, I'm planning at least 1 or 2 major releases more, and then merge the code of Webcamoid into Carnival-LiveCam an make from both a unique big project.

This is how Carnival-LiveCam looks

What do you think about this decision, do you accept this big change in Webcamoid (port to C++) if this means that in the future (not so near) you will have a more advanced software, or you prefer to stay with the Python version, easy to install, but with less features?

Answer the the poll in the sidebar, and, if you want, leave me a comment about this decision.

No comments:

Post a Comment