Tag Archives: LiveCode

Installer Maker Plugin 1.5 for LiveCode is now available!

Economy-x-Talk is pleased to announce a big update of the now well-known Installer Maker Plugin for LiveCode.
The Installer Maker Plugin is the easiest way to wrap your LiveCode standalones in an installer. Just create your standalones and drag them into the Installer Maker Plugin window. Without being complicated, the Installer Maker Plugin offers you sufficient options to install your software on almost every Windows PC or Mac.

The new update contains more than a dozen bug fixes and new features. Most of the implemented new features were requested by our customers. Some important changes are: deletion of pictures from the Appearance section is now possible, more and improved language options, parenthesis are now allowed in file paths, more built-in checks and fail-safes to avoid mistakes.


With this new release, we are adjusting our licensing policy to make continuation of this project possible. We provide everyone who buys a (new or upgrade) license with free updates for three months. Currently, everyone can buy an upgrade, regardless of when you bought your license. Soon, you will be eligible for the upgrade price only if you bought your original license less than 1 year ago.

If you bought your license more than a year ago, you might want to buy an upgrade right now, while you can still pay the upgrade price. Upgrades cost EUR 16.95, new licenses cost EUR 39.00. (You can see when your license was created by hovering your mouse over the version number in the bottom-left of the Installer Maker window. The license creation date will appear in the tooltip.)

The new version of the plugin and forms to buy a new license or an upgrade can be found at http://rrinstallermaker.economy-x-talk.com . If you have any questions, please go to http://qurl.tk/du and fill out the web form.

MySQL Licenses: The Do’s and Don’ts of Open Source, or What’s All the Fuss About?

MySQL Licenses
The Do’s and Don’ts of Open Source, or What’s All the Fuss About?

copyright ©2010 by
Mark Schonewille and Economy-x-Talk
Nijmegen, the Netherlands
this version: 1.3 (26 Nov. 2010)

1 Introduction

In reply to a question on the LiveCode User Mailing List, I argue that MySQL is one of the best freely available (open-source) databases. A number of subscribers to that mailing list reacted quite strongly, saying that open-source doesn’t mean free. Apparently, they use the word “free” as in “free beer”, while I use it as in “free speech”. They argue that one needs to pay Oracle Corporation a lot of money if one uses MySQL, despite the fact that MySQL is open-source and freely available.

This was enough reason for me to call Oracle Corporation. After 30 minutes of searching for the right person, I was connected to a friendly Oracle Corporation employee. I asked this employee three questions: 1) do I have to pay Oracle Corporation if I use MySQL at home, 2) do I have to pay Oracle Corporation if I make commercial software that works with MySQl and 3) do my customers have to pay Oracle Corporation if they use MySQL in combination with my commercial software? His answer was a resounding and clear threefold “No!”

One doesn’t need to pay Oracle Corporation. It should be clear, though, that MySQL’s license, specifically the GNU General Public License (GPL for short) requires it to stay open-source. The GPL poses a few limitations on the use and distribution of MySQL, but creates opportunities at the same time.
In the text below, I explain the implications of the GPL for users of MySQL. In doing so, I will discuss a number of typical examples.

2 Unpaid Without Redistribution

You can freely download the MySQL software from the website . You can install it on your laptop for your own personal use, to test your website with a MySQL server. You can upload those websites to a web hosting server. You don’t need to pay Oracle Corporation anything in this situation.

A web hosting company can offer the MySQL database engine as an extra service on their servers. They can freely download the MySQL database engine from the MySQL website and they don’t need to pay for it. The customers of the web hosting company also don’t need to pay for using MySQL with their websites.

As another example, a printing company wants to manage a large customer database and has MySQL installed on an internal (local) server after downloading it from the MySQL website. The printing company is allowed to use the MySQL database for free without paying Oracle. The same company can ask me to make software for them, which will talk to their MySQL database. That company still doesn’t need to pay Oracle Corporation and I myself don’t need to pay either.

In a third example, I make commercial software, which needs to have MySQL installed. My customers can use my commercial software, for which they do need to buy a license, in combination with the MySQL database engine, for which they don’t need to pay. Because the MySQL engine is not embedded in my commercial software and I don’t redistribute MySQL together with my software, I don’t need a commercial license for MySQL and neither do my customers.

The next situation is a little tricky. I make commercial software and need a special version of MySQL to make it work. I adjust the MySQL engine and distribute it as open source software. I offer the source code for free to everyone who uses my adjusted MySQL database engine. I simultaneously distribute my commercial software accompanied by a note that it needs the adjusted version of MySQL. I make sure that the original GPL applies to my customised version of MySQL. I tell my customers to install my version of MySQL on their servers and to install my software on their client machines. I don’t need to pay Oracle Corporation because I distribute the adjusted version of MySQL under the GPL and it is not embedded in my commercial product.

