B4J Library MashPlugins are in violation with the ABM License Agreement

Status
Not open for further replies.
MashPlugins is in clear VIOLATION of the ABMaterial LICENSE AGREEMENT!

I was very interested in how MashPlugins tackled the grid problem. To my surprise, after investigating the source code (which I was given by Mashiane a couple of weeks ago in view of a cooperation to build a designer), the source code looked almost exactly like my original ABM Java code! Up to the naming of my protected variables, which cannot be accessed by 'normal' use of the ABM library.

So this can only mean one thing: Mashiane has Reverse Engineered the ABM Library, while the license agreement clearly states:

2. YOU MAY NOT COPY, SUB-LICENSE, REVERSE ENGINEER, DECOMPILE, DISASSEMBLE, OR MODIFY THIS LIBRARY IN ANY WAY.

Just one of the many examples:

Original ABM library Java:
B4X:
protected String GridBaseId="R"; // cannot be seen from outside the library, unless decompiled!

public RowDef AddRow(int numberOfCells, boolean centerInPage, String rowThemeName, String cellThemeName) {
       RowDef rowDef = new RowDef();
       rowDef.NumberOfrows = 1;
       rowDef.CenterInPage = centerInPage;
       rowDef.MarginTopPx=0;
       rowDef.MarginBottomPx=20;
       rowDef.ThemeName = rowThemeName;
       switch (numberOfCells) {
       case 1:
       case 2:
       case 3:
       case 4:
       case 6:
       case 12:
           int sizeCells = 12/numberOfCells;
           rowDef.AddCellsOS(numberOfCells, 0, 0, 0, sizeCells, sizeCells, sizeCells, cellThemeName);
           break;
       default:
           BA.Log("numberOfCells can only be: 1, 2, 3, 4, 6 or 12");
       }
       Rows.add(rowDef);
       return rowDef;
}

B4J Mash Plugins:
B4X:
Private GridBaseId As String = "R"

Sub AddRow(numberOfCells As Int, centerInPage As Boolean, rowThemeName As String, cellThemeName As String) As MashGridRow
   Dim grdRow As MashGridRow
   grdRow.Initialize
   grdRow.NumberOfrows = 1
   grdRow.CenterInPage = centerInPage
   grdRow.MarginTopPx = 0
   grdRow.MarginBottomPx = 20
   grdRow.ThemeName = rowThemeName
   Select Case numberOfCells
       Case 1:
       Case 2:
       Case 3:
       Case 4:
       Case 6:
       Case 12:
           Dim cnt1 As Int = 12 / numberOfCells
           grdRow.AddCellsOS(numberOfCells, 0, 0, 0, cnt1, cnt1, cnt1, cellThemeName)
       Case 5:
       Case 7:
       Case 8:
       Case 9:
       Case 10:
       Case 11:
       Case Else
           Log("numberOfCells can only be: 1, 2, 3, 4, 6 or 12")
   End Select
   Rows.add(grdRow)
   Return grdRow
End Sub

So MashPlugins is the result of THEFT and anyone using it is considered doing the same.

Consequences of this unfair use of ABMaterial results in the following:

1. Anyone using MashPlugins is immediately revoked of its ABM Donator Rights
2. ABM 4.25+ can break any program using MashPlugins and make it unusable in the future.
3. ABM 4.25+ WebApps using MashPlugins will show a message to the user that is using the illegal MashPlugin library

@Mashiane I am clearly VERY DISSAPOINTED! Really Mashiane, how could you? I gave you in confidence the un-obfuscated version of my development version of ABM but I never expected this. It is a slap in the face for the tens of thousands of hours I've put in ABM. I should've been suspicious when in our cooperation project for the designer, you quickly mentioned stuff like 'we could parse and reverse engineer', on which I immediately replied 'I don't like those terms'. I am probably to naive and some people just don't have the imagination to create something original I guess...
 

jahswant

Well-Known Member
Licensed User
Longtime User
I am clearly VERY DISSAPOINTED! Really Mashiane, how could you? I gave you in confidence the un-obfuscated version of my development version of ABM but I never expected this. It is a slap in the face for the tens of thousands of hours I've put in ABM. I should've been suspicious when in our cooperation project for the designer, you quickly mentioned stuff like 'we could parse and reverse engineer', on which I immediately replied 'I don't like those terms'. I am probably to naive and some people just don't have the imagination to create something original I guess...

