¿Hay alguna forma de publicar mi código en Code Review Stack Exchange y no preocuparme por el plagio?

Estoy haciendo mi maestría basada en tesis en ingeniería informática y debo programar una herramienta en C++ como parte de mi investigación. Estoy muy impresionado con la ayuda que se ofrece en el sitio web Code Review y estoy considerando publicar una gran parte de mi código para sugerencias y mejoras. Sin embargo, también me preocupa que alguien pueda plagiar la idea contenida en mi código publicado. Esto, a su vez, podría afectar la credibilidad de mi trabajo.

Creo que una solución es publicar un ejemplo mínimo, verificable y completo del código para el que quiero sugerencias. Sin embargo, estoy interesado en saber si es posible publicar mi código tal como está y no preocuparme de que se copie.

¿Qué le preocupa exactamente? ¿Qué cree que sucederá y cómo cree que se verá afectado si alguien copia su fragmento de código sin atribución (¿y hace qué con él?)?
La idea de mi investigación será evidente en mi código. Alguien (que puede estar trabajando en el mismo dominio que yo) podría usar mi idea en su propio trabajo. Esto, me temo, disminuirá la novedad de mi trabajo.
Code Review es el lugar indicado si está dispuesto a enviar un código específico que le preocupa. Un MCVE anula el propósito de una revisión de código como lo define la revisión de código. ¿ Has echado un vistazo a su centro de ayuda ? El código ejemplificado está explícitamente fuera de tema para ese sitio.
En principio, obtener ayuda de la comunidad en línea no es diferente a obtener ayuda de cualquier otra forma mientras se trabaja en una tesis de maestría o cualquier otra tarea, que se supone que es únicamente su trabajo. Entonces, también lo remito a respuestas útiles a una pregunta similar (aunque le preocupa un aspecto diferente del problema): academia.stackexchange.com/questions/84299/…
Asegúrese de publicar en Code Review con una cuenta registrada, no como invitado. En el caso de que se le acuse de plagio del código publicado, querrá poder probar (p. ej., iniciando sesión) que usted mismo publicó el código.
¿Podemos suponer que sabe eso user contributions licensed under cc by-sa 3.0 with attribution required. rev 2017.10.31.27598(vea el pie de página del sitio): las personas pueden y usarán su código para cualquier propósito que deseen, pero tienen que atribuir créditos.
¿El resultado de la revisión del código cambiaría el resultado de su documento, o simplemente desea mejorar el código antes de publicarlo? Si es lo último, considere publicar una versión preliminar de su documento en ArXiv o similar, y luego realice la revisión del código.
En realidad, sería afortunado si tuviera algo de atención en Code Review. El código de nivel de investigación tiende a ser demasiado complicado para que los contribuyentes aleatorios de Internet lo ayuden por diversión. Por lo general, uno tendría que leer el documento solo para adquirir los antecedentes necesarios para comprender el código. Si no está dispuesto a abrirse por completo, dudo que alguien se tome el tiempo. Acabo de ofrecer una recompensa de +400 por esta pregunta ; veremos si eso te ayuda en algo.
@Mindwin, que no lo harán.
La mayoría del código publicado en CR.se es basura, en mi humilde opinión. Alguien tendría que estar realmente desesperado para ir a buscar tu trigo entre toda esa paja.
@greenb Si la parte académica de la tesis no tiene nada que ver con la estructura y el diseño reales del código, sino simplemente "usamos este código para generar los siguientes resultados", esto no debería ser un problema, aunque ciertamente es una buena idea. hablar con su asesor al respecto de todos modos.
@casey Sé que CC es una mala licencia para el código. Pero es lo que usamos.
@casey también, el MIT es malo para el copyleft. Uno puede enterrar la atribución de varias maneras en el código y nunca más ver la luz del día.
En mi caso, casi todas mis preguntas de StackOverflow realizadas entre agosto de 2014 y agosto de 2016 se realizaron para mi tesis de maestría o una de mis clases. Nadie me escogió, y nunca me preocupé por eso.
No conozco las reglas de las tesis de maestría, pero ¿es posible que tenga una revisión de código por pares o asesores para usted? Si le preocupa publicar partes de él, esto lo mantendría fuera del dominio público y aún le compraría algunos comentarios.
Compruebe también que otorga la atribución adecuada a las personas que lo ayudan.

