Do I need MySQL commercial License for my mobile App selled to users? - mysql

I am creating a multi platform application and want to use MySQL as the database behind. I read about GPL License. The license wants me to publish my source code, if I use the free version of MySQL. I dont want to publish my source code.
So is it allowed to use MySQL as the database and build for example an mobile App with Android, that uses the data from there, without publishing my Android source code?
Thank you

You don't need to bundle MySQL with your Android; You probably host your MySQL along with your web server, isn't it?
So, the answer is No, you don't need commercial license for your App.

At first please have a look at the MySQL licensing page what model really applies to your software.
I think as long as you only want to connect to a MySQL database you somehow can do what you want (but don't bundle the client libraries). The rule of thumb is don't include/bundle anything from Oracle/MySQL and you are on the good side.
It is ok if the user downloads and installs the MySQL-package, but it is not you who delivers it with your software (which would be bundling again).
I think it is also ok to write a script which automatically downloads and installs it from the Oracle pages (note - there are better ways: e.g. dpkg), but I'm not a licensing expert.
The GPL FAQ might help you to get a sense for using and publishing GPLed software.
An overview/comparison of free and open-source software licenses can be found at Wikipedia.
Hope that helped a bit.
*Jost

Related

Have any way to use MySQL as a installable process in PC?

I'm looking for a way to after install my electron app install also this "local database" but I don't want to use xampp... Have another way ?
MySQL isn't a great choice for this use case -- it's meant to be used in a server environment, not as part of a desktop application. Additionally, distributing it with an application will require you to either distribute your application's source code under the GPL, or pay licensing fees.
A better choice would be SQLite. It's designed for embedding -- in fact, you're probably using an application which embeds it right now! -- and its code is in the public domain, so there are no special licensing requirements. You can use it in an Electron app by installing the sqlite3 Node module.

Correctly distributing a Java application with database

I have this Java application which uses a MySql Database which I want to distribute. My concern is that, to distribute this application I'll need to make the assumption that the target system has both JRE and MySql Server installed.
Is there any way I could bundle my application with the JRE and the MySql server so that if they aren't already present on the system, my app can install them and then run the application?
No you should not bundle them and deliver them as part of your installation because of licensing.
This applies to both Oracle JRE and MySQL.
Update after #Stephen C comment.
It seems that it is possible to redistribute the JRE provided certain circumstances.It is illadviced though for the reasons that are explained in Stephen C answer. I have seen these issues arise in practice.
End Update
I am not sure what is the "safest" path (safest related to licensing issues).
Perhaps an installer that downloads them on the spot as part of the required components is ok.Friends here can correct me if I am wrong on this
You CAN bundle a JRE with a Java application, provided that you follow certain conditions. (If I recall correctly, this is covered by the standard Sun/Oracle license that you agree to when you download the JRE. I think the phrase is a "binary distribution" or "binary redistribution".)
UPDATE
I just checked, and my memory is correct. See Supplemental License Terms section of "Oracle Binary Code License Agreement for the Java SE Platform Products and JavaFX". (Paragraph C is the most directly applicable to your scenario.) And as I said above, conditions apply.
END UPDATE
I don't believe that you are permitted to bundle the free version of MySQL.
Personally, I would recommend AGAINST doing this for Java, because:
It inflates the size of your distributable.
It fills the user's disc with extra copies of the JRE.
It presents a problem if it becomes necessary to patch the bundled JRE that the user has (unwittingly) installed.
You are making it difficult for the (sophisticated) user to choose which version of Java to use.

Can i use mySQL in my commercial windows project

Can I use mySQL in my commercial windows project? Are there any license issues? Which version should I use?
Surprisingly, since the server is not linked with your application directly, you can distribute the MySQL Community server unmodified or modified, as long as you follow the GPL terms. (in short, if you modify the server, you need to make the modified source available)
The client library is another story, however. If you are distributing your commercial project, you cannot distribute the MySQL client libraries freely along with your software if your software is not GPL-licensed or another OSI-approved open-source license.
This is called the MySQL FOSS license exemption, more can be found out about it here:
http://www.mysql.com/about/legal/licensing/foss-exception/
http://www.mysql.com/about/legal/licensing/index.html
You will either need to purchase a license to distribute the mysql client libraries, use another client library (highly unlikely to happen, as there aren't many good libraries that don't wrap the official one) or make your software open-source.
(I am not exactly sure on the legality, but it might be possible to have your customers download the mysql client libraries themselves, but I think it will still constitute 'linking' against a closed source app, therefore still violating the terms. In either case, this is definitely an added hassle for a commercial app.)
It might not be an option for you, but it's worth noting that PostgreSQL is licensed under the BSD license, and sqlite3 is in public domain. Both are a bit more friendly towards linking with commercial code.
As per their explanation, you can use it for free but you will be obligated to release your commercial windows project under the GPL. To keep your code proprietary, you need a commercial license.
Have you every try to search the official site of MySQL for license information?
-- (update) --
OK, since you are "not confirm", let me summarize in short:
"If you want to use MySQL in your commercial program, you must either make your program GPL (i.e., open source, which apparantly not your choice) or Pay Them For a Commercial License".

Is there an API or tool that can automate software updating?

Is there any API or tool that can automate software updating? It should take care of checking for updates from a URL for a provided list of files and downloading and replacing the ones that need updating. It would also be nice if it contained an authentication module so that only authorized parties could access the updates. It should be language-agnostic - takes a list of files without extra knowledge except their versions and replaces them with newly downloaded copies if on the site there are newer versions.
I'm specifically interested in something for the Windows platform, that would run on Win Xp to Win 7.
This makes me think about apt-get ...
take a look here, as well: Is there an auto-update framework for C++/Win32/MFC (like Sparkle)?
I did see some articles a while back about embedding subversion into your application to manage version control.
Edit:
http://svnbook.red-bean.com/en/1.5/svn.developer.html
Subversion has a modular design: it's implemented as a collection of libraries written in C. Each library has a well-defined purpose and application programming interface (API), and that interface is available not only for Subversion itself to use, but for any software that wishes to embed or otherwise programmatically control Subversion. Additionally, Subversion's API is available not only to other C programs, but also to programs written in higher-level languages such as Python, Perl, Java, and Ruby."
Just saw UpdateNode launching a pretty cool update and messaging system. It seems to be cross platform and free for Open Source.
UPDATE, did some further analysis on that, posted at: https://stackoverflow.com/a/22528011/3257300
For windows, I'd use Google Update, also known as omaha.
Since you didn't tag this question as windows, I'd also mention a UpdateEngine for Mac.
And (best of all) apt, which is available for free on all Debian-based Linux and BSD distributions, like Ubuntu
There is open source project WIPT inspired by APT of Debian Linux.
Head over to Launchpad and use a PPA: it is a Debian/Ubuntu repository management platform. Of course this is not really platform independent but it is language wise :-)
You should take a look at ClickThrough, I don't know much about it but it sounds similar to what you're looking for. As for authorization, I would imagine this to be handled by your webserver based on the URL.
InstallShield has an offering. Never used it but researched it a few years back but we decided on a roll your own solution.
InstallShield Update Manager
InstallShield Update Service
You didn't state what platform you needed this for. The easiest way I can think of doing this is with subversion using rsync.
The concept is to write a post-commit hook for subversion. This script would update a "working folder" on the repository machine and then use rsync to update the differences to another machine.
Data protection and authentication would be set up using rsync over ssh.
If this is for windows, you could try doing the same with cygwin installs on the two machines.
Good luck.
If you use .NET, I'm a happy customer of AppLife Update
CRONw is a scheduled execution service for Windows. (Sorry, I can't link it, I'm apparently limited to 1 as a new user. It's hosted on Sourceforge.)
Powershell is a Windows scripting language (Microsoft-official) that allows you to do most system administration operations you could conceivably want to do. It is very easy to pick up even if you haven't worked with it before.
I would say your best bet is to write a simple update script in Powershell and, optionally, set it up as a crontask so you don't have to manually execute it.
IIRC, Powershell is an optional install on XP, and CRONw requires you be running a 32-bit system. You didn't say, so I'd guess you're doing 32-bit, but the alternative bears mentioning.
And in all this, I'm assuming that the URLs you're describing are designed for this purpose - if they're not and you don't own them, it will rapidly become more suffering than you're willing to bear. (Making a computer navigate a human-readable website usually does.)

access 2007 to exe

I have a database in ms access 2007 with forms. I need to create a stand alone exe file from access. Is it possible? If so, how?
You can't save it as .exe, but you could use the Access Runtime to allow users without Access to use your Application.
If I can just add my two cents worth...
You DO have to distribute the Access runtimes with your application. I heard recently on Stackoverflow on a questions that Microsoft runtimes for access are now freely downloadable.
Here are a couple of links...
http://www.granite.ab.ca/access/developeredition2007faq.htm
http://blogs.msdn.com/clintcovington/archive/2007/01/30/the-runtime-and-developer-extensions-will-be-free.aspx
You can either distribute these runtimes with your application or you can have your customer download them.
EDIT - THE BELOW IS PROVEN FALSE. YOU DO NOT HAVE TO PURCHASE A LICENSE TO DISTRIBUTE THE RUNTIMES. Of course, they are distributed under a license but the license is free. I leave the comment below for its historical interest.
I think but am not sure that to distribute the access runtimes with your application you will have to have a license. I know that you used to get this license with an MSDN subscription and with Visual Studio Tools for Office.
END FALSEHOOD
Once you have the Access Runtimes, you can create BULLETPROOF runtime installations of Access apps using preconfigured installation scripts from SageKey.com.
Office developer tools comes with some deployment options but they are not bulletproof and I would NEVER distribute a commercial application using those...they just don't work. But the sagekey scripts absolutely ROCK. They work incredibly well.
All this presumes you want to widely distribute your app. If not (for example...you want to just deploy to your customers and you will have complete control over that) then you can use the download from Microsoft option mentioned above.
One last thing. Runtime access apps have to be VERY robust. You have to do error handling and automatic table linking very well among other things or you will spend all the time on the phone with your customers rather than selling/distributing software.
Hope this helps.
Seth
If you have the Developer version of MS Access, you can create an '.mde' file, which operates just like an .exe file as far as your user is concerned. Essentially, creating an .mde wraps a version of the MS Access run-time along with your database.
As long as you have done a decent job with your form design, the user really can't tell the difference between your .mde file and a .exe.
I haven't used the Developer version in a number of years, but if I recall, it is quite expensive. EDIT (It appears to be free these days).
Here is a link to a good FAQ on the topic. Much more up-to-date than my recollections from the past.
As far as bullet proof runtimes yes Sagekey is an answer. However another alternative is Albert Kallal's Inno script which checks to see if a version of Access is installed. If not it tells you to install a runtime version of Access. If installed then it continues to install your FE MDE and other assorted files.
http://groups.google.com/group/microsoft.public.access/msg/10e3fc9234660872?hl=en
Sample inno script which "wraps" the package wizard install into a single .exe
http://groups.google.com/group/comp.databases.ms-access/msg/4aa1b33a191bf1f8?hl=en
Deploying updates to your software in a Runtime environment for Access 2007
http://www.members.shaw.ca/AlbertKallal/RunTime/InstallExample.htm
The only scenario which it wouldn't handle well would be if the user does install Access or a different Access runtime on their system later. However if you ship your product in Access 2000 format the problems are minimized.
no it's not possible.
I don't believe it is possible. Sorry to say. You need the Access to launch and display the form.