Sans polémiquer... Je dirait que B4J Mash Plugins a prospéré a cause du manque de compréhension réel d'un petit nombre utilisateurs qui veulent un concepteur graphique pour leurs pages web. Je pense sincèrement que tu devrais te pencher sur ce module qui rendrait plus complet ta biblio qui est déjà exceptionnel il faut l'avouer, au risque d'attirer des hantises inutiles. C'est le meme cas pour [Pen&Paper].

Without arguing ... I would say that B4J Mash Plugins has flourished because of the lack of real understanding of a small number of users who want a graphic designer for their web pages. I sincerely think that you should look into this module that would make more complete your library which is already exceptional it must be admitted, at the risk of attracting unnecessary hauntings.This is the same case for [Pen & Paper].
 

incendio

Well-Known Member
Licensed User
Longtime User
My sympathy for you.

Please forgive me, I saw he/she has a lots of plugins, which one violated your license ?
All or just plugin related with grid?

I have been busy so no time to explore ABM yet, just need to know which plugins should avoid when get active again to explore ABM.
 

DonManfred

Expert
Licensed User
Longtime User
1. Anyone using MashPlugins is immediately revoked of its ABM Donator Rights
2. ABM 4.25+ can break any program using MashPlugins and make it unusable in the future.
3. ABM 4.25+ WebApps using MashPlugins will show a message to the user that is using the illegal MashPlugin library

@Mashiane I am clearly VERY DISSAPOINTED!

I fully agree with your post. Time to upgrade to V4.25+ :D
 

jahswant

Well-Known Member
Licensed User
Longtime User
MashPlugins is in clear VIOLATION of the ABMaterial LICENSE AGREEMENT!
My sympathy for you.

Please forgive me, I saw he/she has a lots of plugins, which one violated your license ?
All or just plugin related with grid?

I have been busy so no time to explore ABM yet, just need to know which plugins should avoid when get active again to explore ABM.
 

alwaysbusy

Expert
Licensed User
Longtime User
I would say that B4J Mash Plugins has flourished because of the lack of real understanding of a small number of users who want a graphic designer for their web pages
This doesn't give anyone the right to steal code. And MashPlugins do not help those people who do want a graphic designer (they have to be added like any ABM component, by code). For almost a month, I've been looking into some way to make a graphic designer for ABM and the cooperation with Mashiane & Cableguy looked promising as they would help me with it. I was investigating (and starting to write) special ABM methods to enable this (for responsive Web Apps, a simple designer cannot cover all features ABM offers).

Please forgive me, I saw he/she has a lots of plugins, which one violated your license ?
All or just plugin related with grid?
I still have to further investigate this, but it will take some time (I have bed rest, as I had a small hart-attack last Saturday, unrelated). Until further notice, the whole MashPlugin library violates the License Agreement. I'm cool with controls that use ABMCustomComponent (that is exactly why it was build for). I gave her tips on how to speed them up (as some are quite a mess, loading the same js/css libraries multiple times hence slowing down ABM considerably). But with MashGrid/MashGridRow/MashGridCell, this is something else completely. This is simply a translation of my Java code to B4J code, not even adding extra value. The big problem with Mashiane is, you give her an inch and she takes a mile (this is not the first time). So now I have no idea how I could trust such a person anymore.

I'm really sorry such a good ABM year has to end like this. :(
 

mindful

Active Member
Licensed User
Well things happen with the kind of people that aren't able to think it's project logic and want fast inspiration from another ones. I really don't get why most of abmaterial users and not only them want a visual designer, as this will not help your life as a programmer/hobbie in the future and ABMaterial wasn't created with the ideea to have a designer from the begging - this doesn't mean it isn't possible to have one.

Because if you do not understand how some thing works for sure you will be saying that the thing lacks something. So this is a message to everybody -> Nothing it's easy to create by copy pasting code without the understanding of how it works.

