Redhuan D. Oon
2011-10-12
It seems that it is happening to me too http://adempiere.hg.sourceforge.net/hgweb/adempiere/adempiere/file/16a9d4709ea6/migration/360lts-370lts/postgresql/802_FR2979756_JavaPOS.sql if you follow this and other files after it, the original author which is supposed to me is now different:
vpj-cd victor.perez@e-evolution.com
Thu Sep 01 14:11:36 2011 -0500 (5 weeks ago)
My original work was done here (note the time difference):
Revision: 16031
http://adempiere.svn.sourceforge.net/adempiere/?rev=16031&view=rev
Author: red1
Date: 2011-08-13 16:26:48 +0000 (Sat, 13 Aug 2011)
If this is an honest mistake, please rectify. And reciprocate for all others done as there is much work over time. (for example: http://red1.org/adempiere/viewtopic.php?f=32&t=1373)
Redhuan D. Oon
2011-10-12
I think it is automatic to whoever is committing it, s/he is the 'author' of the commit, thus it must be an honest mistake and it cannot be rectified as above. In such case, wouldn't it be appropriate to put in comments of the origin of the code or work?
A simple :
-- Thanks to <author> <revision ###> in <branches/JavaPOS>
at the first line of each file will do.
I thought this is in the Best Practice - to give rightful credit to rightful contributor(s).
Tobias Schöneberg
2011-10-12
Hi red1,
About the "Author"-label, I think it would be better, if it said "Committer", rather than "Author". Then it would be more clear that Victor merely integrated your work into the branch, but is not the origninal author.
I made a quick check of hgweb (the SF HG-Browser), hg-commandline, tortoise-hg and hg-Eclipse-Plugin, to find out, how the committer of a change is called there:
*hgweb: "Author" (as pointed out by you)
*tortoise-hg: also "Author"
*hg-commandline: "User"
*hg-Eclipse-Plugin: also "User"
So, it is never called "Committer", which I think is a pity.
In such case, wouldn't it be appropriate to put in comments of the origin of the code or work?
My suggestion would be that the actual author should put this information into the file. Just as is the case with java files.
Otherwise, integrating/merging would become rather burdensome.
wdyt?
Best Regards
Tobi
Tony Snook
2011-10-12
Hi Red1 and Tobi,
There are ways to get around this issue depending on the source of the original code and how the code is committed. For example: if you import a patch which has the original author specified into your local repository and then push this to a remote repository, the original author is preserved.
The original author can also be specified directly by using the -u or -user option in the hg command line i.e. hg commit -u "red1" -m "FR1234…."
The Eclipse plug-in has a freely editable text box labelled "User to record as the committer" and TortoiseHG has a field called "Committer" in their respective commit dialog.
Best Regards,
Tony (tspc)
Carlos Ruiz
2011-10-12
This is not a honest mistake, this is repetitive behavior from the same person on a case that was filed to CC and discussed.
But - what you can do when the person that must enforce the rules is breaking them? I'm not committing here, but I'm glad to keep being the top contributor - I just ask to give proper credits when taking my code.
IMHO this is the only thing important in open source, you're giving all your work for free, is very *very* concerning when you found somebody removing your author name.
http://buddydev.com/buddypress/opensource-vs-code-stealing/
The first case reported by red1 here:
http://red1.org/adempiere/viewtopic.php?f=32&t=1373
Is not a mistake in the commit, it was a pretty clear intentional removing of the author name from a java file (funnily the "contribution" made that class worst than the original as Karsten noted in a forum message)
In the case of red1 scripts, as Tony noticed there are lots of possibilities to keep the author's name, hg is not intended to keep the committer name (as svn did) but the author, and this becomes important when confronting IP issues.
_____________
Why I say repetitive behavior?
Because I filed a complain about this behavior on december 7/2010 - I needed to push hard CC to even review the case and finally it was "supposedly" discussed on feb 2/2011 here:
http://www.adempiere.com/CC_meeting_minutes_20110202#Request_from_Carlos
The action promised there was never taken and the same behavior is being repeated by the same person.
Please note also that before filing a complain I made several friendly calls, you can read my last comment in these tickets:
http://sourceforge.net/support/tracker.php?aid=3116131
http://sourceforge.net/support/tracker.php?aid=2945715
http://sourceforge.net/support/tracker.php?aid=3110938
http://sourceforge.net/support/tracker.php?aid=3090719
__________
Carlos Ruiz
Redhuan D. Oon
2011-10-13
Thanks Tobi and Tony for your replies explaining that this can be solved by some settings or commit properties. Thinking back i should make some small comment on my work in the migration script itself, but this was not the practice usually as previously we commit directly to trunk and now today it is done via a PMC or maintainer. In Carlos Ruiz kenai repo and also Heng Sin's repo, they also commit work on behalf but our credits are intact and thus i forgot that it is not so in standard SF commit and thought that my name was intentionally replaced. I now believe it is an honest mistake and hope that the proper setting properties can be used as done by Carlos and Heng Sin.
I actually see Carlos Ruiz distress over his rightful credit as as definitely more serious than mine. What is rightful is important, particularly to protect freedom. But someone should speak up for him. He is not always politically correct when speaking. :)
Carlos Ruiz
2011-10-13
Redhuan, PMC/TT/CC/etc are not interested on reviewing this case - if I would do something similar then a case will be started to expel me, but we cannot wait that CC will investigate this *repetitive* case of stealing credit from others.
When I filed the case on CC, I must push CC to review it and practically I must solve it by myself proposing a solution, and they just annotated the "solution" on a meeting note and didn't take any action after that.
So, the work you used to do (protect contributors) is lost here - I guess I'll need to review the previsions of the GPL about these practices and review if we can stop Victor from stealing.
__________
Carlos Ruiz
Redhuan D. Oon
2011-10-13
No confidence in PMC.
+1 vote
Greetings from Landshut,
70km from Munich,
Germany
Michael McKay
2011-10-14
To the community at large on behalf of the Technical Team,
Concerns over recognition for contributions are important and not really in question. The ADempiere project has a long history of recognizing contributions of all kinds and this will continue.
For this case, the Technical Team has taken these matters seriously and analyzed the issue. Here are the results.
Old method: SVN
In the past, we worked with SVN, a centralized Source Code Control System (SCCS).
In SVN, when a developer thought to have a bug fix, functionality, module etc. he simply committed it; his changes landed directly in the trunk. Without careful management of the trunk, the code quality can be easily damaged.
One big disadvantage of SVN is that it cannot depict the changes done to a single file, because it only documents revisions and the files involved. Discovering the extent of the revision requires additional work.
SVN documents the committer of a revision, independently of who was the author: often the commit originated in a bug tracker, with a suggested fix by a different person than the person who performed the commit of the code.
In SVN, the revision appears to be authored by the developer who did the commit, not necessarily to the developer who provided the fix.
With centralized control over the repository, a few committers appear to have made many contributions while others appear to have none regardless of contributions of fixes and features through the tracker.
Now we have Mercurial
Mercurial is a distributed SCCS, where developers send changesets from clones to specific branches in the central trunk in order to be compared and tested before being committed. This is a big advantage, because it overcomes the above mentioned systematic error sources of SVN.
Mercurial documents any change of a file, being it the creation of a file, modification, renaming or moving of it. It is also possible to "trasplant" changesets from other Mercurial repositories, which allows the inheritance of the changes history of every file of the changeset. Thus, every file can be tracked down from the actual version to its origin. The change on top is the latest.
Like in SVN, the actual author of the file is a dimension Mercurial ignores, because it only knows the committer.
For an example, see the file ReportStarter.java (image below) where nearly every committer in the project has made a change to the file over the last five years. I'm currently listed as the “author” / committer when the change was two characters in the file.
The Present Case
In the specific case referenced in this thread, red1 created several SQL files and committed them to the old Adempiere SVN repository in revision 16031 on 13 August 2011 as mentioned above.
globalqss created a Mercurial repository for the files outside of Adempiere. Red1's involvement with the file was not recorded at in the move to the new repository.
Victor "trasplanted" the files to the official repository and renamed them because the original names (there were SQL files for the java POS) collided with the SQLs sequence at the official Adempiere repository.
Mercurial has kept the history of all stages of the file from the time the file was added to the initial Mercurial repository to the latest name change.
Accordingly, the last change (renaming of the file) appears on top when seeing the file. Examining the history of the file, one can see who originally created it and when. See the second attached image below.
Summary
In short, Victor acted honestly and correctly, and there is nothing to blame him for.
The committer of the revision should not be confused with the original author or the person responsible for the changes included with the revision as the two functions (author/commiter) are not necessarily related.
Files transplanted from SVN to Mercurial may lose their history unless every change to the file is also transplanted.
Recognition for the latest contributions must be included in the revision, in the notes to the revision or in the trackers/patches referenced in the notes or it will be lost.
Recognition for past contributions, even ones that are deleted or over written, will be preserved in the revision history if the above points are followed.
Lessons Learned for the Community
Information reduces conflict. A thorough and cautious investigation can uncover facts and details that lead to understanding.
Goodwill can be assumed in almost all cases. We need tolerance and understanding to work as a large group.
Again, developers in this project should feel that, fundamentally, their contributions are respected, desired and recognized.
So say we all.
***************
The history of the ReportStarter.java file.

