Author Topic: The How and Why of AdvancedHMI Licensing  (Read 20294 times)

Archie

  • Administrator
  • Hero Member
  • *****
  • Posts: 5260
    • View Profile
    • AdvancedHMI
The How and Why of AdvancedHMI Licensing
« on: December 11, 2015, 07:49:51 AM »
The AdvancedHMI software carries a unique licensing model and I wanted to make a post to explain how to comply and why the license in the way it is. A majority of the license model is motivated to keeping the software free.

The usage and deployment licensing is based on a slightly modified version GPL. This is an open source license that does not allow the use of the software in closed source applications. The "modified" part is because there are some compiled DLLs that are required to be part of the solution. These DLLs can only be re-distributed along with the AdvancedHMI solution.

Why is it based on the open source model? For several reasons:

1) Software reputation protection. Controls engineers heavily frown on hardware or software they are unable to modify to suit their needs. If AdvancedHMI solutions were deployed as closed source, the next developer would become very frustrated because they could not make even minor changes. This in turn would mean they would heavily discourage the use of AdvancedHMI. Our goal is to make AdvancedHMI use encouraged by all of those who use it. Think of it as the likes of a PanelView which you can upload the program and freely make your own modifications.

2) Let's be fair. The software was free to you, so it should be free to the next guy.

3) Our protection. Once in a while we come upon machines with an AdvancedHMI application and are asked to make modifications. If we did not have access to the full source, then we would have to tell our customers that we cannot even work with our own software. Imagine you deployed a machine with a PLC, then was called back to make a modification, but discovered someone password locked your own program.

4) Self-proliferating Marketing Model. The development of AdvancedHMI has taken thousands of hours to develop. Since the software is free, we do not make any immediate income from the sale of the software, so we rely on other means such as support and development. In order for this to work, it is important to have a very large user base. Once again since the software is free, there is no marketing budget. This is where we rely on the software to market itself. Our hopes is that once a solution is deployed, another person will come along to study or modify that application. In the process, they will discover the power of AdvancedHMI, then hopefully become yet another user.
« Last Edit: December 13, 2015, 07:49:06 AM by Archie »

Archie

  • Administrator
  • Hero Member
  • *****
  • Posts: 5260
    • View Profile
    • AdvancedHMI
How to Comply With the License
« Reply #1 on: December 13, 2015, 07:48:44 AM »
To comply with the license, you must either supply the full source solution to the end user or make it known that it is available on request. This full source must contain all of the original components that came with the original download.

The technique I recommend to fully comply is to copy the complete source directly to the machine it will be deployed on or copy it to a memory stick that stays in the machine. Then create a shortcut to \AdvancedHMI\bin\debug\AdvancedHMI.exe

This deployment technique has several advantages. The first is that it creates a backup copy of your solution. Secondly it makes it very easy for the next person to be able to get the solution and make modifications. Thirdly is guarantees full compliance with the license.
« Last Edit: March 16, 2016, 08:21:23 AM by Archie »

Archie

  • Administrator
  • Hero Member
  • *****
  • Posts: 5260
    • View Profile
    • AdvancedHMI
Only Using the Communication Drivers
« Reply #2 on: December 13, 2015, 10:21:56 AM »
It is often asked about separating the drivers from the main solution to be used in a custom project. This does NOT comply with the license. The license requires the full original solution remain in tact.

If you are only using the drivers, you can add another project to the solution and use the drivers from that project. All of the main projects and components MUST remain with the solution.

This often raises the question of why do I want all of  these extra parts in my project that I am not using. Remember the software is free and we rely on "self-proliferating marketing". If the solution is broken apart, then the next person in the solution will never see the full extent of AdvancedHMI.

If you absolutely need to only have drivers or a closed source solution, we have some of the drivers available for use in stand-alone and closed source applications. They can be purchased from the main web site..
« Last Edit: March 15, 2017, 12:52:05 PM by Archie »

bachphi

  • Hero Member
  • *****
  • Posts: 642
    • View Profile
Re: The How and Why of AdvancedHMI Licensing
« Reply #3 on: December 23, 2015, 06:43:09 AM »
Great licensing model!

I would like to add a requirement to leave PictureBox1 alone, the one that contains the absolutely beautiful AHMI logo. Otherwise your app would crash and virus will destroy your PC.
===================================================
This is NOT alt.read.my.mind.
No such thing is sh^t-for-brains unless you are posting to alt.read.my.mind.
===================================================

DanieLoche

  • Guest
Re: The How and Why of AdvancedHMI Licensing
« Reply #4 on: July 21, 2016, 07:11:37 AM »
Hello,

