Epic OpenShot 2.0 Update! (Part 1 of 3)
Greetings OpenShot Backers! I hope everyone had a great holiday season and a happy new year! This is the first of three updates over the next couple days! So, be sure to check back often and keep up with all our new developments.
Before I go any further, I first want to address the current schedule. My original plan was to release a beta around Christmas time and a final release mid-January, but unfortunately things were not quite ready. The last thing I wanted to do was to release an unfinished, broken version for everyone to try out. So, I made the hard decision to delay the testing releases to be sure things are ready on all 3 platforms. The work required to bring OpenShot fully cross-platform has been very challenging, but the show-stopping bugs are being knocked out, one by one, and there is a ton of progress to report, so please read on!
Over the past couple months, I've expanded the OpenShot team to include Cody Parker and Noah Figg, who have been a tremendous help! In fact, the word tremendous does not do them justice... just know they have been a key part of the team to make OpenShot 2.0 a reality. They have completed dozens and dozens of tasks, and worked closely with me to bring all the different pieces together. Noah has focused on the Qt interface, improving the core PyQt framework to simplify our coding, solving complicated issues (such as cross-platform icon systems, translation system, undo / redo system, Qt integration with HTML timeline, and more). Cody has focused on the HTML timeline, JQuery integration, Qt integration, as well as leveraging the amazing Angular.js framework (used to bind our interface elements to our JSON data structure).
Bringing It All Together
We have been building OpenShot 2.0 in three different modules: libopenshot (the library which does most of the hard stuff), Qt interface (the user-interface which contains the buttons, sliders, labels, tabs, etc...), and the HTML Timeline (which is where you arrange your clips and effects). Most of the functionality in OpenShot 2.0 has now been programmed, but these independent modules are now being brought together, tested, debugged, and packaged (i.e. creating installers).
Windows Development =(
Many years ago, I used to develop software almost 100% with Microsoft's development tools (i.e. Visual Studio). So, I'm very comfortable within this operating system and development environment, or so I thought. Although, while I'm no longer using Visual Studio for OpenShot 2.0 (I'm using MinGW for those who are interested), I have been fighting Windows bugs for most of December, and wow, I've seen the dark side of Windows development with regards to working outside Microsoft's preferred tool set. The good news is, I've conquered most of these crazy bugs (many caused by subtle changes in Windows support for C++, and linking issues with Windows DLLs). I have one final bug on Windows that still has me stumped, related to a heap corruption caused by msvcrt.dll. So... if any developer out there want so to help me troubleshoot this issue on Windows, I would be most appreciative! I know... I can already hear the crickets chirping. =)
Of course, Mac and Linux support has been super easy, and simply a pleasure to work in those development environment. In fact, my build instructions document contains about 3 pages for Mac, 2 pages for Linux, and 12 pages for Windows... if that gives you an idea of how difficult Windows is to develop in.
Qt4, Qt5, GTK, PyQt, and Python3
Okay, that is a lot of acronyms, so let me explain. Over the coarse of the Kickstarter campaign, you may recall that I mentioned OpenShot 2.0 would be switching to Qt (used to draw our interface to the screen), instead of porting our GTK (our existing interface) code base. Well, we started work using Qt4 initially, which is widely distributed on Mac and Linux and generally easy to work with. However, we later discovered that Python3 requires Qt5 (and not Qt4). So, we made a decision to move to Qt5, PyQt5, and Python3.
Still makes no sense? Well, basically we are now using the latest version of Qt (for our interface), PyQt5 (a program to help us control Qt5 from Python), and Python3 (the latest version of Python... which is a programming language used by OpenShot). Unfortunately, this process of fine tuning our software stack slowed us down in October / November, but we now have this stack working great on Windows, Mac, and Linux. This stack represents the future of these frameworks and languages, and positions OpenShot in a good place for the future.
Want More Updates?!?
I hear you loud and clear! Stay tuned for part 2 of this update... scheduled for tomorrow (Saturday) evening! And part 3, scheduled for Sunday evening. And as I always like to reiterate, thank you so much for your support and patience!!! OpenShot 2.0 is not an easy application to build. Video editors are complex in many different ways. This Kickstarter represents important investments into many different and unique frameworks, such as libopenshot, and will pave the way for many wonderful open-source video editing platforms in the future.