Saturday, September 27, 2008

Saya-VE 2nd dev meeting (26/Sep/2008) Summary

This is a brief summary about what has been discussed in the second
Saya-VE developers meeting.

About the Team:

* Nopalin wrote me an e-mail explaining some tragic circumstances that made it impossible for him to continue on the project.
* b3rx hasn't reported back after several warnings, so he's been fired automatically. I've removed him from the website page because he never contributed with any code.
* From now on, new members will have to contribute only via patches. On the meeting after a month of activity, we'll decide whether to add them officially to the team or not.
* One person has contacted me via the blog, but I haven't received any e-mail. Let's see what happens.
* So this means the only active developers are me (Rick), Rigobertoc and Javier. And since Javier hasn't reported yet, in the worst case it's only Rigobertoc and me. Recruitment is encouraged.

About the tasks:

* The timeline assigned to Javier Galicia hasn't been completed yet. For some mysterious reason he was unable to attend the meeting, too.
* The threads module has been completed, and Rigo has worked on the Unit test for that. The multithread unit test is a critical task to continue working on the core.
* The data structures for the timeline have been completely rewritten to allow (de)serialization. But deserialization hasn't been worked on.
* The playback visual controls are stalled due to the work on the threads unit test. They've been given a lower priority.

About the website, and Public Relations:

* We have a new blog: This blog is mainly for unofficial developer documentation and to share stuff we've learned during development - like programming patterns, new algorithms, etc.
* Our project has become an official member for the Open Source Video Editing Foundation. However, no activity or other formalization has been done. Personally (and this is a conjecture), I don't think we'll see any changes in the near future. Let's hope I'm wrong.
* All team members are to e-mail me a public profile so I can post it on the website.
* Sourceforge has changed its web access method. More info can be found at

About future plans:

* Once the core has been finished, work will focus on gstreamer integration and the playback controls. Once we get the playback, shuttle/jog and scrubbing controls working, the project will be published on and the first binary will be released on Sourceforge. From that, planning stage will be closed and we will enter "pre-alpha". Things will be smoother from then.

About the next meeting:

Though it hasn't been formalized (nor discussed during the meeting), it is expected for all meetings to take place on the last friday of the month. However, the last friday of October is 31, and it's probable that the various team members will be invited to a party due to the american tradition of Halloween. For that reason, the next meeting will be held on Friday, October 24.

Saturday, September 20, 2008

C++ Programmer Wanted

As usual, we're accepting C++ developers who want to cooperate with the Saya Video Editor project.

The requirements are simple: Being committed and accepting Open Source as a philosophy, having internet at home, have at least 4 hours to develop per week, and of course, a good knowledge and practice of C++. Multithread programming knowledge is a big plus.


Friday, September 12, 2008

Website to be down on Sept. 15th and/or 16th.

I just received an announcement from Sourceforge informing me about an upcoming migration of the data centers on September 15th and 16h. Expect some website failures during that period.

Thank you for your understanding.

Tuesday, September 9, 2008

New "Progress Status" page uploaded.

Here it is. The page that will tell you how far we've been progressing on Saya.

It's categorized in sections, and each section is divided in items.

Sunday, September 7, 2008

"Open Source Video Editing Foundation" created!

A guy from a group dedicated to video editing asked me to join him and get to talk with the authors of other video editing software.

I was reluctant at first - why bother people with other video editors much more advanced than Saya? But He insisted, forwarding his mails to the other people, who joined the conversation. Through a series of e-mails with a bunch of people in the CC: headers, we (I don't even remember who were the other people, this happened too fast) have talked about licensing issues, the (now rejected) idea of forming a spec, having a "core library" common to new video editors (I hope Saya's gets chosen ;-) ), alternative OS's like Haiku (an open source BeOS), Freebsd, stuff about politics, about having talks with Stallman's FSF, and whatnot.

