Linux

The implications of LightWorks coming to Linux

The LightWorks video editor is coming to Linux. How was this made possible and what are the far-reaching implications for the flagship open source platform? Jack Wallen ruminates.

For those that do any sort of video editing, you've probably heard of LightWorks. LightWorks has been the editing software of choice for films such as 28 Days Later, Hugo, The King's Speech, Pulp Fiction, and tons more. There's a reason why -- LightWorks was designed by editors, for editors.

But pimping this software title isn't what this article is about. What I wanted to highlight was how the developers have been working to bring this software title to the open source flagship platform.

As it stands, the Windows version of LightWorks contains over a million lines of code. Although that might seem like quite a lot, other pro-level video editing software can contain over twenty million lines. The reason for such "light" code? Keep it efficient.

In the porting of LightWorks to Linux, what became crucial to the success of the project was to not have to rewrite all of the Windows code. That code was already solid and rewriting it didn't make sense. Instead, the developers did something that all software companies should pay close attention to.

They moved the vast majority of the code to an OS-independent layer, which had an OS-independent interface. In fact 97% of the codebase for LightWorks is now OS-independent. That means a mere 3% of the code base had to be rewritten to enable the software to work with Linux (and Mac). Granted, part of that 3% required the translation of code that used Direct3D and had to be crafted to use OpenGL instead.

Once the OS-independent layer was created, the Lightworks code existed in two layers:
  • The OS independent layer (e.g., editing, play-engine, etc.)
  • OS dependent layer that uses the OS dependent layer (e.g., file access, threading, etc.)
The crucial aspect of this whole project is the fact that software can be made OS-independent enough such that the porting is not only possible, it makes sense. Who should be listening to this?
  • Intuit
  • Adobe
  • Microsoft

And so many more companies.

We've all read the doomed predictions of Windows 8. With this in mind, how can software companies not be thinking that moving toward an OS-independent code base is the only solution. The implications of this are fairly wide-spread. This could mean more enterprise/business-level applications coming to Linux, Mac, and even tablets. This also nullifies companies (like Adobe and Intuit) claiming the move to Linux isn't cost-effective or logical. Now, it is both. Why? Linux and tablets are both gaining serious steam and, if Windows 8 is any indication as to where Microsoft is heading, these two platforms will continue to gain ground.

Why would software companies not want to follow the example shown by LightWorks to ensure their product is available for as many platforms as possible?

As has been shown by Canonical (the founders/funders) of Ubuntu Linux -- Linux users are in fact willing to pay for software. If Intuit and Adobe brought their products to Linux, users would buy. And now that it has been shown possible, these companies should, in fact, follow suit.

The product is not yet ready for public consumption. The developers have said they hope to have LightWorks compiled for Linux some time before year's end. The developers have indicated that, once complete, users will not be able to tell the difference between the Linux and the Windows version of the software.

That's impressive... and should be inspiring.

Intuit, Adobe... are you listening?

It seems to me, the future of computing will depend upon OS-independent software. Those old-guard companies that refuse to open their eyes to this possibility might wind up with a serious up-hill battle on their hands.

What do you think? Is this the future of software? Will we see more companies creating OS-independent layers for their products? If you are a developer -- does this make sense for your project?

About

Jack Wallen is an award-winning writer for TechRepublic and Linux.com. He’s an avid promoter of open source and the voice of The Android Expert. For more news about Jack Wallen, visit his website getjackd.net.

11 comments
stefanlnt
stefanlnt

Windows is a resource eater and it's very slow. I'm using Ubuntu 12.04 and it's impressive what you can do with a four years old computer. Having an efficient hardware usage, I'm also willing to pay and concentrate my finances on buying the application that helps me professionally. After all, I invest and I make money by using it. By using Ubuntu this makes it possible because the Os, office suite , cd/dvd burning application .etc are all free.

RogueThinker
RogueThinker

Seems to me that big names of recent history Visicalc and Lotus 123, WordPerfect come to mind as examples of ignoring changes in OS - Where are they today?

eldergabriel
eldergabriel