Respuestas (10)

En las revisiones de código, es necesario saber cuál es el objetivo del programa; de lo contrario, las personas que miran su código son esencialmente "linters humanos". Entonces, según el tipo de comentarios que desee, es posible que deba explicar un poco qué está haciendo su código.

Entonces, el problema central sería que usted está explicando su idea, y alguien más puede ejecutarla. Bueno, es internet, si lo haces público no hay forma de saber qué va a hacer la gente con él. De hecho, podría simplemente solicitar una verificación de código simple (sintaxis, nombres, errores obvios) pero sin contexto no pueden verificar si su código hace lo que cree que hace (parte útil de una revisión de código).

Sin embargo, si su título no es puramente en ingeniería de software, es posible que no les importe si su herramienta está escrita de una "manera óptima". La mejor opción sería mantenerlo fuera de línea en ese momento, o pedirle a algunos amigos en quienes confíe que revisen su código (a través de gists privados de github, por ejemplo).

Otra solución sería leer algún material relacionado con la calidad del código. Code Complete2 es un buen comienzo. Aparte de eso, consulte el código C++ en github de proyectos más grandes (Unreal Engine, por ejemplo). Si encuentra valioso escribir un buen código, esto lo ayudará más a largo plazo ;-)

Todas las respuestas y comentarios son muy útiles. Elegí su respuesta porque sugirió vías para aprender buenas prácticas de codificación de C++.
Asegúrese de que sea obvio en su respuesta que el código incorrecto está explícitamente fuera de tema en CR. No vas allí para arreglar errores. (Sin embargo, si su código tiene un error, no es un gran problema, pero los "errores obvios" parecen ser mutuamente excluyentes con "error sutil que no notó después de algunas pruebas")

Además de todas las buenas respuestas que ha recibido hasta ahora, también debo señalar que, en general, el miedo de las personas a ser eliminados sin ética es muy exagerado. Me imagino que realmente no hay una comunidad de personas que busquen en la Web investigaciones a nivel de tesis de maestría que puedan encontrar y luego, con una considerable desventaja de tiempo para el autor original, copiar. Digo "con una desventaja de tiempo considerable" porque incluso si alguien encuentra su trabajo, todavía necesita aplicar ingeniería inversa a mucho de lo que ya tiene y sabe para llegar a una tesis o artículo publicable solo con su código. A menos que considere dejar reposar su trabajo durante medio año, parece poco probable que un imitador termine publicando más rápido que usted, el autor original.

Sí, ser descubierto apesta, pero por lo general no sucede porque alguien robó tu código, o incluso tu idea. Scooping ocurre porque hay varios equipos independientes que trabajan en todo el mundo en casi cualquier tema de investigación principal y, por lo general, solo hay un número finito de formas de atacar cualquier problema dado el estado actual de la literatura. Es probable que surjan situaciones en las que dos equipos trabajen con enfoques similares en problemas similares.

Publicar código en Internet es algo así como publicar una preimpresión¹. Todos pueden verlo, usarlo e inspirarse en él, y está bien si te mencionan a ti como la fuente de esto, pero, por supuesto, alguien también puede venir y afirmar que tuvo la misma idea de forma independiente y apresurar una publicación antes que tú. (lo que constituiría plagio si no lo hubieran hecho). Incluso si sucede lo último, aún puede consultar su publicación/publicación con marca de tiempo para establecer la prioridad y obtener al menos una parte del pastel de crédito.