The history of the sql file originally created by Red1.

Carlos Ruiz
2011-10-14
Michael - I think if you're really trying to take this seriously you must at least ask the person making the claim - I've never been asked about.
There are a lot of misinformation on your answer, for example that mercurial records the committer - no, mercurial is intended to record the author, and you must fill properly the author box (this is specially important for IP issues).
Second, you don't say a word about the initial case reported by red1 here:
http://red1.org/adempiere/viewtopic.php?f=32&t=1373
MY NAME WAS CLEARLY DELETED FROM A JAVA FILE, AND REPLACED BY THE NAME OF ANOTHER DEVELOPER.
( funnily the class behaves worst because of this "contribution", but anyways I think the ORIGINAL AUTHOR must be preserved in code - there are previsions about that in the GPL !!! )
So, if you think that "information reduces conflict" - please try to inform yourself better, I'm open to give you the information you require.
Cordially,
Carlos Ruiz
Banym
2011-10-14
Hi all,
this should be taken quite seriously.
If there are some scripts or code is migrated the source and the author should be named.
Mistakes can be made but mercurial has functionality for this, too. And if it's not easy to handle then just type it as comment in to the files.
Now the problem was raised and in future I hope this will not be happen as this is really the base of nearly all open source licenses to keep the initial author.
Regards,
Dominik
Carlos Ruiz
2011-10-14
Ah, forgot to say:
> "Again, developers in this project should feel that, fundamentally, their
> contributions are respected, desired and recognized."
I don't know if I'm still a "developer in this project" - I try to avoid that - I'm not committing here in this trunk, but I keep being the top committer because of my copied work from iDempiere and globalqss361.
So, as a "developer in this project" I must express that I'm REALLY FAR from feeling respected or recognized. I documented four commits on SVN where the credit was not attributed, even on the comments.
And now in mercurial my name was replaced in a java class, and there are several commits not filling properly the author box.
Hehehe, and I don't know how can I feel "respected" and "recognized" when I have the 26% of the total commits (the max) of version 3.7.0 and every message from CC or ADeV is saying just "please leave the project" :-D Funny, no?
__________
Carlos Ruiz
rsashka
2011-10-14
Hi Carlos
Your comments as always passionate;-) Do not give in to provocations, and be above it. Who would not do that, but hardly anyone to belittle your contribution to the project.
Dear ADeV
I am very hurt to see that for a long time, some people who take responsibility for the development of the project, not doing anything to remedy the situation, but only add fuel to the fire fights. All these arguments cause enormous damage to the reputation of the project. What do you divide? You also completely different regions, and world domination will not be any one of the parties.
Regards,
Aleksandr Ryabikov
Michael McKay
2011-10-15
Guys,
My apologies if anything in what I said above was taken as an attack. That was not my intent at all. It was said to try to foster better relations, not divide, to help, not hurt. I tried to deal only with the facts and to explain the origins of a single file. In this single case, I do not feel anything malicious was done by anyone.
@Carlos, rest assured that I hold you in the highest regard. You have been of great help to me and to others. Your contributions are well recognized. I am sorry that you do not feel this is so.
In regards your comments on Mercurial and the assignment of users, you are correct that this can be done. I'm not sure that it is the best solution. There are limitations where commits cover works by more than one author, for example. It also hasn't been done on all the revisions pulled in from SVN. In these revisions, author might equal committer but not always. The best approach going forward will have to be worked out by all of us.
For the other cases, we will look at them as well in a separate thread. Its time to put this one to bed.
Warmest regards to all,
Mike.
Victor Perez Juarez
2011-10-15
Dear community
AdempiereIdGenerator.java class is the implementation of an interface called IdGenerator dictated by ZK to solve a issue when we try use a Test framework.
My implementation is original and was totally rewritten, a new tracker was created http://sourceforge.net/tracker/?func=detail&aid=3371649&group_id=176962&atid=879332 tracker.
http://adempiere.hg.sourceforge.net/hgweb/adempiere/adempiere/rev/01919bf50f30
you can see that the code is totaly different and that was based on other of my class called PP Product BOM Model, fortunately I forget to remove of comment allow to prove that I say here.
The above behavior does not generate of zk static id for components, the static id for components allows that Sahi Script can be executed recursively but without get a error.
Since the previous behavior does not serve, I made my own research which resulted in this implementation that is based on the recommendations of this forum http://docs.zkoss.org/wiki/How_to_Test_ZK_Application_with_Selenium. This was documented in the comment my class.
The new implementation allows to generate Sahi script for a non-technical user, which is an important advantage given that allow functional consultants to create functional tests without writing a line of code.
This is part of an ambitious enterprise, that Technical and Funcional team have to create ADempiere Test Suite that will allow, together with our continuous integration server the creation of releases more stable with an objective more criterion.
kind regards
Víctor
Redhuan D. Oon
2011-10-15
Hi Michael McKay,
I appreciate your reply and sincerity to answer this and i hope you similarly accept my intent to speak my heart and give my side of the picture.
Now to set some of the facts right. My original script was what it is now as committed by Victor. It was 802_ etc in my branch, but it was renamed first to Pending_ etc and then back to its original name.
Also, wouldn't the effort to resolve follow some sort of simple arbitration rules? Why play advocate and jury and probably executioner behind some curtain when it is quite simple to be procedurally open even in the process of arbitration? I am not accusing you of that but the words you used culminating in the first line at your Summary gave me some impression that thats the verdict and i am bound to accept it as truth. If i am really off the mark, then my apologies.
My presentation of this case also points to earlier references of which the aggrieved person will feel it most. I do not share that person's grieve as much simply because i am not the top contributor of code. However i emphatise strongly with him as if i put myself in his shoes i will feel very hurt, offended and betrayed. And also feel disrespected if in spite of all my efforts to bring to attention my grief which has not received much in fact no attention at all, was asked to stop shouting, flaming, gross mis-advertising and ending with the words, "Please leave".
Can't we calmly assure the person with soothing words, such as "it is regretfully non-intentional and we shall revert it right away. We do honour your work and are unquestionable in our commitment to the open source practice.."?
Yesterday another concerned citizen of our community skype me asking why 'Carlos suspects there is ill-intent towards him'. I replied by asking to put oneself in his shoes as i stated above. And if after filing your case and waiting for some months and when asking again got the authorities upset and talked down to, what will you do? Won't you try to knock harder on the door asking, "Please! I have a valid right to be heard and addressed and deserve justice"? His shouting and reaction should come as no mystery to anyone who has experience trying to claim insurance from a deaf insurance company. Or claiming from an equally deaf neighbour who just dump his trash onto your lawn, many times over the last few years.
Greetings from 6 degrees morning of Landshut, Germany.
Carlos Ruiz
2011-10-15
About Victor post:
> My implementation is original and was totally rewritten
I don't understand your concept of "original" - if some lines below you say also that it was copied from zk forums, and that can be seen from the link you posted.
> The above behavior does not generate of zk static id for components,
> the static id for components allows that Sahi Script can be executed
> recursively but without get a error.
Well, this is another way of stealing credit, this time from old PMC, you overwrote a class that old PMC worked hard to make sahi tests work, and now you're claiming to be the author of such initiative.
Fortunately the old PMC used to document EVERYTHING (very different to behavior of actual teams where external world cannot know what is being discussed or decided).
So, in defense of the hard work made by the old PMC Team, and in order to restore the proper credits to the old PMC please allow me to summarize the story here:
1 - On 20100324 meeting the IDGenerator issue was first raised by Ivan Calderon, and discussed and adviced by Heng Sin:
http://www.adempiere.com/PMC_QA_Meeting_20100324
2 - On 20100421 PMC discussed the changes required for IDGenerator, Ivan Calderon summarized the goal very well:
(03:48:25) interopen: as i understand, with the IDGenerator you force the ids to be always the same no matter what browser you use
http://www.adempiere.com/PMC_QA_Meeting_20100421
3 - On 20100428 the first version of the generator was committed for tests
http://www.adempiere.com/PMC_QA_Meeting_20100428
4 - Then you can see in this *PUBLIC* thread:
https://sourceforge.net/mailarchive/forum.php?thread_name=4BD21666.7090105%40gmail.com&forum_name=adempiere-p-m-c
The work behind the versions of the IDGenerator.
Old PMC worked hard to get a proper version of the IDGenerator and Ivan Calderon used and documented a lot of his sahi work on the wiki.
So, these statements from Victor are very misleading:
> The above behavior does not generate of zk static id for components, the
> static id for components allows that Sahi Script can be executed recursively
> but without get a error.
> Since the previous behavior does not serve
I hope - as discussed in this thread - that is a honest mistake and not a trial to cover, ignore and dismiss the hard work done by old PMC.
____________________
Finally, a little technical assessment from this "outsider" of this project:
The class that Victor overwrote broke all the work done there - the original class was intended to allow repeatable test cases even on different servers, the fields are identified with the same id on every installation because the id is based on window/tab/field IDs
The undesirable collateral effect is that iDempiere tests (worked by Ivan Calderon in old PMC, and recently being worked by Dominik and Redhuan) will not be compatible with Adempiere.
I really don't care if you want to make it compatible or not, I'm just giving you a little free assess about the consequences of dropping the work from old PMC.
Cordially,
Carlos Ruiz
Redhuan D. Oon
2011-10-17
Carlos Ruiz,
You mean to say that your version of ADempiere, the 361 / iDempiere has the IDGenerator correctly implemented and the present ADempiere 370 does not? I need to know because i have to integrate the Web UI testing to the http://jenkins.idempiere.com server. Also is SELENIUM or SAHI better for ZKAjax 3?
Michael McKay
2011-10-17
Hi Red1,
The current IDGenerator works but not in a way that simplifies the tests. We need to modify it to provide additional info.
See
https://sourceforge.net/projects/adempiere/forums/forum/610548/topic/4694931
Mike.
Redhuan D. Oon
2011-12-01
@Karsten (PMC Head) and @Mark
or @McKay @StevenSackett
or just anyone interested in keeping a clean official version.
Kindly tell when my October 12 case be attended to?
The name of author or remarks still not showing me as the author but:

