Razões para NÃO abrir código sem fins lucrativos de código-fonte? [fechadas]


34

Eu sou um grande fã de código-fonte aberto. Eu acho que entendo a maioria das vantagens de ter código aberto. Sou pesquisador de estudantes de ciências e tenho que trabalhar com uma quantidade bastante surpreendente de software e código que não é de código aberto (seja proprietário ou público). Não vejo realmente uma boa razão para isso e posso ver que o código e as pessoas que o usam definitivamente se beneficiariam de ser mais públicos (se nada mais, na ciência, é vital que seus resultados possam ser replicados, se necessário, e isso é muito mais difícil se outras pessoas não tiverem acesso ao seu código).

Antes de sair e iniciar o proselitismo, quero saber: existem bons argumentos para não divulgar publicamente o código sem fins lucrativos e com uma licença compatível com OSI?

(Eu sei que existem algumas perguntas semelhantes por aí, mas a maioria se concentra em situações em que o código é usado principalmente para ganhar dinheiro, e eu não era muito relevante nas respostas.)

Esclarecimento: Por "sem fins lucrativos", incluo motivos de lucro a jusante, como reconhecimento da marca da empresa-mãe e expectativas de lucro do investidor. Em outras palavras, a questão refere-se apenas ao software para o qual NÃO há motivo de lucro vinculado ao software que nunca.


+1, pois acho que é uma pergunta interessante. Mas eu me pergunto se este é o lugar certo para perguntar isso. Talvez você tenha perspectivas diferentes de outros sites de SE, como o site PM.SE. Apenas uma sugestão.
haylem

@haylem, eu não tinha visto o PM.SE, mas isso parece mais para aspectos técnicos do gerenciamento de projetos?
precisa saber é o seguinte

Você manterá ativamente o projeto posteriormente ou é um cemitério de códigos. Em outras palavras, qual é o futuro do projeto.

@ ThorbjørnRavnAndersen: sim, estou assumindo manutenção, desenvolvimento e uso ativos do código.
naught101

Respostas:


28

Você precisa levar em consideração que o código aberto do código pode exigir um esforço adicional.

Como exemplo, nesta entrada do blog, o engenheiro da Sun / Oracle descreve os esforços que eles tiveram que realizar ao fornecer código aberto : código- fonte aberto ou roupa suja?

À medida que nos preparamos para mergulhar no mundo do código aberto, uma das muitas atividades que está ocorrendo é a preparação do código para o código aberto. Existem algumas coisas óbvias que precisam ser feitas. Por exemplo, nosso código-fonte inclui uma mistura de código que escrevemos e código que licenciamos de outras pessoas. Precisamos separar o último e o código aberto apenas os trechos de código apropriados.

Outra atividade de preparação é "limpar" o código de informações proprietárias, menciona clientes particulares, desenvolvedores, tecnologias etc. Isso é um pouco menos óbvio, mas considere o seguinte exemplo:

/\*
 \* HACK - insert a time delay here because the stupid Intertrode
 \* Technologies framebuffer driver will hang the system if we
 \* don't. Those guys over there must really be idiots.
 \*/

Embora tudo isso possa ser verdade, provavelmente temos um tipo de relacionamento com a Intertrode Tech e ter comentários como este no código pode prejudicar nossos negócios de alguma forma e, portanto, deve ser removido. Indiscutivelmente, ele não deveria estar lá em primeiro lugar, mas agora é a hora de eliminá-lo.

Outra parte da atividade "esfregar" é remover palavrões e outras palavras "indesejáveis" ...

Observe que todas as alterações acima tiveram que ser feitas no código que foi considerado perfeitamente correto como fonte fechada - o que torna um esforço extra puro , por assim dizer.


2
Bem, isso se aplica a grandes empresas com base de código existente, muito menos ao código que é escrito para ser Open Source a partir do zero.
Konrad Rudolph

1
@KonradRudolph OP mencionou que eu tenho que trabalhar com ... código que não é de código aberto (é proprietário ou não é público), o que significa que ele não está lá do zero #
586


11

Segurança.

Por exemplo, digamos que você construa uma estrutura da Web e você mesma a use.

Como um projeto sem fins lucrativos, você não teve tempo para se dedicar a inspecionar cada pedaço de código em busca de vulnerabilidade a um ataque ou outro:

  • CSRF
  • XSS
  • injeção SQL
  • Fixação de sessão
  • Uso de bibliotecas de terceiros com erros ou mesmo idiomas

Agora, com o código aberto do projeto, você permite que olhos amigáveis ​​contribuam, mas também permite que olhos maliciosos tenham uma visão completa do seu trabalho e, se eles encontrarem um servidor que esteja executando seu código, você eliminou sua capacidade de ocultar imperfeições na obscuridade.