Now regarding the ABMaterial framework I think it provides exactly what it needs to provide and even more beacuse it was intendent to be a GUI framework but does more than that and there are a lot of examples on how to do something. When you first find ABMaterial and you can't code in html/css/js you think you have won a golden medal, but @alwaysbusy created a framework that will evolve and will be extended not only for people that want the easy stuff (add a button and that's it) so anyone who want to do more with the framework had all the tools to do it or if you haven't got the tools to implement your ideea all you had to do is post a wish and provide somekind of logic on how it will help and for sure @alwaysbusy would have looken into that.

I didn't use any @Mashiane plugins and always wondered what are their uses... because you can easly create most of them if not all of them with abmaterial... anyway this is just my opinion...

So @alwaysbusy keep on the good work and do not let things like this set you back or at least try not to because there are other people that have understood how much work you put into this framework!
 

Harris

Expert
Licensed User
Longtime User
So @alwaysbusy keep on the good work and do not let things like this set you back

2017 was a great year for ABM. Look how far we have come! It will be even better in 2018 I predict.
I do hope and expect @Mashiane will step up and "do the right thing". A sincere apology would be a good start... to you and the community.
 

incendio

Well-Known Member
Licensed User
Longtime User
This doesn't give anyone the right to steal code. And MashPlugins do not help those people who do want a graphic designer (they have to be added like any ABM component, by code). For almost a month, I've been looking into some way to make a graphic designer for ABM and the cooperation with Mashiane & Cableguy looked promising as they would help me with it. I was investigating (and starting to write) special ABM methods to enable this (for responsive Web Apps, a simple designer cannot cover all features ABM offers).


I still have to further investigate this, but it will take some time (I have bed rest, as I had a small hart-attack last Saturday, unrelated). Until further notice, the whole MashPlugin library violates the License Agreement. I'm cool with controls that use ABMCustomComponent (that is exactly why it was build for). I gave her tips on how to speed them up (as some are quite a mess, loading the same js/css libraries multiple times hence slowing down ABM considerably). But with MashGrid/MashGridRow/MashGridCell, this is something else completely. This is simply a translation of my Java code to B4J code, not even adding extra value. The big problem with Mashiane is, you give her an inch and she takes a mile (this is not the first time). So now I have no idea how I could trust such a person anymore.

I'm really sorry such a good ABM year has to end like this. :(
Get well soon.
No need to hurry, take care your health is the most important thing.
 

vfafou

Well-Known Member
Licensed User
Longtime User
Oh, no!
I'm really disappointed too!
And just a few days ago I donated Anele to send me the components in order to see and get ideas for the GUI of a new app I'm starting!
Alain, I've deleted them right after I've read your post and I've decided that I will go side by side with your development and updating road!
Keep on your amazing work...
And find some time to relax! ;)
 

alwaysbusy