Or is Carlos correct in his statements above? And what about Victor's reply above? Please rectify or give me hearing date and i will stop shouting.
Thanks for your kind attention,
red1
Mark Ostermann
2011-12-02
Hello Red1.
This issue has been adressed in out FT/ TT Meeting on Nov. 23rd 2011 too and will be solved:
http://www.adempiere.com/FT/TT_meeting_minutes_November_23rd_2011
That's what I meant with "others" in "Credits in Java Code Header in "AdempiereIdGenerator.java" and others ".
I'm just posting the one line (the discussion about posting the whole FT/ TT Log wikll take place on Dec. 12th) from chat log that acknowledges this Meeting Minute decision. The TT is working on a solution for this.
Regards
Mark
Mark Ostermann
2011-12-02
@Red1.
I just want to kindly infom you that Karsten is not "PMC" Head.
Thanks for your kind attention
Mark
Redhuan D. Oon
2011-12-02
@Mark,
Thanks for the update. About PMC Head, Karsten never was? Damn.. where did i read the intel from? I have to recall the Russians from the eastern front and go west.
Then who is? Don't tell me it is Mexico! No aircraft carrier can reach that. No wonder they have no world war down there.
Hehe, thanks again Mark
(Y)
Mark Ostermann
2011-12-02
Hello Red1,
Then who is? Don't tell me it is Mexico!
No Red1. It should say "Then who WAS?"! Don't you remember? It WAS Carlos (Columbia) as PMC Head!
Just in private: All I remember is that his reign ended up in a total mess for this community. The community decided to have Community Council (CC, voted)/ Technical Team (TT, volunteers) and Functional Team (FT, volunteers) with a division of powers from then and avoid one-man-dictator-shows.
Here you can learn about CC and the role of Karsten.
http://www.adempiere.com/Community_Council_Team
Hehe, hope I was a bit of help to refresh your mind.
Kind regards.
Mark
Redhuan D. Oon
2011-12-02
The community decided to have Community Council (CC, voted)/ Technical Team (TT, volunteers) and Functional Team (FT, volunteers) with a division of powers from then and avoid one-man-dictator-shows.
No wonder we are in a worse mess. (exercising my Freedom of Expression clause as you just did :) ).