Running an app on çy Raspberry Pi with Mono, when I open a form with a ChartBySampling control, the app immediately closed (crashed, I suppose)...

Trying to find a solution, I found this topic. TLDR : due to Licensing, it is not allowed to use Chart forms in something else than Microsoft OS.

And I constat that the ChartBySampling control inherits from the Chart control ! Do I have to say goodbye to my project ? :'(

Archie

  • Administrator
  • Hero Member
  • *****
  • Posts: 5260
    • View Profile
    • AdvancedHMI
Re: The How and Why of AdvancedHMI Licensing
« Reply #5 on: July 21, 2016, 07:39:04 AM »
Running an app on çy Raspberry Pi with Mono, when I open a form with a ChartBySampling control, the app immediately closed (crashed, I suppose)...

Trying to find a solution, I found this topic. TLDR : due to Licensing, it is not allowed to use Chart forms in something else than Microsoft OS.

And I constat that the ChartBySampling control inherits from the Chart control ! Do I have to say goodbye to my project ? :'(
ChartBySampling is based on the System.Windows.Forms.DataVisualization.Charting.Chart class. If you look at this web site and look at the Mono implementation of the Chart object, you will see that it is largely not implemented:

http://www.go-mono.com/status/status.aspx?reference=4.0&profile=4.0&assembly=System.Windows.Forms.DataVisualization

Your options would be to code the equivalent of ChartBySampling and base it on something like ZEDGraph as mentioned in this post:

http://stackoverflow.com/questions/7189841/is-there-an-alternative-to-nets-windows-forms-datavisualization-charting-assem

Or you may be able to find a 3rd party implementation of System.Windows.Forms.DataVisualization.Charting.Chart as mentioned here:

http://mono.1490590.n4.nabble.com/S-W-F-DataVisualization-Charting-td4660508.html

Personally, for a charting application, I would invest the extra $30-$50 and use a micro PC that has full Windows 10 such as this:

http://www.geekbuying.com/item/Wintel-W8-Intel-Atom-Z3735F-64Bit-TV-Box-Windows8-1-Android4-4-Dual-OS-Quad-Core-HDMI-2G-32G-802-11-a-b-g-n-LAN-BT4-0-343918.html

I also found this which may or may not be of any help:

https://apps.ubuntu.com/cat/applications/oneiric/libmono-system-windows-forms-datavisualization4.0-cil/

« Last Edit: July 21, 2016, 07:53:42 AM by Archie »

DanieLoche

  • Guest
Re: The How and Why of AdvancedHMI Licensing
« Reply #6 on: July 21, 2016, 10:24:32 AM »
Hello Archie,

Thanks for your answer. :)

Arf yes it's what I was fearing...
Thanks for the links. I wasn't aware about the first one, pretty useful to anticipate the future issues with Mono !

I'm looking at ZedGraph for now. It's working with Mono. Now the hardest part, redo a ChartBySampling control... I not even sure in how to doing that. ^_^

It's a shame that the 3rd party implementation wasn't implemented to Mono ! As is, we're not even sure that it could work... and it means that I should recompile mono with this add to make it works, Am I right ? :S

Your last option seems to be the best for the project, I agree with you... ^^ But I'm not sure if it's a good idea to tell this now to my supervisor..! (he gave me the Raspberry, and from that I had to find the softwares to use to make a BIG HMI).


AabeckControls

  • Full Member
  • ***
  • Posts: 193
    • View Profile
Re: The How and Why of AdvancedHMI Licensing
« Reply #7 on: March 12, 2017, 08:33:50 PM »
I think an improvement on bachphi's idea is to have a separate screen (page 2?) that is a full screen dedicated to AdvancedHMI with info and details.
Then require somewhere a FormChangeButton to it.

Or require MainForm to be a splash screen with the logo and required information then have a FormChangeButton to go to the running application.

newtwp

  • Newbie
  • *
  • Posts: 1
    • View Profile
Re: The How and Why of AdvancedHMI Licensing
« Reply #8 on: March 03, 2018, 02:37:13 AM »
Hello
First I would like to write that you make a excellent job with Advanced HMI.

I want to ask about licensing:
I want to write module to our system in company (system is not GPL licensed). But module is separeted library which communicate with system by interface (in modules i can use communication with database and commands of main system). The library is added to system list and is loaded to system when operator activate it. And my question is  - can i write module like this or i have to write separated program? Of course the project of library will be added to project Advanced HMI.

Thanks for all answers.
Best regards