After around 15 e-mail replies, the Google group has been founded. So this thing is getting momentum. We've all agreed that minority platforms (with Linux being the greatest) need a working Open Source Video Editor, and we've informally agreed to share source and tech reports.

Here's the URL.

There is a website under construction, whose domain is yet to be announced.

Now, I really don't know how this started. It was pretty spontaneous. But there are various Open Source developers in the group, including but not limited to Traverso, Atheme, etc. (maybe it's time to invite the Lumiera guys).

But I guarantee you, this thing is 100% organic grassroot. I was expecting Saya to get attention from f/oss developers, but not THIS soon! In any case, this gives me more incentives to keep working on Saya.

This is getting interesting.... VERY interesting B-)

Wednesday, September 3, 2008

Unofficial dev blog created!

As I keep learning new programming techniques and algorihtms, I decided I couldn't just keep them to myself. The world needs to know.

But that doesn't belong to the project, so I decided I would create a new blog:

"Saya Video Editor unofficial dev blog"

It's available at

This way I can post somewhere else the technical stuff I do about Saya (or about any other thing for that matter), and keep this blog for Press, Media Attention and Public Relations, among other synonyms.

Tuesday, September 2, 2008

Threads module almost completed!

It was like a rollercoaster ride. At first I thought it would be much easier, like "Ok just do your stuff on the wrappers and built a bit more wrappers around pthreads and windows functions. How hard can it be?"

Oh, boy. As I was examining the wxWidgets code that I modelled the classes after (turns out I ended up copying a lot of it - don't worry, all copyright notices are left intact), I realized that Windows XP doesn't implement condition variables (but Vista does - who'd tell?).


Ok, to get you in perspective: There are three basic kinds of thread organization objects: Mutexes, Semaphores, and Conditions.

----------- begin boring explanation -----------
A mutex is an object that can be locked by ONLY one thread. The locking of a mutex is called an "atomic operation", it means that you won't be interrupted by another thread while you're doing your stuff. And as long as the mutex is locked, you're safe.

(There is an equivalent of mutexes for threads of only one process, they're called critical sections. Instead of locking / unlocking, you enter and leave them. But they're practically the same.)

A semaphore is like a racing semaphore: One process is the car that "waits" for the semaphore to turn green, another process is the guy in charge of the semaphore. The interesting thing is that ANY process can set the semaphore to green, and this is where things get interesting.

A "condition" is kinda the opposite of a semaphore: Instead of many guys signaling one car, it's one guy signaling ONE or MANY cars. You can signal all (it's called a broadcast), or only one. But a condition requires a mutex for organization, it's kinda complicated. But it lets you send signals to a thread when you want to tell it to do something (if it's not busy already).
----------- end boring explanation -----------
Anyway, here's the trick: Conditions aren't implemented in windows, so you have to implement them using Semaphores and Mutexes (which are implemented).
But in Posix, you don't have semaphores, so you have to implement them using conditions and mutexes.

So here I was, copying code and organizing it. Then I realized that the most difficult part was the mess of creating a thread. It's not just a single call, you needto set up parameters, implement error handling functions ,etc. etc.

And I realized that the posix implementation of threads in wxWidgets was much cleaner than the windows one. So I reorganized it and spared some windows-specific "optimizations" (they're actually more like shortcuts, for example, in Windows you can start a thread in dormant state, but in posix you need to use a semaphore to make it sleep). So by doing that the code looked much cleaner.

I still need to implement/copy/adapt the code for killing a thread, and the code to delete all threads on program shutdown. It's easier now that I've implemented/copied/adapted nearly everything.

When I do my first thread experiment, it'll be quite fun. I spent many nights this week trying to finish this.

The bad news, is that as things look, it's probable we won't have a workable video editor by the end of this year (I began in May, and it's September already? Aw crap). It might take another 6 months or more. But at least I know that I'm much more advanced than I was when I started the project.

But let me tell you. When I get the core finished, things will start to get REALLY interesting. I'll keep you updated.