Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Falsche Auszeichnung der Autorenschaft
#1
Hallo Entwickler,

der simloadingscreen Header behauptet ich hätte ein Copright auf die Datei aus den Jahren 1997 bis 2001:

Code:
/*
* Copyright (c) 1997 - 2001 Hansjörg Malthaner
*
* This file is part of the Simutrans project under the artistic license.
* (see license.txt)
*/

#ifndef SIMLOADINGSCREEN_H
#define SIMLOADINGSCREEN_H

/**
* Implements the loading screen related routines, in the aim of centralize
* all its code and make it more modular, as it was scattered across all code
* before.
* @author Markohs
* @note Many of this functions are for internal use only, but I decided to
* expose them all and keep them under the namespace to not clobber the global
* namespace.
* @note The functions are safe on non-initialized displays, it won't try to write
* on a not existant buffer.
*/
namespace loadingscreen{

Das kann nicht sein. Die Datei ist noch nicht so alt, und der Code da drin ist größtenteils auch nicht von mir.

Bitte, wenn Ihr Code oder Dateien attributiert, schaut dass die Dinge den richtigen Leuten zugewiesen wird. Es gibt z.B. auch im Karteneditor Code der Volker Meyer zugerechnet wird, aber erst lang nach dem Ausscheiden von Volker geschrieben wurde. D.h. es ist ziemlich unwahrscheinlich, dass der Code von Volker stammt, auch wenn ich das jetzt nicht belegen kann.

Es wurde wohl immer wider Datei- und methodenrümpfe kopeiert und mit neuen Coe gefüllt, ohne die "Author" tags oder Header anzupassen.

Bitte seid da etwas sorgfältiger bei der Auszeichnung wer welchen Code geschrieben hat. Ich möchte nicht als Autor für Code genannt werden, der von anderen geschrieben wurde. Vielleicht geht es anderen Ex-Entwicklern auch so.

PS: mit geht es hier weniger um rechtliche Fragen, als um den Eindruck der beim Leser des Codes entsteht. Die Kommentare sind zunächst die einzige Quelle die der Leser hat um Code-Teile den Entwicklern zuzuorden, und ich finde es wichtig das die Zuordnung stimmt. Bei neuerem Code kann man das SVN bemühen, aber welcher Leser prüft schon jedes Commit? Ich denke, die meisten verlasen sich auf die Kommentare.
Blogger blog blog
Zitieren
#2
Noch ein beispiel: "extend_edit.cc" - Die Datei gab es noch nicht als Markus aktiv war, und ich bin zielich sicher dass die Zeile

Code:
bool extend_edit_gui_t::action_triggered( gui_action_creator_t *komp,value_t /* */) // 28-Dec-01 Markus Weber Added


Völlig irreführende Angaben zur Autorenschaft und dem Zeitpunkt der Erstellung macht.

Code:
bool extend_edit_gui_t::action_triggered( gui_action_creator_t *komp,value_t /* */) // 28-Dec-01 Markus Weber Added
{
if (komp == &tabs) {
// switch list translation or object name
if (tabs.get_active_tab_index() == 0 && !is_show_trans_name) {
// show translation list
is_show_trans_name = true;
fill_list( is_show_trans_name );
} else if (tabs.get_active_tab_index() == 1 && is_show_trans_name) {
// show object list
is_show_trans_name = false;
fill_list( is_show_trans_name );
}


Edit:


Jetzt noch ein Beispiel mit mit Coder der Volker und mir zugeordnet wird, aber mit hoher Sicherheit von Prissi stammt (Privatesigns gab es noch nicht als Volker und ich selbst noch aktive Programmierer waren, d.h. der Code muss von jemand anderem sein):

Code:
/**
* This method is called if an action is triggered
* @author Hj. Malthaner
*
* Returns true, if action is done and no more
* components should be triggered.
* V.Meyer
*/
bool privatesign_info_t::action_triggered( gui_action_creator_t *komp, value_t /* */)
{
karte_t *welt = sign->get_welt();
if( welt->get_active_player() == sign->get_besitzer() ) {
char param[256];
for( int i=0; i<PLAYER_UNOWNED; i++ ) {
if(komp == &players[i]) {
uint16 mask = sign->get_player_mask();
mask ^= 1 << i;
// change active player mask for this private sign
if( i<8 ) {
sprintf( param, "%s,1,%i", sign->get_pos().get_str(), mask & 0x00FF );
}
else {
sprintf( param, "%s,0,%i", sign->get_pos().get_str(), mask >> 8 );
}
werkzeug_t::simple_tool[WKZ_TRAFFIC_LIGHT_TOOL]->set_default_param( param );
welt->set_werkzeug( werkzeug_t::simple_tool[WKZ_TRAFFIC_LIGHT_TOOL], welt->get_active_player() );
players[i].pressed = (mask >> i)&1;
}
}
}
return true;
}
Blogger blog blog
Zitieren
#3
Ist halt Copy & Paste & ohne Nachzudenken.

Wobei der Kommentar
Code:
/**
* This method is called if an action is triggered
* @author Hj. Malthaner
*
* Returns true, if action is done and no more
* components should be triggered.
* V.Meyer
ja nicht falsch ist, sondern nur nicht von den dort genannten genau an diese Stelle platziert wurde.

Grenzt schon an Archaeologie, das alles erstmal zu finden und dann auch noch richtig auszuzeichnen Sad Man wird vermutlich in jeder zweiten Datei solche Rudimente drin haben. Andererseits zeigen die auch, dass der Code Geschichte hat.

------------------

Die Fileheaders sind ja auch so eine Sache. Waere so ein kurzer Header
Code:
/*
* This file is part of the Simutrans project under the artistic license.
* (see license.txt)
*/
besser?
Zitieren
#4
Zitat:Original von Dwachs
Grenzt schon an Archaeologie, das alles erstmal zu finden und dann auch noch richtig auszuzeichnen Sad Man wird vermutlich in jeder zweiten Datei solche Rudimente drin haben. Andererseits zeigen die auch, dass der Code Geschichte hat.

Ja, das wird recht mühsam. Ich habe ja das gleiche Problem in Iron Bite, und bin auch sehr zögerlich mit den Anpassungen. Ich weiss zwar wer es höchstwahrscheinlich nicht war (weil nicht mehr im Projekt) aber selten wer den Code geschrieben hat - Du oder Prissi oder einer der anderen die nach mir zu dem Projekt stiessen ...

Ich denke hier hilft nur den falschen Autor zu entfernen und keinen Autor zu benennen. Die Kommentare an sich kann man ja lassen, zumindest soferrn sie hilfreich sind.

Soweit ich weiss sind Volker Meyer und Markus Weber nach meinem Abschied auch nicht mehr aktiv gewesen, d.h. alles was nach dem Jahreswechsel 2004/2005 enstanden ist, muss andere Autoren haben. Niels Roest ist schon früher ausgeschieden, 2001 oder 2002. Dario und Hendrik waren später noch aktiv. Aber so grob kann man anhand der Enstehungszeit der Dateien einige schon mal ausschliessen.

Was die Header angeht habe ich für neue Dateien in Iron Bite dieses verwendet:

Code:
/*
* This file is part of the Simutrans Iron Bite project
* http://sourceforge.net/projects/ironsimu/
*/

Ich hab' ja alles auf SourceForge, somit kommt man durch den Link an alle relevanten Informationen. Ich denke auch, ein kurzer, projektbezogenener Header ist besser. Die Header mit dem namentlichen Copyright Vermerk sind noch aus den Closed-Source Zeiten und machen mMn. jetzt keinen Sinn mehr.

Edit: Hier noch ein interessanter Fund aus dem roadsign Umfeld:

Code:
/**
* Info window for factories
* @author Hj. Malthaner
*/
class privatesign_info_t : public ding_infowin_t, public action_listener_t

Dokumentiert schön, woher kopiert wurde Big Grin
Blogger blog blog
Zitieren
#5
Hier ist wohl ein alter Kommentar von mir stehen geblieben, während die Methode umgeschrieben wurde (aus simworld.cc) :


Code:
/**
* Hoehe eines Punktes der Karte mit "perlin noise"
*
* @param frequency in 0..1.0 roughness, the higher the rougher
* @param amplitude in 0..160.0 top height of mountains, may not exceed 160.0!!!
* @author Hj. Malthaner
*/
sint32 karte_t::perlin_hoehe(settings_t const* const sets, koord k, koord const size)
{

Die Parameter und Werteberieche die ich da kommentiert habe gibt es inzwischen gar nicht mehr.

Auch in der Methode ist ein langer kommentar von mir, aber das Stück code das folgt hat damit so gar nichts mehr zu tun:

Code:
// Hajo: to Markus: replace the fixed values with your
// settings. Amplitude is the top highness of the
// montains, frequency is something like landscape 'roughness'
// amplitude may not be greater than 160.0 !!!
// please don't allow frequencies higher than 0.8 it'll
// break the AI's pathfinding. Frequency values of 0.5 .. 0.7
// seem to be ok, less is boring flat, more is too crumbled
// the old defaults are given here: f=0.6, a=160.0
switch( sets->get_rotation() ) {
    // 0: do nothing
    case 1: k = koord(k.y,size.x-k.x); break;
    case 2: k = koord(size.x-k.x,size.y-k.y); break;
    case 3: k = koord(size.y-k.y,k.x); break;
}

Vielleicht kann man das mal an den aktuellen Code anpassen.
Blogger blog blog
Zitieren
#6
Eines hatte ich noch vergessen:

Das Hovercraft in pak64 ist mir zugeordnet (Copyright=Hajo), aber ich hab's nicht gezeichnet.

Code:
#Hovercraft
obj=vehicle
name=FastFerry
copyright=Hajo
Blogger blog blog
Zitieren
#7
Dieser Baum aus dem pak64 wurde mir zugeschrieben, ist aber nicht von mir:

Code:
#
# Kiefer
#
Obj=tree
Name=Tree4
copyright=Hajo
DistributionWeight=200
climates=tundra,temperate,mediterran
Image[0][0]=ls-trees04.0.0
Image[1][0]=ls-trees04.0.1
Image[2][0]=ls-trees04.0.2
Image[3][0]=ls-trees04.0.3
Image[4][0]=ls-trees04.0.4
Blogger blog blog
Zitieren
#8
Zitat:Original von Hajo
Dieser Baum aus dem pak64 wurde mir zugeschrieben, ist aber nicht von mir:

Code:
#
# Kiefer
#
Obj=tree
Name=Tree4
copyright=Hajo
DistributionWeight=200
climates=tundra,temperate,mediterran
Image[0][0]=ls-trees04.0.0
Image[1][0]=ls-trees04.0.1
Image[2][0]=ls-trees04.0.2
Image[3][0]=ls-trees04.0.3
Image[4][0]=ls-trees04.0.4

ohne nachzusehen sehr wahrscheinlich von MHz, der hatte mal nen ganzen Satz Bäume gemacht
Zitieren
#9
Die ls-trees stammen eignetlich alle aus dem pak 84.22.1. Dann lässt sich heute wohl nicht mehr die AUtorenschaft herausfinden und der Baum geht aus dem pak.
Zitieren
#10
Ich bin beim Aufräumen auf verwirrende Angaben bzgl. des Bus-Depots gestoßen.

Das Bild sagt "Krystal", die Datei trägt "crystal" im Namen, und die .dat Datei sagt "vilvoh/prissi". Was davon ist jetzt richtig?

Code:
--------------------
Obj=building
Name=CarDepot
copyright=vilvoh/prissi
type=depot
waytype=road
NoInfo=1
intro_year=1
needs_ground=1
dims=1,1,4
icon=> road-depot-crystal.0.4
cursor=road-depot-crystal.1.4
dims=1,1,4
BackImage[0][0][0][0][0][0]=road-depot-crystal.0.0
FrontImage[0][0][0][0][0][0]=road-depot-crystal.0.1
BackImage[1][0][0][0][0][0]=road-depot-crystal.0.2
...


Angehängte Dateien Thumbnail(s)
   
Blogger blog blog
Zitieren


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste