Tuesday, May 13, 2008

Why I decided to create the Saya Video Editor

Good morning! This is the first post in my Saya Video Editor Blog.

So, what is Saya? Saya is a project that aims to become a professional cross-platform Non Linear Video Editor. By cross-platform I mean that it'll work in Windows, Linux and even MacOS.

Perhaps you're here wondering "Why reinvent the wheel?" "Aren't you doing more software fragmentation?" and "Do you really think you can do this on your own?"

Well, I'll answer these questions one by one.

Q: Why reinvent the wheel?

A: I'm *NOT* reinventing the wheel. It's the *OTHER* guys who are reinventing the wheel. And yet, nobody has done it in a successful, cross-platform way.

Allow me to explain further. Here are some features that the other Linux video editors are missing:

1. Cross-platform compatibility (and by that I mean Windows!)

As you can see, the Linux video editors are made for Linux, and Linux ONLY. While it's good to support a Free (as in Freedom) Operating System, it's not that good to leave the Windows people in the darkness. What would happen if OpenOffice.org was Linux only? What would happen if Firefox only ran on FreeBSD.

Installing a lot of extra software in Windows to be able to run the binary you downloaded is *NOT* acceptable.

Do you really think the average Windows user will agree to install and mess around with a virtual machine (and Linux inside it, which already includes a lot of headaches), or cygwin JUST to run (or try to run) a Video Editor?

None of the Video Editors I tested (all of the free ones except zs4, which I was unable to find) were able to run in Microsoft Windows (TM).

How I'll succeed: With the wxWidgets library.
This is why I chose to use the wxWidgets library, which makes portability SIMPLE. And I'm following a successful editor (Audacity) which was done in C++ and wxWidgets.

2. Ease of installation in Windows (and that means absolutely NO python, and much less wxPython!)

The last time I tried to run a wxPython application I downloaded the wrong version (how is an end-user supposed to know?) and the program crashed. Wanna know how I felt?

Another complaint I have is that a lot of video editors depend on an interpreted language. Hello, I want a NATIVE application. If you want to use Python, please use a Python COMPILER. Thank you. I don't want to download an app and realizing it doesn't run after I decided to run it from the command line to see the Python error messages. Ugh.

How I'll succeed: By writing the program 100% in C++.
No interpreted language nightmares, no Python, no Ruby, No .NET / MONO, just plain and simple C++. With the use of STL, it's nearly a child's play to easily-write good programs. And with wxWidgets, make that double. Windows users can easily download an already-compiled binary (.exe - or even an installer), and the program will run. Was that so hard?

An advantage of writing the program in C++ and make it install / compile easily in Windows will be a greater project exposure. I can choose to limit myself to the still-small Linux community, or I can embrace (without extending and extinguishing ;-) ) a much wider audience: Windows users. As a matter of fact, I was a Windows user myself, and I was frustrated at the lack of Free (and uncrippled) Video Editors for Windows. I would have joined a project if there was one - and trust me, I've been waiting for one for more than five years. I trust that there are other Windows users like me, that are expecting such a project to be born so they can join and participate in the writing.

3. Ease of installation in Linux

I like short projects, or projects that come with their own libraries, even if redundant. While it's OK not to bundle very large libraries like wxWidgets, it's *NOT* OK to ask for a dependency of an obscure video-processing library that also has dependencies on obscure math libraries that also have dependencies ad infinitum. What am I supposed to do if my distro isn't Ubuntu with their millionaire repository? I'm not asking for sharks with frickin' laser beams on their heads, I'm just asking to bundle the rare libraries so I don't need to download more stuff before doing the ./configure - make - make install ritual.

I really don't know what's the deal with some Linux packages, but I had this experience with Kdenlive, where the release they used was buggy and I couldn't export the AMV I was making. It had timing problems. Sheesh. So, I tried to compile it on my own and I was smacked on the face with another dependency hell.

How I'll succeed: I'll bundle the used libraries.
XML libraries, multimedia libraries, they'll be included in the source tree. And it's perfectly legal since they're OPEN SOURCE. Ease of installation also means increased exposure to Linux audience - those people who know how to program but run in a wide variety of Linux distributions.

4. Intuitive User Interface

Let me say this straight: It is my personal opinion (no offense intended) that some editors like Cinelerra, simply have a hideous UI. In other words, it sucks. (personal opinion), and the decision of some developers to make a new program from scratch instead of just forking, confirms this (unfortunately, they'll make it for Linux ONLY. Why oh, why do they leave Windows users in limbo?). Cinelerra used a custom-made User Interface, which means that whenever I try to open or import a file, I'll experience a lot of bugs - an annoying one is that I can't easily change folders because it keeps appending that darn slash at the end, and I can't remove it!

Then it's another maze to get to import a file. First, you can't import Divx files that you downloaded from the internet. Oh no, you first have to use some obscure tool to convert it to DV or M-JPEG format before you import it. More downloading of stuff. (And don't even get me started on crashes and hangs, but that's another matter).

Another video editor I had tried was Jahshaka. Let me tell you that if something is counter-intuitive, Jahshaka is. They provide little or no help, no documentation, no tooltips, no right-click context menus, no nothing. You had to memorize some cryptic key shortcuts and whatnot. I wiped it a couple of hours after installing the thing.

Come on guys, is that really hard to make an easy-to-use menu?

How I'll succeed: I'll copy what works.

I'll adopt existing user interfaces (i.e. menus, dialogs, widgets) from commercial projects like Adobe Premiere or Final Cut Pro. And don't worry about Trade Secrets - I'm not reverse engineering anything. This is why I'm creating the interface based only on existing documentation (i.e. books) and publicly available information (wikis, screenshots found on the web, tutorial videos, etc).

Q: Aren't you doing more software fragmentation?

A: No. I'm filling an unused niche (for the reasons explained above).

Q: Do you really think you can do this on your own?

A: No. This is why I'm making the webpage, posting the project on berlios (I'd choose sourceforge, but I've had good experiences with Berlios, specifically in the Code::Blocks IDE project (in which I participated, BTW :) )

Q: OK, you convinced me. How can I help you?

Since I'm doing this from scratch, I need users of commercial video editors to share their experiences and ask for features. It doesn't matter if you don't have the software right now, you can use MS-paint, right? Or you can record some screencasts (or flash animations, whatever) of your favorite video editors (even from memory, even if the drawings suck) , i.e. "this is how you do 3-point editing" (that one would help a lot, btw), or "I like how this tool makes an icon for you" and all that. I'm not an expert in making videos, I didn't take a $1,200 dlls. course on -nameyoursoftwarehere-, so this is why i need help.

If you're a Cinelerra or Kino or whatever - user, you can also record your screen casts or take snapshots and say "I want this feature!". I'll add it as soon as I can.

If you're a C++ programmer with wxWidgets experience, YOU'RE MORE THAN WELCOME to join the project.

So, please help me with Suggestions, feedback, and to paraphrase Neo:

"Screenshots. Lots of screenshots."

1 comment:

rick_777 said...


Great minds think alike? :)