Que argumentos existem contra os ovos da páscoa? Existem argumentos para apoiar os ovos de páscoa? [fechadas]


28

Eu sou um bobo da corte, então a idéia de um ovo de páscoa ainda me atrai. Eu os adicionei no meu código antes, mas meu grupo de amigos tem uma piada sobre o uso de CTRL-FU para acionar o ovo.

Agora também estou um pouco paranóico com relação ao desempenho, então gosto de remover o excesso sempre que possível. Isso contradiz fortemente os ovos da páscoa, pois eles são 100% supérfluos.

Que argumentos existem contra os ovos da páscoa? Além disso, existem argumentos para apoiar os ovos de páscoa?


5
IMHO esta questão não merece uma votação em absoluto, certamente não uma não motivada. Eu sou muito interessado pelo assunto. Especialmente sabendo como é percebida pelos usuários finais, pelos verdadeiros chefes.

Isso é primordial para um @Mark Trapp clássico "estamos aqui para resolver problemas reais que você pode estar enfrentando".
Gratzy

1
@ Chrishr wow se minha pergunta programmers.stackexchange.com/questions/38810/… obtém a resposta "pergunta real" e você está me dizendo que isso não acontece, então estou realmente confuso quanto ao objetivo deste site.
Gratzy

1
Ótima pergunta, IMHO.
Uri

1
@ Mark C Sim, eu sou paranóico demais sobre desperdiçar recursos.

Respostas:


11

Como sempre, a resposta é "depende".

Os ovos da páscoa são uma maneira de incentivar a exploração do programa "mundo". Em um jogo, é bastante óbvio - você sobe ao topo da montanha mais alta e o encontra (por exemplo), mas para outros aplicativos, você precisa usar opções ocultas como seu ovo de Páscoa. No entanto, eles são vistos como frívolos por algumas pessoas; portanto, se você está escrevendo um aplicativo comercial extremamente sério, não quer incomodar seus usuários, apresentando-lhes uma tela de hamsters cantores (ou o que quer que seja) quando encontrar a combinação de teclas mágica .

Ter um ovo de Páscoa em um aplicativo não deve ter um impacto negativo no desempenho. Portanto, a menos que você esteja analisando a entrada do teclado para a operação normal do seu aplicativo com Ctrl+ FUcomo gatilho, é uma má idéia. Contanto que o código seja executado apenas se encontrado, não haverá penalidade no tempo de execução. A única penalidade é o aumento no tamanho do programa - o que pode ou não ser um problema. Se o tamanho do programa for um problema, deixe-o definitivamente de fora.

No entanto, com o código extra, há um problema de suporte. Você ainda precisa oferecer suporte ao código e garantir que ele funcione e não cause problemas quando executado. A última coisa que você deseja é que seu aplicativo falhe exatamente como o usuário encontra o Ovo de Páscoa!


"Ter um ovo de Páscoa em um aplicativo não deve ter um impacto negativo no desempenho. Ele só será executado se encontrado, para que não haja penalidade de tempo de execução." Sério? Se for acionado por um CTRL-FU como o OP indica, você não está capturando cada toque de tecla?
Gratzy

2
@Gratzy - Na verdade, esse é um bom argumento - a menos que você esteja pressionando as teclas para a operação normal, esse é um exemplo de um ovo de Páscoa ruim.
ChrisF

7

Eu diria que depende muito do tipo de software que você está desenvolvendo.

Os ovos de Páscoa da Imho são mais propensos a serem aceitos (ou até apreciados) nos jogos do que nos softwares comerciais. Até a Microsoft colocou alguns Ovos de Páscoa em seus produtos, mas praticamente o interrompeu completamente agora. A razão pela qual a Microsoft parou de colocar os Ovos de Páscoa está intimamente ligada aos possíveis motivos contra os Ovos de Páscoa: preocupações de segurança. Conforme descrito no artigo relevante da Wikipedia, Ovos de páscoa são geralmente (pelo menos para o usuário / cliente) partes não documentadas do código, o que pode levá-lo a acreditar que o produto estava mais aberto a ataques ou de outras maneiras não confiável. Além disso, nem todo código do Ovo de Páscoa é testado e auditado no mesmo grau que o código "de missão crítica". Isso pode levar a falhas não descobertas ou lacunas na base de código, que podem ser a origem de um ataque posterior ou exploração de malware.

No entanto, nem todos os ovos de Páscoa são "ruins" e exigem adulteração do código real do produto. Existem várias maneiras de apresentar Easter Eggs, especialmente em jogos nos quais o código é um pouco separado do conteúdo (mecanismo de jogo / gráficos / script vs. arquivos de script ou nível reais). Essas formas variam de texturas / objetos especiais e comentários em áudio do protagonista (por exemplo, como usado no DN3D: Doom , Terminator , Indiana Jones , Star Trek ) a níveis secretos ( "não há nível de vaca" ) a diálogos mostrando quando um determinado objeto / local na interface do usuário é clicado e muito mais. Obviamente, nem todos eles são adequados para todos os tipos de produtos.

