The Linux engine...

Richard Gaskin ambassador at fourthworld.com
Thu Feb 23 09:47:18 EST 2012


Malte Brill wrote:

> Thanks for the feedback so far guys.
...
> I miss Richard a little. He became some sort of a power Linux LC user recently, didn't he? Richard?

I'm here.  I was busy yesterday but flagged your post as one I 
definitely want to respond to, so here goes:

The state of the LiveCode engine on Linux is improved, but not yet on 
par with the performance, robustness, or features available for other 
desktop flavors.

Here are some things you'll notice about using LiveCode on Linux:


- Redraw speed
As Andre noted, under-the-hood operations like parsing text, math, etc. 
seem to perform on par with other platforms, but many things, esp. long 
blocks of text in fields, take noticeably longer to render.


- Menu behavior: opening appearance
Mac is the only platform where menus are implemented as native OS 
objects.  On Win and Linux, menus are implemented as dynamically-created 
stacks, with the engine doing the work we used to have to do in the 
early MetaCard days with creating buttons on stacks for menus.

In most cases this isn't a problem, but if you use any of the dynamic 
window effects settable in Compiz Config that add effects for opening 
windows, you'll see that LiveCode menus open with the same behavior.

I've seen at least one other app that has popup menus which behave this 
way, so LiveCode isn't alone.  But it adds more fuel to the fire for the 
many requests on this list for a re-think on how menus happen in LC.


- Menu behavior: global menu bar (Ubuntu only)
Ubuntu 11.04 introduced the new Unity UI, and with it came a global menu 
bar similar to that on Mac OS.

Menus created using standard routines in Qt or GDK are automatically 
rendered in the global menu bar, but since LC menus are non-standard 
your apps will retain the older appearance, displayed at the top of the 
window.

I've seen a fair number of apps that apparently use their own custom 
menu systems, so on this one LiveCode is definitely not alone, but 
hopefully this can be addressed as part of a menu re-think that could 
benefit Windows as well.


- Video playback
First, as of v4.6.4 (this may have changed with v5.x, I haven't 
checked), the engine's videoClipPlayer default specifies a player that 
hasn't shipped with any major distro in some years (XAnim).  This can be 
set to mplayer or mplayer2, but I've had no luck trying to use VLC 
(anyone else here used that successfully?).

But moreover, videos that play fine in other systems will often render 
with an odd translucence, apparently using black as an alpha channel so 
darker areas become transparent.

Ben tells me the team is aware of both of these issues, and is actively 
working on the transparency for a future release ASAP.


- windowBoundingRect has no effect
Setting the windowBoundingRect on Linux has no effect, which means that 
maximizing a window while you have a toolbar present (such as the one in 
the LC IDE) will cause the window's drag bar to submarine under the toolbar.

With Unity's global menu bar in Ubuntu 11.04 and later this is less of 
an issue, since the window controls for maximized windows are rendered 
in the top panel.  But on all other distros, or even with Ubuntu using 
Gnome Shell or any desktop environment other than Unity, this makes it 
very difficult to manage multi-window layouts.

I've discussed this with one of the Ubuntu engineers at Canonical, and 
he feels it should be possible to set this value as we do for other 
OSes.  But that conversation happened in the middle of a busy 
conference, and I've been unable to track down the necessary APIs to 
make that happen.

For the long term this isn't much of an issue since modern app design is 
increasingly migrating to single-window UIs.  But not every app can be 
implemented as a single window, so some solution will need to be found.



IDE-specific things include:

- Fonts way too small
Peter noted this, and while "set the textSize of stack Home to 14" takes 
care of most of it, oddly enough I've found that the disabled states of 
LC's toolbar buttons are unaffected, even as the enabled states for the 
same controls use the new font size just fine.


- App icon sometimes not displayed
I've found that in most cases the LC app icon is used by the OS, but 
sometimes it isn't, using the generic app icon in instead.  I'll dig 
into the specs at freedesktop.org to try to figure out why this happens, 
but it seems odd that it only happens sometimes but not others.


- App icon behavior in Launcher not normal
In both Ubuntu's Launcher and Gnome Shell's Favorite panel, you can add 
the LC app icon there and it will indeed launch the app, but once 
launched it adds a new icon to the Launcher and the original one doesn't 
reflect that the app is open.

I suspect this has to do with how LC initializes its windows, such that 
they aren't being recognized as associated with that Launcher icon. If I 
can dig up the API to fix this I'll submit it to RunRev.



While the shortcomings noted above are very real issues and should be 
addressed, I should note that the team is aware of most of them, and are 
actively working on some of them right now.

Smaller issues tend to get addressed fairly quickly once they're 
identified.  For example, in the olden days it was common for Linux to 
indicate focus on buttons and list items with a dotted border, but I 
haven't seen that in years and the team recently removed that for v5.5.

While Linux has more than 30 million users, LiveCode engines tend to get 
attention in proportion to interest from LiveCode users.

With Mac, for example, we have a disproportionate amount of effort 
expended for OS-specific features relative to its 10% market share, with 
some glaring holes in Windows support (like still using the MCI 
interface for native media playback) even though that OS has am 87% share.

So I feel the level of effort RunRev puts into their Linux engine is 
admirable in many respects, provided they're able to meet a baseline of 
core competence for deployment on that platform.


The good thing about the Linux engine situation is one of the best 
things about Linux itself:  the community of people who use it.

Until more OEMs come on board with Linux pre-installed (we see new 
machines nearly every quarter but mostly in non-US markets), Linux will 
remain popular only among the subset of the population who would 
consider replacing the OS that came with their computer with something 
they downloaded from the Internet.  It doesn't matter how capable, 
efficient, robust, secure, or simply fun it is; if it's not 
pre-installed its growth potential will remain limited in terms of mass 
markets.

If Microsoft ever gets serious about license enforcement we'll see Linux 
proliferate madly, and in many sectors (EDU in Asia and Latin America, 
governments across the world outside the US, etc.) we're already seeing 
usage far beyond what we see in the US consumer demographic.

But still, overall the Linux audience today is more specialized than the 
gene pool as a whole.

During these middle years in Linux' growth, the audience is largely 
comprised of people who have a true "Can do!" spirit, a desire to learn 
and share what they've learned with their community.

For us LiveCoders, this can mean rolling up our own sleeves to dive in 
and help where we can.

If you find issues with the Linux engine, please log 'em to the RQCC. 
And whenever you open any report there, please vote for it - when a 
report is opened by someone who didn't feel it was worth their own vote, 
it makes the issue look unimportant.

And if you have the time and interest to help track down APIs to solve 
these issues, they'll get resolved that much faster.

--
  Richard Gaskin
  Fourth World
  LiveCode training and consulting: http://www.fourthworld.com
  Webzine for LiveCode developers: http://www.LiveCodeJournal.com
  LiveCode Journal blog: http://LiveCodejournal.com/blog.irv




More information about the use-livecode mailing list