This is about as far as you can stretch the GPL. In the situations described in the above, I don’t act as an OEM (Original Equipment Manufacturer), an ISV (Independent Software Vendor) or a VAR (Value Added Reseller) and I, my customers and my (internet) service provider can use MySQL without paying Oracle. (Note that redistributors are not limited to OEM’s, VAR’s and ISV’s only).

3 Redistributing the MySQL Software

The next step would be to adjust the MySQL engine in such a way that it can work with my commercial software product without distributing the code for the adjusted engine. This causes a dependency between the MySQL software and my commercial product and violates the GPL directly. The GPL can no longer apply and I will need to buy a commercial license from Oracle Corporation in this case.

I could download the MySQL engine and embed it into my product, e.g., by letting my installer install MySQL automatically together with my own product. I don’t want to disclose the source code of my entire product. Because I am selling my commercial software product together with the embedded MySQL engine, I have become an ISV and I need to buy a special commercial license to do so.

It should be obvious that I also need to buy a commercial license, if I want to use the MySQL source code libraries, rather than compiled binaries, in the source code of a commercial product without revealing the source code. Selling this commercial product violates the GPL and requires that I pay Oracle for a license.

However… as long as I have no desire to sell the embedded MySQL source code commercially, I can let the GPL license apply. For example, if the aforementioned printing firm asks me to create an in-house tool to manage their database, they might require that the tool includes the MySQL server (either by embedding the source code into mine or by combining the binary with the final product). If I make the tool, include MySQL in it and license it to the customer under the GPL, my customer has no obligation to reveal the source code to anyone, as long as he doesn’t redistribute my work. The customer still doesn’t need to pay Oracle Corporation for a MySQL license, nor do I.

However (again)… I have to offer my customer the source code as required by the GPL. If the customer doesn’t want the source code, I don’t need to give it to him. If the customer wants to redistribute the product, he needs to ask me for the source code, because he has to make the same offer to those who receive the redistributed software from my customer as I had to.

The interesting point here is that my customer still can (or rather has to) pay me for my services. I made the software for him and he already agreed to pay me for my efforts. When he redistributes the software under the GPL, he can offer his own customers a similar service.

4 Then What’s All the Fuss About?

It is quite obvious that Oracle Corporation doesn’t write on the MySQL website “please don’t pay us”. However, the goal of MySQL isn’t only to generate money. By supporting MySQL, Oracle Corporation makes sure that a large community of software and database developers continues to exist. This community creates new ideas that Oracle Corporation might use —reverse engineer, if you want— in their commercial products. Another reason to support MySQL is that some customers might prefer the commercial Oracle database over the non-commercial MySQL database at some point.

If you decide to pay for a MySQL license, you don’t actually pay for the software. The software is open-source after all and can’t be sold without offering the source code. If Oracle Corporation would ask loads of money for the software only, someone would decide to compile the binaries and offer them for free, together with the source code. Anyone could do so.

Also, Oracle Corporation can do exactly the same as you and me: sell a service connected to MySQL. Oracle Corporation provides support to anyone who wants to pay for it. This way, MySQL is a source of revenue for Oracle Corporation.

Finally, there are the licenses for OEM’s, VAR’s and ISV’s. Everyone who wants to sell MySQL software as part of their proprietary software or hardware product needs to buy a commercial license. This is another source of revenue for Oracle Corporation.

For most small businesses, MySQL is the least expensive (or even completely free) and often the most efficient database available, provided that they don’t need support from Oracle Corporation. For example, being a small company with all necessary skills available in-house and not having huge databases that require continuous monitoring, Economy-x-Talk doesn’t need to buy support from Oracle Corporation.

5 Conclusion: Redistribution Is Key

The conclusion of this story is twofold. First of all, as long as you don’t redistribute the MySQL software, you don’t need to worry about licenses, even if you make money by providing database-related services or products that need MySQL to be available. Second, even if you redistribute MySQL under the GPL, you can still make money with it, as long as you offer the source code of your project, which your customer might not even want to have.

To clarify the second conclusion, keep in mind that it is not obligatory to redistribute your compiled software. When you offer the source code, your customers are not obliged to accept the offer. Because you are the one who provides the service of maintaining and improving the software and your customers are actually already paying you for this service, they might not care about the source code. Only if you ever decide to stop providing this service, your customer might have an interest in the source code.

Oracle Corporation seems to stick not closely, but completely, even literally, to the GPL. All the fuss about Oracle Corporation no longer supporting MySQL and not caring about small companies who use the MySQL database engine is sheer nonsense. Oracle Corporation continues to support MySQL for now. Even if they decided to terminate their support, anyone could take the MySQL engine and continue to develop and redistribute it under the GPL.