Uma boa maneira de colocar um ovo de páscoa em seu produto é incluir-se de alguma forma (e não apenas na seção de créditos). A Blizzard fez isso muito bem com o StarCraft 2 . Um retrato de unidade é na verdade o rosto de um dos desenvolvedores. Algo não tão óbvio como esse geralmente é apropriado para muitos tipos diferentes de software, porque não depende do conhecimento da mídia ou de um certo tipo de humor. Por exemplo, talvez você possa se incluir como personagem no contexto do produto. Dependendo do produto, isso pode nem exigir uma chance para o código ou apenas uma muito simples.

Ovos de Páscoa são imho nice, mas não é obrigatório. A implementação de um ovo de Páscoa nunca deve prejudicar o produto real e sua apresentação deve ser apropriada para o público-alvo recuado do produto final. Um ovo de Páscoa em um aplicativo "sério" ou um produto direcionado a não adultos nunca deve incluir humor adulto ou conteúdo sexual, por mais engraçado ou inofensivo que pareça ser. Isso pode não apenas levar a consequências legais, mas também afetar o alcance de marketing do software (classificações USK / PEGI / ESRB , por exemplo).


1
Você realmente precisa analisar por que a Microsoft parou de colocar ovos de páscoa em seu código. Um ovo de páscoa é um caminho de código que não é totalmente testado (se você teve a oportunidade de fazer um controle de qualidade completo em um ovo de páscoa, por que não teve tempo para incluir um recurso útil diferente?), O que significa é uma fonte potencial de vulnerabilidades de segurança.
Anon.

@Anon: no artigo da Wikipedia que mencionei na minha resposta: "A Microsoft, que no passado criou alguns dos maiores e mais elaborados ovos de Páscoa, como os do Microsoft Office, não permite mais ovos de Páscoa em seus softwares como parte de sua iniciativa Computação Confiável ". A fonte dessa declaração é o artigo do blog do MSDN vinculado na resposta de Charles. Não vejo nenhuma contradição com a minha afirmação. Poderia, por favor, explicar onde eu errei? :)
Baelnorn 23/01

A primeira parte da resposta diz "ei, a Microsoft costumava fazer isso, não é incrível", mas as reais razões pelas quais eles não fazem mais isso são enterradas no meio da resposta. Um leitor casual não vai vê-lo e está desconectado do contexto relevante. Idealmente, gostaria de reorganizar os parágrafos para colocar o parágrafo contras um pouco mais proeminente.
Anon.

@ Anon: Obrigado pela atenção. Editei minha resposta e reordenei os parágrafos, detalhando os motivos contra EE na primeira parte.
Baelnorn 23/01

5

Os ovos de Páscoa eram comuns mesmo nos principais lançamentos de software comercial nos anos 80 e 90. Na maioria das vezes eles eram fofos e relativamente poucas pessoas se incomodavam com eles. Eu acho que eles são menos comuns hoje por três razões:

  1. Como todas as piadas práticas, elas são engraçadas até alguém chamar a atenção. Se seu ovo de páscoa tem um bug que causa perda de dados ou um problema de desempenho, você pode acabar explicando a vários advogados que na verdade não estava distribuindo "malware".

  2. O humor é muito, muito, difícil de fazer o certo, e se você errar, ofenderá os clientes pagantes que deixarão de pagar pelo software e que escreverão muitas cartas desagradáveis ​​à imprensa sobre a empresa imatura e terrível em que você trabalha para. O exemplo de um ovo de páscoa acionado pelo Ctrl-FU é um exemplo perfeito. Isso provavelmente é histericamente engraçado para seus amigos de 17 anos, mas é a 0ª regra do marketing nunca dizer a seus clientes "FU", mesmo que seja de brincadeira. Observe que os ovos de páscoa em grandes softwares comerciais NUNCA tiravam sarro do usuário, apenas dos concorrentes.

  3. Nas palavras imortais de Peter Tork, dos Monkees, no filme Head : "Ninguém empresta dinheiro a um homem com senso de humor". Se você está comprando uma parte crítica da infraestrutura de software, o senso de humor do autor não é tranquilizador. Além disso, por que eles estavam gastando tempo escrevendo ovos de páscoa quando podiam estar consertando seus inúmeros bugs de segurança?

Anos atrás, Larry Osterman tinha um blog bastante famoso discutindo por que o grupo de SOs da Microsoft não permite mais ovos de páscoa .


1
Ainda hoje, o Google tem um ovo de páscoa - o que significa que eles estão verificando a entrada para acionar o ovo de páscoa em cada pesquisa. Provavelmente não é muito processamento, mas considerando as centenas de milhões de pesquisas que eles processam todos os dias ... eu não sei.
Charles Salvia

Devo confessar que li CTRL-FU como uma espécie de KUNG-FU.
Christopher Creutzig

@ Christopher, essa é uma interpretação perfeitamente razoável. O humor geralmente está sujeito a várias interpretações, o que é parte do motivo pelo qual é complicado colocar seu software sem correr o risco de ofender alguém.
Charles E. Grant

@CharlesSalvia Dependendo de como eles processam as pesquisas para determinar os resultados "Você quis dizer", ele pode não adicionar nenhum custo adicional ao que já existe para esse comportamento.
19416 JAB