Archie

  • Administrator
  • Hero Member
  • *****
  • Posts: 5260
    • View Profile
    • AdvancedHMI
Re: The How and Why of AdvancedHMI Licensing
« Reply #9 on: March 03, 2018, 10:50:58 AM »
I want to ask about licensing:
I want to write module to our system in company (system is not GPL licensed). But module is separeted library which communicate with system by interface (in modules i can use communication with database and commands of main system). The library is added to system list and is loaded to system when operator activate it. And my question is  - can i write module like this or i have to write separated program? Of course the project of library will be added to project Advanced HMI.
The primary points of the license is to pass the final solution to the end user so they can continue to make changes and also to include all of the original components. It is considered acceptable to add your own libraries to the solution in the form a of DLL as long as the DLL is included with the project source to allow the end user to re-compile without errors.

TheColonel26

  • Newbie
  • *
  • Posts: 25
    • View Profile
Re: The How and Why of AdvancedHMI Licensing
« Reply #10 on: March 29, 2018, 07:58:09 AM »
Quote
How is AdvancedHMI licensed?

    A: In summary, the freely available version can be used and distributed without fees. The project is under GPL which means projects you develop and distribute to end users must make source code available to them. The graphics are copyrighted and can only be used in AdvancedHMI projects. The DLLs can be distributed with projects, but can not be separated to be used in applications other than AdvancedHMI.

    We do not allow the use of the base components to be used in any other software packages, however if you are interested in the controls, we develop custom versions to be used in your own software packages. Eventually we will also license the communication drivers to be used outside of AdvancedHMI. You may contact us for information.

So what is the definition of "base components"?

There are 3 projects that come with AHMI source AdvancedHMI, AdvancedHMIControls, and AdvancedHMIDrivers. Then the AdvancedHMIControls and and AdvancedHMIDrivers projects both reference "MfgControl.AdvancedHMI.Controls" and "MfgControl.AdvancedHMI.Drivers" which are compiled assemblies with no source available. Can the AdvancedHMI and the AdvancedHMIControls project be removed

Archie

  • Administrator
  • Hero Member
  • *****
  • Posts: 5260
    • View Profile
    • AdvancedHMI
Re: The How and Why of AdvancedHMI Licensing
« Reply #11 on: March 29, 2018, 08:14:03 AM »
So what is the definition of "base components"?

There are 3 projects that come with AHMI source AdvancedHMI, AdvancedHMIControls, and AdvancedHMIDrivers. Then the AdvancedHMIControls and and AdvancedHMIDrivers projects both reference "MfgControl.AdvancedHMI.Controls" and "MfgControl.AdvancedHMI.Drivers" which are compiled assemblies with no source available. Can the AdvancedHMI and the AdvancedHMIControls project be removed
The base components is everything that comes with the original download. The AdvancedHMIControls and AdvancedHMI projects cannot be removed. The reason being is that if someone else looks at or modifies the application, they will see a "crippled" version and judge AdvancedHMI as being very limited.

TheColonel26

  • Newbie
  • *
  • Posts: 25
    • View Profile
Re: The How and Why of AdvancedHMI Licensing
« Reply #12 on: March 30, 2018, 04:52:49 PM »
So why does the License and Usage file state the AHMI is released under the GPL? The restriction from removing components from the source are a violation of the GPL. You can modify the the wording of the GPL all day long, but when you add more restriction it ceases to be the GPL and is no longer compatible with other GPL software. This means that you can not use any other GPL software in a project with AHMI. Otherwise you would be violating the license agreements of other software packages. You can use it with Mozilla, MIT, Free license software, but not with GPL.

Archie

  • Administrator
  • Hero Member
  • *****
  • Posts: 5260
    • View Profile
    • AdvancedHMI
Re: The How and Why of AdvancedHMI Licensing
« Reply #13 on: March 30, 2018, 06:02:16 PM »
So let me explain this in another way.

1) All of the *.vb and *.cs files found in the AdvancedHMIControls, AdvancedHMIDrivers, AdvancedHMI, and AdvancedHMIcs projects are GPL v3 licensed.
2) The support files of MfgControl.AdvancedHMI.Drivers.dll and MfgControl.AdvancedHMI.Controls.dll are classified as "System Libraries" that "serves only to enable use of the work with that Major Component"

The support files are licensed for use within and only within a complete AdvancedHMI base package at minimum. Therefore the project is GPL code that can include other GPL code.

If you remove both support DLL files, then you are no longer bound to their licensing and will be operating strictly under a GPL license in which you are then free to remove anything you wish from the solution.
« Last Edit: March 30, 2018, 06:04:11 PM by Archie »