Sin embargo, hay una gran diferencia: en los campos donde los servidores de preprints como Arxiv están correctamente establecidos, los plagiadores pueden no ser muy creíbles cuando afirman que no sabían de su publicación anterior. Ser ajeno a algo publicado en Code Review, por otro lado, siempre es una afirmación plausible, a menos que el plagiador haya dejado un rastro interactuando con su publicación.

Algunos otros factores a considerar:

  • ¿Cuánto de su resultado está contenido en su código? Al menos para mi trabajo, cualquier fragmento de código que encaje razonablemente en una pregunta de revisión de código, como máximo, le da una idea del panorama general. Si lo mismo se aplica a usted, es muy poco probable que alguien vea su código, reconozca su relevancia y reconstruya el resto de su trabajo a su alrededor.

  • ¿Qué tan fácil es reconstruir su trabajo a partir de su código? Por ejemplo, si pasa un tiempo considerable averiguando el valor de algún parámetro (y no lo da en su ejemplo ni lo modifica), alguien más tendrá que reiterar todo lo que lleva a su parámetro. También considere que si se requiere una cantidad considerable de creatividad, habilidad de investigación y conocimiento de la materia para reconstruir su trabajo, alguien capaz de hacer esto también puede producir una investigación original con menos esfuerzo y riesgo.

  • ¿Qué tan estrecho es su campo? Si solo una pequeña comunidad puede apreciar y reproducir plausiblemente su trabajo, también necesita a alguien de esta comunidad para reconocer y plagiar su trabajo a partir de su código.

  • ¿Qué tan relevante es tu resultado? Dado que estamos hablando de una tesis de maestría, es poco probable que sea muy grande. Por supuesto, no es imposible, pero puede juzgarse a sí mismo por los comentarios que debería haber recibido de su supervisor. Cuanto menos atractivo sea el resultado, menos probable es que alguien se esfuerce y se arriesgue a plagiarlo. Una vez más, la mayoría de los investigadores probablemente tengan mejores cosas que hacer, por ejemplo, realizar su propia investigación.

¹ También vea esta pregunta mía sobre el plagio de preimpresiones.

En el momento en que publicas algo en Internet, debes estar dispuesto a vivir con las consecuencias de que la gente se escape. Code Review no es diferente en este sentido.

Sí, hay reglas en la academia contra el plagio. Sí, Stack Exchange tiene una política de derechos de autor ( aquí, párrafo 15 ). Pero siempre habrá gente alrededor que rompa las reglas, por lo que nada de eso garantizará que la gente no acepte tu idea.

Ya sea que afecte o no la novedad de su idea, supongo que eso depende de quién publique su artículo más rápido. Siempre que el tuyo se publique antes que el de cualquier plagiario deshonesto, no veo ningún problema.

En mi humilde opinión, esto solo es correcto para el contenido de StackExchange. En la parte inferior derecha puede encontrar "Contribuciones de usuarios con licencia de cc by-sa 3.0 con atribución requerida. rev 2017.11.1.27612"
@FabianBlechschmidt Bueno, de eso se trata la pregunta, ¿no?
Creo que tenemos un malentendido sobre el contenido de SE como "el contenido y las cosas que crea la empresa SE"... las contribuciones de los usuarios son CC y, por lo tanto, ni siquiera es plagio, pero todos pueden usarlo siempre que lo indiquen con la licencia. :-)
Ah, ya veo lo que quieres decir. Sí, ese párrafo solo cubre el contenido de la red SE que infringe otros derechos de autor, no al revés. Esa parte está cubierta por cc by-sa como dijiste.

Tenga en cuenta que llevará tiempo volver a hacer su trabajo, incluso si alguien ejecuta su idea (a menos que esté publicando el código fuente de la aplicación completa). Sugeriría esperar hasta que esté cerca de enviar o haya enviado un documento; en ese momento, cualquier imitador no tendrá ninguna posibilidad de alcanzarlo.

Un problema que no creo que se haya mencionado aún es el de los sistemas de software de detección de plagio. Esas son generalmente herramientas bastante contundentes y no es raro que marquen borradores anteriores del trabajo de un estudiante si se publican en línea en algún lugar donde saben buscar.