4

Ovos de Páscoa são pequenos segredos deixados pelos construtores. Isso prejudica os usuários finais? Não.

Muitos softwares conhecidos e populares incluíram ovos de páscoa escondidos . Os ovos de Páscoa também foram usados ​​para mostrar aos desenvolvedores sentimentos sobre um assunto delicado de uma maneira bastante elegante.

Quanto à otimização do código, desde que os ovos da páscoa não sejam muito intensos (hello flight simulator ), não deve prejudicar o desempenho de maneira significativa.


Discordo. Um ovo de páscoa aumenta o risco de ocorrência de um evento que pode prejudicar os usuários. Na melhor das hipóteses, esses "recursos adicionais" são testados e simplesmente gastam tempo dos desenvolvedores e do controle de qualidade. Na pior das hipóteses, ninguém além do implementador sabe disso. Mais tarde, o implementador deixa a empresa e, posteriormente, uma atualização no software faz com que o ovo da páscoa fique mal-intencionado com ações como cortar eventos do teclado, consumir toda a RAM disponível ou, em um caso extremo ... apagar o conteúdo do usuário disco rígido. Acima do topo? Talvez. No entanto, eu já vi cada um desses erros como normais.
Mummey

@mummey: Eu acho que é uma ocorrência altamente improvável.
Josh K

Você não faria o máximo para mitigar esses riscos?
StuperUser

@Stuper: Você já ouviu falar de um ovo de páscoa quebrando o programa?
21411 Josh K

Não ouvi falar de nada, mas as falhas durante os ovos de páscoa não são críticas o suficiente para justificar a publicação de problemas na maior parte. Os usuários geralmente não enviam informações de volta para a maioria das falhas do programa MS durante a operação normal .
StuperUser

2

Embora eu goste do Easter Eggs no software, é importante lembrar que a linha entre um ovo deixado em um produto por diversão e um backdoor malicioso pode ser muito pequena do ponto de vista legal. Por exemplo, é necessário mostrar danos? É preciso provar a intenção de causar dano?

Considerando que o entendimento dos tribunais sobre computadores e software é bastante infeliz (como evidenciado por algumas patentes de software), debater esse caso comprará a vários advogados uma bela casa de férias em Aspen. Quando se considera os vários ambientes legais (como o DMCA) em que o software é publicado e distribuído em todo o mundo, ele também pode comprar casas de férias nos Alpes.

Como engenheiros contratados, garantimos que não prejudicamos nossa empresa. O litígio pode se tornar prejudicial, e o litígio é provável se entregarmos software sob contrato a outros clientes, especialmente governos ou grandes empresas. Assim, eu pessoalmente escolheria errar do lado seguro.

Lembre-se, os engenheiros existem para usar a lógica para fins bons, enquanto os advogados existem para distorcer a lógica pelo mal. É por isso que eles são pagos muito mais do que nós.


0

Muitos declararam que os Ovos de Páscoa são mais adequados para jogos, mas acho que eles são úteis em aplicativos de negócios. Muitas pessoas apenas criam uma série de receitas para usar um aplicativo de negócios que nunca olham para outras áreas do aplicativo. Quero dizer, existem seções inteiras de um aplicativo que eles nunca veem se não fizer parte do treinamento e isso pode ter sido útil para eles. Atualmente, trabalhei em um aplicativo com 75 relatórios e os usuários estavam solicitando informações e eles nem sequer executaram um único relatório. Eles precisam de algum incentivo para compensar sua falta de curiosidade (em sua defesa, alguns usuários têm medo de quebrar alguma coisa.).


-2

Eu uso ovos de Páscoa para me ajudar na depuração e codificação. Portanto, os ovos de Páscoa que eu coloquei servem a um propósito e provavelmente não são considerados ovos de Páscoa.


O que exatamente você quer dizer com 'ovo de páscoa' em seu uso? Você pode me dar um exemplo?

Este não é um ovo de Páscoa, mas um backdoor então. Fazemos algo especial para teste da GUI quando a ferramenta clica duas vezes no botão do meio do mouse no local da tela (0,0) e depois digita a senha correta. Isso é feito para que as ferramentas de automação da GUI possam lidar com isso. Os usuários poderiam fazer isso também em teoria, mas na prática eles não chegarão lá. Além disso, há sinais de alerta em todo o lugar.
Job

1
@ Glenn, um bom exemplo seria ... se você estiver enviando um aplicativo GUI de desktop. Quando o usuário clica em um botão, ele recebe uma nova caixa de diálogo. Quando o usuário clica nesse botão enquanto mantém pressionada uma tecla Shift, ela obtém uma antiga. Essa seria uma boa maneira de comparar a funcionalidade antiga e a nova, ao tentar corrigir os erros causados ​​pelo novo widget. Se você for cauteloso, poderá deixar o código duplo ativo, mas comentar a porta dos fundos. Depois, como você precisa depurar as coisas, descomente, reconstrua e agora você pode comparar duas coisas lado a lado. Dave, desculpe por tentar roubar seu trovão.
Job
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.