Issue 47 * May 1, 2008

Start a business with Revolution
Quit everything to become a freelancer?
A dream for some and a reality for others.

by Damien Girard

Before beginning a business, you need of course developer skills or money to employ developers, but the most important is an idea.

To begin with, the main Dam-pro project was an "open-source" (never released) project, built with Revolution. This project was only for fun and was not intended to become commercial software. During the development of this project, I greatly improved my developer skills and after a few years of development using Revolution, I met some of its limitations. In my case, it was the localization problem; my software was written in French, and I wanted to translate it quickly to English, but I could not find an easy way to develop applications available in multiple languages with Revolution: this was when I discovered my Idea, and my main project, NativeSpeak™ was born.

The goal of the NativeSpeak™ project is to provide to all Revolution developers a complete framework to create applications available in multiple languages.

To develop this project, I took my previous projects and worked on making them available in multiple languages, easily. The NativeSpeak™ development started.

My first challenge was to define what the software should do to solve the problem. I arrived at these features:

  • Add/Modify/Remove text string that can be available in the source code by using one function. (For ask/answer dialogs and dynamic text).
  • Add/Modify/Remove objects that you wish to translate in a database. (The developer must have the control; NativeSpeak must not take all objects).
  • Resize objects to fit their content. (This feature creates another one, the objects size must be adapted to the Operation System default UI. For example, buttons on Windows are smaller than on Mac).
    • This feature creates a problem, if all objects are resized depending on the language, you have to set strict geometry relations (otherwise your UI will be broken from one language to another). It is a long and boring task.
  • To resolve the previous problem, NativeSpeak must include also an advanced geometry manager, easy to use of course!
  • The library must provide a complete documented API. The developer should not directly access the translation and geometry databases.
  • The library must be provided with an easy to use but powerful IDE inside the Revolution IDE.
  • An external software must permit a human translator to translate text strings created by developers in multiple languages.

The result is three components for distribution in two software packages.

  • NativeSpeak Create
    • NativeSpeak Library
    • NativeSpeak Create IDE (Revolution plug-in)
  • NativeSpeak Translate
    • This is the translation tool for the human translator

The second challenge was making the right technology choice. In my case, it was the database format. I chose XML; it is fast, permits storage of a lot of data and can be handled easily.

Third, begin the development. I always use this development method: I have in external files all custom commands/functions/properties that my application can use. Also I centralize the source-code in order to use only one library stack. There is another Revolution problem here, the script editor become slow when it reaches around 5000 lines on my computer. The advantage of this method is that I create an entire API for my application, and after all objects/buttons just call general functions/commands. This allows me to track down bugs easily and keep the source code clean. Also, I develop everything in English (including comments). I am French and this can appear counter-intuitive but if one day I have to work with non-French speakers, they will be able to understand my source code.

Once the NativeSpeak Library was written, I had to start the IDE. To develop a graphical application, you must brainstorm and design a few prototypes to finally produce a good GUI. Example:

First NativeSpeak Translate GUI:

Actual GUI:

I wanted the IDE to offer the developer all the features that the NativeSpeak library offers. Eventually, I achieved this.

Once the IDE and the library were created, I started to develop the last component, the application that permits a human translator to translate your applications easily.

NativeSpeak Translate was developed with NativeSpeak Create and it uses all the features provided by the library. The previous screenshot shows NativeSpeak Create with the NativeSpeak Translate translation database opened. Like the NativeSpeak Create IDE, after a few prototypes, the GUI was designed and I started development. NativeSpeak Translate uses all the libraries that I developed for my previous projects. (User preferences, logs, Application Inter-communication… and of course, NativeSpeak.)

7000 lines later, NativeSpeak Translate was finished.

The next task was to develop the installer. You can use already existing software installer solution ("NullSoft Install" on Windows or "AutoPackage" on Linux), or create your own installer. I had developed an installer for my previous projects, so I re-used an important part of the source-code. The installer was also developed with NativeSpeak Create. The NativeSpeak installer also works with the uninstall feature on Windows/Linux/Unix.

The software was at this state, ready to be used, but not to be sold. It required documentation.

You might think that documentation won't take very long to produce. You would be wrong! Writing complete and useful documentation takes a lot of time. NativeSpeak has many features, and the result is lots of documentation. This was a challenge for me in particular to write the documentation in English which is not my native language, and I'm very grateful to the beta testers who proof read it for me and made many corrections!

Summary: You have a product ready, now you have to sell it. But it is not an easy task.

  • First, you need a distributor (or create your own store). Runtime Revolution Ltd. created the RevSelect program, so I contacted Heather Nagey and after few negotiations the contract was signed. Distribution problems fixed.
  • Second, you need a website. I made a mistake with my website. I was not aware that CMS (Content Management System) software existed, and I began by writing a huge PHP website. The result was an enormous loss of time! The website is beautiful, sure, but compared to a mature CMS (Joomla) that has existed for a few years, it looks really small. So after a few weeks of development for nothing, I discovered and started to use Joomla. After reading the documentation, I started to create my website appearance for Joomla, and the result is great. So, I recommend to anybody who needs to create a website: Do not reinvent the wheel, and use a Content Management System.
  • Third, the French fun!
    • To sell something, you must create a company in France, and pay 50% of tax on what you receive. Also freelancing is not really easy in France. You have to:
      • Follow courses to avoid falling into a legal trap.
      • Have a lot of meetings
      • Complete and send a lot of confusing and baffling forms.
    • This results in a lot of lost time.

Note: During the "French fun" stage, it is recommended to launch a private/open beta of your applications. It is really an important thing because it permits to the product to become more mature.

Thanks to Graham Samuel, Trevor Devore and Ludovic Thebault for their help during the development of NativeSpeak.

And the result? Where is NativeSpeak?

NativeSpeak™ is finalized, checked and re-checked, the website development is not finished, but I am working hard to finish it as soon as possible.

Dam-pro NativeSpeak™ will be launched in few weeks through RevSelect. The products are finalized and mature and can be used in any software development, large or small.

Damien Girard

PS: I never worked so much since I am a "Freelancer".

Main Menu What's New