Please, feel free to comment on this article. Keep in mind, however, that I asked Oracle Corporation for their opinion on this matter and, although not in as many words and not that specific, this was their answer. I would like to thank Björnke von Gierke and Judy Perry for their comments.

The author owns the software development company Economy-x-Talk and gladly offers his services. Need help with LiveCode, PHP or MySQL? Let me know

The author accepts no responsibility for any consequences of business decisions based on this information. It is the reader’s responsibility to read the actual license conditions on Oracle Corporation’s MySQL website and consult with Oracle Corporation if in doubt. This article represents the personal opinion of the author, is not endorsed by RunRev Ltd. and has not been authorised by Oracle Corporation.

Integral reprint in physical and electronic form is herewith granted, on the condition that the copyright notice, the version number, the date, the URL’s and this sentence are included. If you publish this text on a web site, please embed the URL’s in a sensiblel way.

A One-Liner to Keep Track of User Preferences in LiveCode

I have kept this a secret for a long time, but after using this in many projects, it is now time to publish my user preferences library for LiveCode/Revolution.

Below follow the scripts without comments. I will write more about it in a future blog post.

function saveGlobalsToVar theGlobals
  do “global” && theGLobals
  put theGlobals & return into tempVar
  repeat for each item x in theGlobals
    do “put urlEncode(” & x & “) & return after tempVar”
  end repeat
  return tempVar
end saveGlobalsToVar

on readVarToGlobals theVar
     — breakpoint
     put line 1 of theVar into myGlobals
     delete line 1 of theVar
     do “global” && myGlobals
     repeat with x = 1 to number of items of myGlobals
          put “put urlDecode(line x of theVar) into” && item x of myGlobals into myScript
          do myScript
     end repeat
end readVarToGlobals

on writePrefs theGlobals,thePrefsFilename
  put saveGlobalsToVar(theGlobals) into myPrefs
  put prefsFile(thePrefsFilename) into myPrefsFile
  set the filetype to “sysppref”
  open file myPrefsFile for binary write
  write compress(myPrefs) to file myPrefsFile
  close file myPrefsFile
end writePrefs

on readPrefs thePrefsFilename
  put prefsFile(thePrefsFilename) into thePrefsFilename
  if there is a file thePrefsFilename then
    open file thePrefsFilename for binary read
    read from file thePrefsFilename until EOF
    close file thePrefsFilename
    put decompress(it) into myPrefs
    — put myPrefs
    readVarToGlobals myPrefs
    return “Error: File does not exist.”
  end if
end readPrefs

function prefsFile theFilename
     if gU3App is true then
          put $u3_app_data_path & slash & theFilename into myFilePath
          replace backslash with slash in myFilePath
     else if the platform is “MacOS” then
          put specialFolderpath(“preferences”) & “/” & theFilename into myFilePath
     else if the platform is “win32” then
          put specialFolderpath(26) & “/” & theFilename & “.ini” into myFilePath
     else if the platform is “Linux” then
          put $HOME & slash & dot & theFilename into myFilePath
          put stackToFilename(theFilename) into myFilePath
     end if
     return myFilePath
end prefsFile

Economy-x-Talk releases Installer Maker Plugin 1.4 for LiveCode 4.5

Economy-x-Talk is pleased to announce the release of a new version of the Installer Maker Plugin for Runtime Revolution/LiveCode. The Installer Maker Plugin is a tool to quickly wrap your standalone applications in an installer for Mac OS X or Windows. This new version provides improved 64 bit compatibility (currently being tested) and compatibility with LiveCode 4.5.


The Installer Maker Plugin is a tool to build installers for Windows and Mac OS X from your LiveCode standalones. Wrapping a standalone in an installer is just a matter of minutes. There are also special options available, which allow you to include a Read Me file, to start your programme automatically after installation and more.
The current version works fine on Mac OS X and Windows and is being tested on Linux. We expect to release a new version with Linux compatibility at the end of the year 2010.

A license cost 39 euro (approximately 50 dollar). There won’t be a trial version, but we will provide ample instructions, pictures and videos. A video tutorial is available here. You are always welcome to send e-mails with questions about Installer Maker.

For more information, including downloads, please visit http://qurl.tk/ce .

A few more important links for Installer Maker users:

Contact: http://qurl.tk/du
Installing the plugin: http://qurl.tk/hv
Making an installer1: http://qurl.tk/hu
Quick Guide: http://qurl.tk/hw

(Currently, the 1.4 version still shows the 1.2 version number. We will release version 1.4.1 very soon and we promise that it will display the correct version number).

Web installer for the Installer Maker Plug-in