Obviamente, isso pode não se aplicar ao tipo de software em que você está trabalhando; e, como sempre, a obscuridade não é desculpa para a preguiça na segurança.

No entanto, assim como eu encontrei nos dois níveis que passei no Stripe, capture o jogo da bandeira , sabendo que o código é uma das maneiras mais fáceis de encontrar vulnerabilidades (e às vezes pode ser a única maneira).


7
Esse debate já dura há séculos e minha impressão foi de que o código aberto é melhor para segurança, mas apenas se o projeto for bastante popular (pelo menos entre os desenvolvedores). É estranho que não haja realmente uma boa análise dos argumentos em nenhum lugar da rede (que eu possa encontrar de qualquer maneira).
naught101

1
Em combinação com o comentário de nada, isso faz muito sentido. Se para menos pessoas se preocupam com a sua fonte e que você está usando em na produção as chances são muito boas que alguém "mal" vai inspecioná-lo e usá-lo contra você (eventualmente)
Schlingel

1
Segurança através da obscuridade?
Danubian Sailor

3
@lechlukasz Você leu o post inteiro?
Nicole

1
@Oleksi Obrigado, mas eu sei disso. Eu disse "obscuridade não é desculpa para preguiça na segurança". Esta questão não é sobre aberto x fechado, é sobre como abrir um sistema fechado anteriormente. Por acaso, concordo totalmente com o link que você postou, mas os desenvolvedores não são perfeitos e, quando você abre um sistema de código-fonte, há uma chance de que os primeiros olhos a encontrar um bug o explorem em vez de corrigi-lo.
Nicole

10

Um bom motivo para não abrir o código-fonte é que parte da sua fonte pode ter direitos autorais. Com que frequência você não pesquisa na Web uma solução rápida para um problema e apenas pega o trecho de código encontrado?

Bem, eles podem ter direitos autorais e não sei se o autor gostaria de encontrar seu código sendo licenciado sob uma licença diferente.


1
+1 para direitos autorais. Só queria adicionar patentes também. Você pode descobrir que o seu projeto de código aberto está infringindo algumas das milhares e milhares de patentes de software habitadas pelo "corpo". Transmissão de vídeo? Patenteado. Anúncios de pagamento por clique? Patenteado. Apenas alguns exemplos. No entanto, é provável que o "corpo" não se importe - a menos que você seja um concorrente.
Amadeus Hein

1
Ele Ele. Isso não é realmente um argumento contra o código aberto, mas contra a pirataria. Mas você está certo, aposto que isso é um problema em muitos códigos privados grandes.
naught101

1
@ naught101 Concordou. O código aberto expõe apenas o problema. Proprietário fechado, neste caso, é uma questão de não ser pego;)
Andres F.

Então você está dizendo que um dos motivos para manter a fonte fechada é permitir ocultar violações ocasionais de direitos autorais? Você não acha que essa é uma razão antiética para usar?
Mark Booth

1
Antiético .... talvez, uma boa razão para não abrir o código, certamente.
Pieter B

6

Você precisa ter cuidado com a maneira como escolhe sua licença para evitar possíveis problemas de responsabilidade.

Um advogado pode ser uma pessoa melhor para conversar sobre isso, mas a idéia geral é o que acontece se alguém usa (ou usa mal) o aplicativo e isso causa algum dano? Você é responsável? Obviamente, isso dependeria do tipo de software que você está escrevendo, mas você sempre precisa ter cuidado com o que sua licença diz sobre sua responsabilidade. Isso pode ser uma coisa complicada de corrigir, então pode ser mais fácil simplesmente não liberar o código-fonte.


1
Sim, esse é um bom argumento, e a maioria das licenças de sistemas operacionais geralmente tem algum texto de capa em algum lugar. Eu acho que estava assumindo uma licença do tipo "sem responsabilidade aceita".
naught101

4

Aviso: Não sou advogado .

Bem, se é uma organização sem fins lucrativos e sua propriedade intelectual está fortemente ligada ao código do software, alguns podem querer protegê-lo de ser reutilizado comercialmente ou mesmo explorado abusivamente para criar cópias em carbono do seu software.

Algumas outras razões - que provavelmente estão profundamente enraizadas na primeira - são: no seu caso, muitas das pesquisas de ponta acontecem com financiamento privado, e geralmente os investidores desejam ver o ROI. E até agora, nem todos os atores da indústria de software (ou recém-chegados) foram totalmente convencidos da viabilidade do modelo de código aberto (provavelmente por falta de conhecimento e entendimento do licenciamento, ou por simples medo de que o licenciamento não impeça ações maliciosas). usos e cópias).