Expert
Licensed User
Longtime User
Alain, I've deleted them right after I've read your post
No need for that. There are also some good examples in there on how to use an ABMCustomComponent to create your own components which are a good tutorial. Those things are allowed (I've created ABMCustomComponent for that reason) and one should be able to add custom components in it. It really is the break of trust by reverse engineering ABM that is unacceptable for me. What would've been the next 'innovation' MashPlugins would introduce and that Mashiane would've been 'so proud of'?
 

Cableguy

Expert
Licensed User
Longtime User
important things first, I hope you will fully recover from your "small heart-attack" and that it leaves no sequels.
As for Mash Plug-Ins, it is indeed an unexpected discovery that changes a lot the consideration I had towards her.
I am still willing to help on the creation of a designer
 

Mashiane

Expert
Licensed User
Longtime User
I'm speechless...

For the past couple of weeks I have been working on MashPlugIns, mostly components that I will use in developing a huge project management application that I have been commissioned to work on. This has been a light at the end of the tunnel as I have been awaiting for that moment for a while now due to my unemployment status.
ABMaterial provided me a platform to create Magic and thus me embarking on building components that will enable me to do that. At the moment about 90% of those components that are in version 1.06 are in the pipeline of implementation on that project.

Yes, the road has not been easy as our start with you was very rocky up until we started discussing a designer based on @cableguys request. That was good. You coached us and gave us a lot of advise and we were working on it smoothly. Whilst views about the designer may differ with many, I am still of the opinion that such will be valuable to beginners of this framework.

What has driven me to create MashPlugIns? First I would say the passion and mostly love for what ABMaterial is. It has been that drive that I have spent countless hours creating stuff that I can use and also what other people can use. The reason they came into being is because I wanted a platform based on already existing methodology of creating ABMCustomComponents in addition to what is available so that my dream of this project management webapp comes into life. I have had no better bargain other than the wellbeing of ABMaterial because everything that I have created around this framework has been about pushing your agenda forward. It seems I have been very wrong.

If creating ABMaterial Webapps with Pen & Paper and availing it to others in support of your framework is crap then I am guilty.
If creating MashPlugIns to enhance ABMaterial and support your framework is crap then I am guilty.

My intensions in anyway are not to harm you or anything ABMaterial however have been to add to this valuable framework. It seems like in every turn I seem to end up causing you harm. I don't see any reason I would have to stab you in the back, why would I do that?

To regress a little, when I created an icon picker for Pen & Paper, I studied how the b4j icon picker worked and replicated it also grouping some of the mdi icons for ease of icon pickup. Why did I do that? Because it was the best approach to follow and easier to use. I followed best practise and thus availed something people are already familiar with.

PenNPaperIconPicker.png
b4jIconPicker.png


ABMaterial is built on best practise and there is nothing like it in the world, thanks to YOU. That is why I have enjoyed being part of this family and also to help it do what? Grow. Yes, as much as I have written articles in here about its usage and everything else, my dreams have been about me doing something with it that will add value to people I live with and to the world at large.

What do people see when looking at [ABMaterial]: MashApplePanel? They see everything and anything related to ABMaterial about a MashApplePanel, thus in me doing that I am pushing all the way that people get exposed to your framework and also see what other people like me are doing and also use these components? Am I being fair or doing these components out of wanting to destroy your baby and your dream and out of malice? I don't think malice is in that. Why would I spend all of my time in doing this if it wasnt for the good of your framework and this community?

Yes, you explained to me what happened in your business and I was hoping that with the working on the designer we would build on what was starting to be lovely. I guess not. I wish you could understand that I have not been here to steal anything from you. The MashPlugIns have been about components that I and other people can use in creating their ABMaterial WebApps and I am proud to have been part of this.

With your permission, you allowed me to receive donations from people for the source code of MashPlugIns. Initially I had set this to be $1 however you advised of between $10-$15 with the option of getting the source code for donators as you were thinking of my wellbeing.. I have counted all donations received so far to be less than $60. I will refund all the 5 or so people who have donated and am attaching version 1.06 of the MashPlugIns source code here as a result which does not include any grid/row/cell needed things.

MashPlugIns 1.06 source code


Yes, there is nothing new about the MashPlugIns. Its a collection of CSS and some HTML here and there using the HTMLElement class I created, so anyone can even do more with them. On the question of whether it was necessary to follow your best practise in creating the last 3 components (MashGrid/MashGridRow/MashGridCell) added to version 1.07, I would say yes. You are good and are the best at this and you are bound to have followers. Perhaps I am obsessed too much with ABMaterial thus me spending most of my time in it. It is not without its merits though.

All over the internet in all the frameworks that everyone is talking about, it all comes back to the grid as everything is placed there, whether its bootstrap, reactjs, skeleton, w3.css etc etc, and ABMaterial has the best implementation of the grid for purposes of B4J and ABMaterial and anything along the lines of creating other webapps that follow a grid methodology? If you recall, when I started ReAct Bootstrap which also uses a grid, you cautioned me on the legal implications of using ReAct of which later facebook made their licenses MIT for it. I havent explored that further though. I know you advised me to perhaps work on a Bootstrap framework that will follow the same webapp approach that b4j is using. Perhaps one day, I have been more passionate about the value that I have been adding to your framework.

Honestly, my next best thing would have been to write a book on ABMaterial and ask you to review it and publish it. It's a sad dream and reality.

Alain, with due respect, in every turn, I seem to do you more harm than good in your eyes. I understand there is no way for you to have trusted me or you will trust me. I don't blame you. Yes, I might have contributed a lot in taking your framework forward, not because you asked me to or needed my help in anyway, but due to its love on my side. I even wrote a CodeProject article on it!!! One of the things I love in this forum is the consolidated creativity of the people that exist here. Yes, all of us at some stage end up creating the same libraries and components based on our own understanding and I would like to believe that such an idea is what we are pushing here, creativity in all respects and also the ability and the opportunity to learn "how stuff works". I don't have intentions of "cloning" your material framework, I would be very foolish to do so.

Yes if it was for me, I would have avoided recreating ABMaterial Components that exist because its a waste of time and energy but when I asked you if you can create an ABMCustomComponent using other existing ABMaterial components, the response was negative due to some event handling mechanism and limitations to Java or something, I don't clearly remember. I would have loved to create all the MashPlugIns using existing ABMaterial components, it would have been a breeze without me re-inventing the wheel.

In creating the 3 components that have caused this un-ease, yes, I followed your approach and only for that. Why? MashPlugIns are created for ABMaterial and as such one needs to be careful in terms of what they expose developers to and also my idea of exposing developers to what they are already used to. For me it would not have made sense to do it any other way because its stable and it works. This was very clear to me when you cautioned me and Paulo when we were discussing the designer as a result you wanted out of the discussions until we agreed because I wanted to follow your advise and approach to the letter in all of it. I am sorry that it seems that my intensions are not-pure and are evil. I just wanted to add value and if i knew how, I could have just used a normal ABMGrid and not rewrite it for the 3 components the grid is used in inside MashPlugIns 1.07.

Without further ado, post #11 of MashPlugIns states...

The current existing "container" custom controls i.e. MashCardPanel and MashRibbon have received a major revamp and thus have containers to add components inside them. At the moment only MashComponents ONLY can be added. This has been possible through exposing the HTML structure of each component to add to the container.

This has adopted the way the ABMaterial Grid functionality works but to a limited extent just to make this to work, this goes the same with the MashContainer it does not have all the bells and whistles like the final ABMContainer.

Kind Regards
 

alwaysbusy

Expert
Licensed User
Longtime User
THIS is why I'm unhappy, Anele.

Not with the expansion pack you wrote, we came to an agreement on this indeed and I was happy to help you when I heard about your unemployment problem.
Not with you wanting to follow ABMs programming practices either, because that would flatter me.

But can't you really see what is wrong with this picture? How did you come up with this code? Was 'var sty' really exactly the same variable name you picked? Or did you use a tool to reverse engineer ABMaterial.jar, peeked in it and just plain 'translated' it in your library?

Original ABM library Java code:
B4X:
StringBuilder s = new StringBuilder();
s.append("var head = document.getElementsByTagName('head')[0];");
s.append("var sty = document.getElementById('" + ID.toLowerCase() + "-css');");
s.append("if (sty) {");
s.append("sty[0].innerHTML=\"" + CSS.replaceAll("\"", "'").replaceAll("\t", " ").replaceAll("\r",  "").replaceAll("\n",  " ") + "\";");
s.append("} else {");
s.append("var s = document.createElement('style');");
s.append("s.setAttribute('type', 'text/css');");
s.append("s.setAttribute('id', '" + ID.toLowerCase() + "-css');");
s.append("if (s.styleSheet) {");
s.append("s.styleSheet.cssText = \"" + CSS.replaceAll("\"", "'").replaceAll("\t", " ").replaceAll("\r",  "").replaceAll("\n",  " ") + "\";");
s.append("} else {");
s.append("s.appendChild(document.createTextNode(\"" + CSS.replaceAll("\"", "'").replaceAll("\t", " ").replaceAll("\r",  "").replaceAll("\n",  " ") + "\"));");
s.append("}");
s.append("head.appendChild(s);");
s.append("}");

Your library code:
B4X:
Dim s As StringBuilder
s.Initialize
s.append("var head = document.getElementsByTagName('head')[0];")
s.append($"var sty = document.getElementById('${cID.toLowerCase}-css');"$)
s.append("if (sty) {")
s.append($"sty[0].innerHTML='${cCSS}';"$)
s.append("} else {")
s.append("var s = document.createElement('style');")
s.append("s.setAttribute('type', 'text/css');")
s.append($"s.setAttribute('id', '${cID.tolowercase}-css');"$)
s.append("if (s.styleSheet) {")
s.append($"s.styleSheet.cssText = '${cCSS}';"$)
s.append("} else {")
s.append($"s.appendChild(document.createTextNode('${cCSS}'));"$)
s.append("}")
s.append("head.appendChild(s);")
s.append("}")

This for example is some code I really had to think very hard on to make this work, especially the while (cell!=null) loop. Do you even understand why this code works? By the way, this solves the indefinite chain problem for adding cells to a row.

Original ABM library Java code:
B4X:
CellDef cell = row.cellDef;
int cCounter=1;

while (cell!=null) {
        for (int j=0;j<cell.NumberOfCells;j++) {                          
              ...            
        }
        cell = cell.cellDef
}

But, by miracle, you just happen to have exactly the same idea on how this could work:
Your library code:
B4X:
Dim cellDef As MashGridCell = grdRow.cellDef
cellDef.ClearContents
Dim cntCells As Int = 1

Do While (cellDef = Null) = False
      Dim cellCnt As Int
      For cellCnt = 0 To cellDef.NumberOfCells - 1
               ...   
      Next
      cellDef = cellDef.cellDef
Loop

Be at least honest about that...
 
Last edited:

hibrid0

Active Member
Licensed User
Longtime User
Hi guys, I see an small war for not understand each other.
On the first time ABMaterial is not licensed on Open Source License, Mashiane like too much ABMaterial and maybe she help in other Open Source projects.
And she not understand the limits with licenses.
Now AlwayBusy like the OpenSource, but if is from others.
We are talking about licenses and where is the ABMaterial License?
Now with the problem on your Heart maybe you will think if want to do ABMaterial more bigger than your EGO (Release on OpenSource for example) or continue with closed code.

I dont use anything from Mashiane, but I see the components on the forum and I see the hard work.

ABMaterial is not open source, maintained by one person (Yes good developer), maybe this will a big warning to stop the use of ABMaterial.
What happen if with ABMaterial the AlwaysBusy hert fail more? Instant stop of continue the project.
Time to learn options with more support, Node.JS, ExpressJS, ReactJS etc.
 

Peter Simpson

Expert
Licensed User
Longtime User
Hey, I thought that @Mashiane was a guy with a tosh, thin designer beard and wears glasses, and no I'm not joking either.

Anyway get well soon @alwaysbusy, just chill out and relax with a nice hot chocolate drink, or coffee, it's up to you :)
Actually take in a movie or two, or ten. Just try not to think too much about this as you'll your energy to recover properly. Stress is not good for you at present, any stress will just prolong the recovery process. And if you have a stents, eat healthily and you will be just fine...

What a joker...
Now with the problem on your Heart maybe you will think if want to do ABMaterial more bigger than your EGO (Release on OpenSource for example) or continue with closed code.

ABMaterial is not open source, maintained by one person (Yes good developer), maybe this will a big warning to stop the use of ABMaterial.
What happen if with ABMaterial the AlwaysBusy hert fail more? Instant stop of continue the project.
Time to learn options with more support, Node.JS, ExpressJS, ReactJS etc.

Are you hmm, I better keep it calm and clean here. Right lets start again.
Are you kidding me with a comment like that, encouragement is what he needs right now, not put downs???

Yes hibrid0 has just been added to my ignore list...
 
Last edited:

incendio

Well-Known Member
Licensed User
Longtime User
ABMaterial is not open source, maintained by one person (Yes good developer), maybe this will a big warning to stop the use of ABMaterial.
What happen if with ABMaterial the AlwaysBusy hert fail more? Instant stop of continue the project.
Time to learn options with more support, Node.JS, ExpressJS, ReactJS etc.
Caused time limited, right now, temporary not use ABMaterial, but no way I will stop using it even if the project stop in the future.

If in the future, the project stop, I will still use the latest one and try to work around if something unable to handle by ABM.

Do you realized that this is a great project and it is free, right?
 

alwaysbusy

Expert
Licensed User
Longtime User
Just to clarify: since the beginning of ABM I've send over the complete source code of ABMaterial to Erel ('the vault') every now-and-then. So if anything happened to me, and there is a community need, he'll be free to do with it how he sees fit. That is the amount I care and try to think ahead so no user of ABM would ever come in trouble. I hope this can reassure everyone who has doubts in starting to use ABM (which I completely understand).
 
Status
Not open for further replies.
Top