As @just.a.guy rightly points out, and your article touches on, proper coding which leverages abstraction, inheritance and polymorphism in OOP software architecture designs makes it quite easy to target multiple OS platforms for a software end-product. Along those lines, it's also important to mention that a developer's choice of language and framework plays a large part in determining to what extent an application is "cross-platform friendly". This is a decision that can and should be made before any code is written, and can eliminate virtually all anticipated cross-platform design overhead if approached properly. It kind of comes down to native / compiled code vs. interpreted / bytecode languages. It's my opinion that, in practice, the top language & framework candidates for creating cross-platform "traditional" gui desktop programs are java, python, and c#(.net/mono). One can make the argument that there are certain types of graphics and process-intensive programs that do not lend themselves well to this approach for performance reasons, whereby native / lower-level approaches (c, c++) become more necessary. But as the various frameworks have matured, they've become much more efficient and hardware has also become much faster. So, while a quake-like graphics rendering engine has better benchmarks written in native/compiled code, there is still a vast array of programs and types of applications geared toward other types of tasks, where there would be virtually no performance hit whatsoever. Think about it a moment: if, for example, the quickbooks codebase was written in java, it's doubtful that your average end-user would have even noticed, as the gui could / would be identical. (Admittedly, not a perfect example, because quickbooks may actually pre-date java; I don't recall offhand. Even so, if this is not the case, java was not very mature back during its inception. But you get the point.) Users generally don't care if a program was written in VB.net or IronPython; they only care if it's easy to use, has a good gui, and works reliably and appropriately for the task which they are trying to accomplish. FWIW, almost all the code I have ever written was done so in a cross-platform way, and it required no additional effort on my part. It's a little frustrating, and quite puzzling as to why more / other software engineers don't do this as well.

billyg
billyg

Lightworks may well act as a linchpin. Their success can cause others to follow. This will be good, especially for the software industry. The design discipline this requires will make a healthy competitive market with better software. ...or not... yet. Opposing parties may dig in for a while longer. Eventually, an open model like this will prevail. The industry is being shaken to its roots. It's just a matter of time...

markc4321
markc4321

I am an Ubuntu user. I am also an Intuit user who is still using an '08 product because it is the last one that plays well under Wine (as far as I've heard). I would gladly buy the latest version if it was Linux compatible either natively or under Wine.

tyhods
tyhods

As the base of user of linux increases, it would seem a wise move of proactive companies to try and reach out to the user base. Many users who would like to switch to linux are faced with having to find suitable replacements for the applications they currently need. Therefore if companies move to the OS-independent approach of developing products then they will have a larger target of potential customers.

Jaqui
Jaqui

but then, they never do. as far as I am concerned, if they CANNOT be bothered to have their products run natively on ALL operating systems, they are telling me thier products are NOT WORTH using.

just.a.guy
just.a.guy

I have been using a technique to do that for the past 2 years. It is simpler in an OOP environment. In my master object, I create a new "communications" object that interfaces with the OS environment. I pass this object to each new object that I create. Within each object I have a set of "stub" routines that map to the routines found in the communications object. In this way all calls within a object are a call to one of the "stub" routines. The stub routine passes the call to the OS communication object which actually performs the OS interface request. In this way to change the OS environment, all I have to do is code and test a new version of the communications object/class. It is a bit of rethinking when you are coding to reference the local stub function rather than the direct OS environment function. But once you get use to it, it's just as easy. I also find it has an advantage that I can use a standard name for a function that changes across different languages. In this way I don't have to remember the function is called "len" or "length" of "size". I don't have to remember if there are differences in the arguments order, etc. I hide all of those differences in the OS environment's communication object.

pgit
pgit

I have just about begged a couple of vendors to port their proprietary apps to Linux. I even offered to pay for the developer's time in one instance, but I didn't even get the courtesy of a reply from either vendor. They obviously see no value in supporting Linux. I think that is a near sighted position, if people could be offered an operating system that comes with no licensing costs they'd jump on it in a heartbeat. I'm guessing Microsoft has told vendors that they'll pay if they dare to port to Linux.

Brainstorms
Brainstorms

You need CrossOver... It's "Fine Wine", i.e., Wine polished into an effective tool, complete with a GUI manager, DLL wizard, automated installers, and support. CrossOver 11 officially supports Quicken 2009, 2010, 2011, and 2012; also QuickBooks 2003, 2001 Pro, 2002 Pro, and 2004 Pro. (I.e., they have an installer + company support; other versions may work just as well, but e.g., sans automated installation.) You may find that you can "move up" to a more recent version by upgrading Wine to CrossOver. (Just the fact that it supports keeping each Windows app in its own "Wine Bottle" so that they can't clobber each other is worth it.) I run MS Office on Ubuntu from a CrossOver Wine Bottle. Works very well...

Editor's Picks