Além disso, essas empresas não querem ser processadas por aqueles que tentaram obter lucro, e o licenciamento também é visto como uma salvaguarda a esse respeito, por um bom motivo ou não.

Pode não parecer, mas talvez as organizações sem fins lucrativos sejam lucrativas para seus fundadores ou investidores. Os benefícios simplesmente não são diretos. Portanto, eles têm um grande interesse em que os PFN fiquem fortes e não sejam derrotados pelos concorrentes (mesmo que você também não pense em "concorrentes" no mercado sem fins lucrativos), e desejam preservar seus interesses. IP, mesmo que isso acarrete o custo de não obter mais folgas para revisar seu código para encontrar problemas e melhorá-lo desde o início.

Observe também que as leis de direitos autorais diferem de país para país. Muitos países europeus consideram as leis de direitos autorais dos EUA e o sistema de patentes dos EUA bastante atordoados, por exemplo, então há uma base cultural e um peso que são difíceis de eliminar.

Jut meus 2 centavos sobre o assunto.

(Trabalhei muito com universidades e, recentemente, em bioinformática e saúde ... É uma pergunta recorrente para mim e meus colegas :))


Humm ... eu estava considerando o código e o IP juntos na minha pergunta. Talvez eu devesse ter deixado isso mais claro. Gostaria de pensar de ROI e marca considerações como motivos de lucro ... (Eu percebo que a "ciência" foi um pouco vago, e que os lotes da ciência é rentável - meu campo (ciências da Terra definitivamente não é embora).
naught101

Esclareceu a pergunta. Desculpe pelo incômodo.
naught101

Eu consideraria seu campo lucrativo. Pode não ter um mercado amplo, mas isso não significa que não seja lucrativo. No fqct, consideraria que envolvia bastante dinheiro. Por que você sente o contrário?
haylem

Eu estou na modelagem climática. Ninguém paga por modelos climáticos. Ninguém paga para usar modelos climáticos. Não há lucro a ser obtido com o uso do software. As pessoas são pagas para fazer pesquisas usando esses modelos (e isso geralmente inclui escrever os modelos), e o tempo de computação às vezes é pago, mas ambos significam que o compartilhamento de código tornaria as coisas mais baratas (mais tempo para gastar em pesquisa em vez de escrever código) , menos tempo perdido nas instalações da HPC). Realmente não vejo como o software está relacionado a qualquer lucratividade.
naught101

1
@psr: Eu acho que isso não é nada: há resultados lucrativos nos resultados dos usos do modelo, mas não necessariamente muito dinheiro está sendo feito na venda de software que implementa o modelo. Surpreende-me também, mas poderia muito bem ser.
haylem

1

Existem pelo menos dois tipos diferentes de código aberto.

Se sua atitude é "aqui está algo útil, eu terminei com isso" (e isso acaba sendo preciso), então há pouca desvantagem.

Por outro lado, se sua atitude for "Estou realmente empolgado e quero que alguns usuários reais ajudem a impulsionar o desenvolvimento futuro", pense com muito cuidado. Você precisará gastar tempo dando suporte aos usuários, muitos dos quais não têm noção. Você precisará considerar solicitações conflitantes de recursos e aprimoramentos. Você achará cada vez mais difícil fazer alterações, preservar a compatibilidade com versões anteriores.


3
Realmente não vejo como o código de liberação obriga alguém a fornecer suporte? E, pelo menos na ciência, a maioria dos usuários é bem informada, pelo menos sobre o processo, se não o próprio código.
naught101

1
@ naught101: obriga Não, mas se alguém usa seu código, você vai receber e-mails, dúvidas, sugestões ... que vai levar algum esforço para punho, a menos que você simplesmente optar por ignorá-los. Fora da ciência, muitos usuários não são muito informados, então você pode se ajudar com pessoas com problemas elementares de configuração etc. simplesmente porque liberou algum código. Eu experimentei isso, pelo menos. Mesmo as isenções de responsabilidade no estilo BSD "fornecidas como estão" etc. não impedem e nem impedem as pessoas de pedir ajuda.
Joonas Pulakka

1
Promovido porque esta resposta não é realmente menos aplicável do que muitas outras. @JoonasPulakka: é claro que isso não deve impedir as pessoas de pedir ajuda. Mas isso deve impedi-los de esperar uma resposta. Além disso, se você publicou o software real em público, presumivelmente você tem a mesma responsabilidade com os usuários, independentemente de seu código ser público (dependendo do EULA, talvez). Talvez você deva esperar mais consultas dos desenvolvedores se você liberar o código, mas seria bom pensar que a maioria deles terá uma pista e pode retribuir alguns conselhos de um patch ou dois ..
naught101
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.