Economy-x-Talk has created a web version of the Installer Maker Plug-in installer. To install the plug-in, all you need to do is download a 60K stack and open it in Revolution. This stack can be downloaded here.

Use the Installer Maker Plug-in to wrap your Revolution standalones in an installer for Windows (XP, Vista, 7) and Mac OS X (10.3 and later). This installer maker provides several additional options and features, including multiple languages and an uninstaller.


Wrapping a standalone in an installer is just a matter of minutes. There are also special options available, which allow you to include a Read Me file, to start your programme automatically after installation and more.
Note that you can use the Installer Maker Plug-in for RunRev standalones, but also for any other software.

The Economy-x-Talk home page http://economy-x-talk.com contains tutorials and additional information. Contact us if you have any questions.

Speakable Password Generator

Here’s a script, which I just posted to the Revolution forum. I post it on my blog, because I like the script and it might be useful to many people. It should also be simple to translate this to PHP for instance.

This script generates passwords with length theLength, choosing consonents and vowels semi-randomly such as to keep the password speakable. This function allows for double consonants while still keeping the password speakable.


function speakablePassword theLength
     put “bcdfghjklmnprstwyz” into myConsonants
     put “aeiou” into myVowels
     put “” into myPass
     repeat myPasswordLength
          if char -1 of myPass is in myConsonants then
               if char -2 of myPass is in myConsonants or
                  length(myPass = 9) then
                    put any char of myVowels after myPass
                    if any item of “true,false” then
                         put any char of myVowels after myPass
                         put any char of myConsonants after myPass
                    end if
               end if
               put any char of myConsonants after myPass
          end if
     end repeat
     return myPass
end speakablePassword

How to set up shortcuts with the Installer Maker Plugin for Runtime Revolution?

A few days ago, Economy-x-Talk’s support department received a question about creating shortcuts with the Installer Maker Plugin for Runtime Revolution. More specifically, a user of the plug-in asked how to set up the installer as to create shortcuts in the start menu and on the desktop. Here’s the answer.

To add shortcuts to the Start menu on Windows, follow the following steps after you have added all necessary files:
1) go to the Special section
2) select the Start Menu tab button on the Special section
3) drag any file (e.g. the main executable file) from the list on the left into the list on the right

If you want to have a shortcut on the desktop, follow the following steps.
1) go to the Special section
2) select the Aliases tab on the Special section
3) drag a file (e.g. the main executable) from the list on the left into the top field on the right
4) make sure that the file in the top field is selected (hilighted)
5) now choose Desktop from the option menu button in the middle of the window, next to the Set button
6) you can leave the field below the option menu button empty and press the Set button

With these settings the installer will create shortcuts inside a folder in the Start menu as well as on the desktop.

Download the Installer Maker plugin for Runtime Revolution here

From 15th August, we’ll have time for new projects! Be the first in line and contact me now!

Installer Maker Plugin for Runtime Revolution

Economy-x-Talk has been working on an Installer Maker Plugin for Runtime Revolution. Today, this product is making it’s first careful steps into the world.

The Installer Maker Plugin is a tool to build installers for Windows and Mac OS X from your Revolution standalones. Wrapping a standalone in an installer is just a matter of minutes. There are also special options available, which allow you to include a Read Me file, to start your programme automatically after installation and more.


This is version 1.0 of the Insntaller Maker. There are still a few issues we need to work on, but in it’s current form it should definitely be an interesting product for Runtime Revolution users. The current version works fine on Mac OS X and is being tested on Windows.

Licenses are going to cost 39 euro (approximately 50 dollar). With this product, you will streamline that last part of your production flow: preparing for distribution. Now, you can do it all with one and the same tool: your Runtime Revolution IDE.

There won’t be a trial version, but we will provide ample instructions, pictures and videos. You are always welcome to send e-mails with questions about Installer Maker.

There isn’t even a web store for this freshman yet. If you would like to obtain a license for Installer Maker, please go to http://economy-x-talk.com/contact.html and send an e-mail.

Please, keep an eye on this blog. Soon, we will be posting a user manual and tutorials.

Installer Maker can be downloaded directly from http://qurl.tk/c3

CSV to Tab conversion with RunRev

The csv to tab delimited conversion script, which I just posted on the Revolution Use List. I post it here just in case it is useful to someone. This script doesn’t take returns and tabs inside cells in consideration.

function csv2tab theData
    repeat for each line myLine in theData
         repeat for each word myWord in myLine
              if char 1 of myWord is quote and (char -2 of myWord is
               quote or char -1 of myWord is quote) then
                   replace comma with “<#>” in myWord
              end if
              put myWord after myNewData
         end repeat
         put cr after myNewData
    end repeat
    replace comma with tab in myNewData
    replace “<#>” with comma in myNewData
    return myNewData
end csv2tab