Si su trabajo se transmitirá a través de dicho software, debería habérselo dicho y debería leer atentamente las políticas que se le aplican. La mayoría de las instituciones llevarán a cabo una revisión manual después de que el software marque su trabajo como copiado, y si esa revisión se realiza correctamente, tendrá la oportunidad de señalar que el trabajo en línea es suyo. Pero es posible que aún deba poder probarlo, especialmente si publica bajo un seudónimo.

Si quieres un think-tank en una sala privada, donde la discusión y el conocimiento sea cerrado para los miembros y todos acepten un acuerdo confidencial, este no es el lugar.

No sé si existe algún sitio así, pero podría ser muy interesante como plataforma de grilla de investigación.

En cualquier caso, si alguien corrige un error en tu código, o incluye alguna mínima mejora, tienes que aceptar que no eres el propietario exclusivo de la obra frente a los colaboradores.

En primer lugar : ¿Tu universidad requiere que licences el programa para tus maestrías bajo la propiedad de la universidad o alguna licencia específica?

Si no, (es decir, usted es el propietario de su trabajo), ¿por qué no publicarlo en Github bajo la licencia deseada de su elección? #

De esta manera se puede probar prima facie la credibilidad/primera autoría del programa y posteriormente buscar las mejoras/contribuciones de la comunidad.

Si el programa resulta ser bastante útil y gana una tracción significativa, entonces esto podría convertirse en una insignia brillante en su currículum.

# Ya que está haciendo una maestría, asumo que incursionará en la industria en algún momento tarde o temprano y para que su programa gane tracción en la industria (léase: un currículum brillante) debe tener una licencia permisiva, por lo que si desea una opciones de licencia simples en lugar de investigar usted mismo (o mucho mejor consultar a un abogado ), puede elegir entre LGPL vs Apache vs zLib.

En pocas palabras, no hay forma de evitar que alguien tome su código y lo use de la forma que quiera, incluso reclamarlo como propio. Las licencias y la jerga legal solo son importantes para las personas que se preocupan por las licencias y la jerga legal. Puede poner todos los avisos de derechos de autor y términos de licencia en su código que desee, y no impedirá que alguien copie su código y lo use si está disponible públicamente. Usted tendría que

  1. Encuentra que alguien ha usado tu código,
  2. Entablar una acción legal en la corte buscando que se prohíba a esta persona usar su código,
  3. Espere hasta que su caso finalmente obtenga un lugar en el expediente probablemente muy concurrido de la corte,
  4. Prevalecer en su acción legal,
  5. Hacer que el tribunal emita una orden judicial instruyendo a la parte que ha usado su código que deje de usar su código, y
  6. Si la parte no deja de usar su código, siga los pasos del 1 al 5 una y otra vez, hasta que un tribunal finalmente se enoje lo suficiente porque se ignoraron sus órdenes (al tribunal no le importará un bledo su código - les importará mucho, sin embargo, si se ignoran sus órdenes) que finalmente hagan algo como arrojar a la parte ordenada a la cárcel por desacato al tribunal o algo similar.

Si decide seguir este camino, asegúrese de tener una gran cantidad de dinero para pagar a sus abogados.

La alternativa es mantener su código en secreto, hacer su mejor trabajo con él y no dejar que nadie lo vea hasta que se publique su tesis, después de lo cual no podrá evitar que la gente lo use.

Toda la suerte.

Si su preocupación es la credibilidad, puede usar la publicación de su código en Internet en un foro como Stack Exchange para demostrar la propiedad. Hay un historial de edición completo que incluye marcas de tiempo. Por lo tanto, es verificable por terceros, inalterable, con una cadena de custodia independiente y transparente y de acceso público. Esa es una prueba sólida de posesión a partir de la marca de tiempo.

Además, usted posee los derechos de autor de su código en el momento en que lo escribe.

Entonces, la publicación en Internet podría ayudar a demostrar que es tuyo si alguna vez hay una disputa.