Podemos supor que todos os usuários hoje tenham acesso à Internet?

18

Como a Internet é onipresente, podemos, como desenvolvedores, supor que todos os usuários tenham acesso à Internet? Agora, não quero dizer que o código seja escrito de tal maneira que, se não houver conexão, o programa inteiro trava devido à falta de código de erro. O que quero dizer é que os programas atuais podem ser desenvolvidos sob a premissa de que seus usuários sempre terão acesso à Internet?

Você pode perguntar "O que ganhamos ao assumir isso?" A razão pela qual estou perguntando é que, na uni, usamos muitos programas que exigem acesso à Internet devido à maneira como verifica as licenças (verifica o seu endereço IP - se não for um endereço no campus, então você está não é permitido usá-lo). Observe que o próprio programa deve funcionar bem sem acesso à Internet; é apenas necessário para a verificação da licença.

Edição: Eu estou falando sobre aplicativos de desktop aqui.

EDIT2: De algumas das respostas, tenho a sensação de ser acusado de explorar os usuários de maneiras antiéticas. Estou não endossando o que eu descrevi nesta questão - Eu estou apenas perguntando sobre isso porque os desenvolvedores de alguns dos programas que usamos em uni ter feito isso. Pessoalmente, acho que fazer isso é estúpido e errado.

gablin
fonte
4
Idealmente, a verificação da licença nem seria um problema.
alternativa
1
aplicativo de desktop? aplicativo móvel?
Marcie
@ Marcie: Ah. Eu quis dizer aplicativos de desktop. Pergunta atualizada.
precisa
7
Posso ter acesso à Internet, mas o firewall da minha empresa pode não gostar do meu computador falando com o seu computador :)
Tim Post
Observe que o acesso à web não é acesso à Internet.
MSalters

Respostas:

45

Má ideia, por três razões. Primeiro, mesmo que todos tenham acesso à Internet atualmente, o que é basicamente verdade, eles nem sempre o têm disponível o tempo todo. Minha máquina principal é um laptop e está conectada a maior parte do tempo, mas não quando estou no ônibus, por exemplo.

Segundo, e meio que relacionado ao primeiro, é o seu método de verificação. E se um aluno obtiver uma cópia legítima do programa, colocá-lo no laptop e depois estudar com um amigo que mora fora do campus? Você acabou de introduzir uma condição de falso positivo em sua verificação de licença.

Terceiro, há um problema ético com a verificação da licença em primeiro lugar. Se uma pessoa optar por colocar um programa em seu computador, você não tem o direito de fazer com que o computador o trate como inválido. Em qualquer outro contexto chamado pirataria, pode levar você a todos os tipos de água quente, e apenas porque nossas leis de direitos autorais foram invadidas pelos proprietários dos direitos autorais para fazer uma isenção legal em um caso especial para esse cenário, que não está certo .

A aplicação da lei é o trabalho da aplicação da lei, e os indivíduos privados são altamente desencorajados a tomar a aplicação da lei em suas próprias mãos (vigilantismo) porque tendem a fazer tudo errado. (Basta olhar para o rootkit da Sony!)

Seu melhor curso de ação seria assumir que o usuário tem uma conexão com a Internet disponível para recursos que realmente exigem, mas não exige recursos que possam sobreviver sem ele e certamente não exige apenas para convencer o programa de que não é uma cópia ilegítima!

Mason Wheeler
fonte
2
note to self: vote quando o contador de votos for redefinido
Inaimathi
Eu não acho que gablin esteja realmente interessado em projetar esse sistema, ele está apenas usando isso como exemplo (o que minha universidade também fez com serviços baseados na Web como o JSTOR). Eu concordo com tudo o que você sugere, no entanto. De fato, o acesso à Internet não é onipresente…
msanford
2
Como a msanford acabou de dizer, não estou absolutamente interessado em projetar esse sistema. E eu concordo totalmente com a sua resposta - ter que fazer uma VPN no campus a partir de casa apenas para poder trabalhar no laboratório remotamente é um pé no saco! Não consigo entender o que eles estavam pensando ao projetar um sistema de validação e imaginei "Talvez eles estivessem assumindo que todos têm acesso à Internet". Portanto, esta questão. Mais uma vez, boa resposta. 1
gablin
26
  • Nem todos os usuários têm acesso utilizável à Internet. Por exemplo, fora das cidades pequenas e médias (e seus subúrbios) e das universidades, os EUA quase não têm infraestrutura de banda larga. Os usuários de cidades pequenas e rurais geralmente usam satélite ou discagem (e suas linhas telefônicas nem sempre são as melhores, portanto, a discagem geralmente é inferior a 50k / s).

  • Usuários com bom acesso à Internet em casa / escritório geralmente operam em outros locais: parques, aviões, cafés, locais de conferência etc. que geralmente não têm acesso confiável à Internet.

  • Muitos usuários investem em energia de backup por um motivo: para que eles não sofram tempo de inatividade durante interrupções. Se você prejudicar seu aplicativo quando a Internet cair, você acabou de roubar esse investimento.

  • As conexões à Internet falham, os ISPs (ou locais de trabalho ou universidades) bloqueiam o tráfego por sua própria vontade, os usuários domésticos configuram incorretamente seus NATs ... é simplesmente estúpido criar um ponto de falha artificial (isto é, não uma conseqüência técnica da criação da coisa) no seu software.

Somente os motivos acima são mais do que suficientes para não usar o modelo DRM "call home"; mas mesmo que nenhuma delas fosse verdadeira, eu ainda desaconselharia, porque, como Mason já tentou apontar, é eticamente errado explorar seus usuários dessa maneira.

Você não pode expor informações sobre seus usuários apenas para sua própria mente. Você não tem o direito de monitorar quando e de onde eles usam seu software. Fazer esse tipo de coisa viola a confiança de seus usuários.

HedgeMage
fonte
7
+1 por "criar um ponto artificial de falha". Essa é uma maneira muito boa de descrevê-lo.
Mason Wheeler
16

Não!

Todos os programas devem considerar o acesso à Internet como o melhor cenário, com um modo de fallback para quando o computador pode não estar conectado.

Com tantos laptops por aí, e com a natureza da maioria das redes sem fio públicas ainda sendo pagas pelo uso, a maioria dos usuários de laptops experimenta regularmente condições nas quais precisam usar seu computador e seus programas sem uma conexão à Internet .

Como outras respostas também foram publicadas, é seguro supor que o computador estará conectado em algum momento no futuro. Muitos aplicativos do tipo sincronização que têm um modo offline funcionam dessa maneira. Mas, por uma questão de cortesia para os usuários, não opere dessa maneira, a menos que seja um serviço para o usuário . Não acho que a verificação de licenças se enquadre nessa categoria.

Nicole
fonte
15

Não

você não pode assumir que todos os usuários tenham acesso à Internet. Para estatísticas básicas, clique aqui

Excluindo aplicativos da Web, um aplicativo de desktop não deve assumir em minha mente que possui acesso à Internet.

Noite escura
fonte
1
Gosto do fato de você ter incluído estatísticas em sua resposta. Maneira de fornecer evidências tangíveis.
lazyPower
1
a menos que seja um navegador (embora até isso esteja mudando com o HTML5).
dan_waterworth
2
Sim, mas mesmo um navegador pode ser usado off-line :) Existem muitas situações legítimas em que isso pode ser usado. Por exemplo, no .NET, um controle de "navegador da web" pode ser incorporado em formulários. Isso permite que um aplicativo da área de trabalho crie HTML (por exemplo, relatórios) e os exiba no formulário incorporado; o arquivo HTML é passado na memória (carregado de uma string) ou lido no disco rígido.
Darknight
Até aplicativos da Web podem ser puramente baseados na intranet e os usuários possivelmente não têm acesso à Internet.
precisa saber é o seguinte
6

A versão curta é NÃO, você não pode assumir que todos os usuários tenham acesso à Internet. Como outros já mencionaram, há um grande número de pessoas com acesso limitado ou inexistente à Internet em casa.

Seu esquema de licenciamento deve ser capaz de lidar com o caso em que o computador em que o software será executado nunca terá acesso à Internet. Não é tão incomum que as empresas tenham redes isoladas da Internet (especialmente quando lidam com questões de segurança). Isso é especialmente verdade se você quiser vender seu software a uma agência governamental. O outro lado é como você lida com as atualizações? Se você deseja vender para empresas / governo, terá que dar suporte à implantação corporativa das atualizações.

Ken Henderson
fonte
4

Sim, no sentido de que a maioria das pessoas que trabalha com computadores pode acessar uma conexão com a Internet (provavelmente não há problema em distribuir correções de bugs por meio de um gerenciador de pacotes ou FTP ou similar).

Não, no sentido de que a maioria das pessoas não tem necessariamente acesso consistente, confiável e de desempenho à Internet o dia inteiro (supor que cada um de seus usuários consiga reduzir 20mb / s de forma consistente é provavelmente uma má idéia. As pessoas também usam periodicamente ônibus e aviões nos quais você praticamente garante uma falta de conectividade).

Inaimathi
fonte
2

Eu acho que é razoável supor que todos os usuários terão acesso à Internet na maioria das vezes , ou pelo menos no momento da instalação. No entanto, se eu levar meu laptop comigo em um avião, em uma cabana na floresta ou em um barco no mar, esperaria que algo que obviamente não requer acesso à Internet funcione bem.

Brant Bobby
fonte
3
Na verdade, o acesso à rede no momento da instalação é uma suposição ruim. Nem sempre é possível ou permitido conectar a máquina em que o software precisa ser executado na Internet; portanto, é importante permitir que alguém baixe os arquivos necessários com uma máquina diferente e depois transfira-os manualmente para a máquina em que serão instalados.
Chris Stratton
1

A resposta é claro, depende. Se você estiver criando um software para o chão de fábrica, há uma boa chance de que eles não tenham acesso à Internet. Para aplicativos de consumidor, eles provavelmente o farão.

Craig
fonte
1

Pode não ser desejável ter uma conexão com a Internet, como no caso de usuários que usam meu Pawnshop Management System (um aplicativo de desktop baseado em RDBMS). Eles simplesmente não confiam em ter a Internet conectada ao mesmo computador que mantém todas as informações pessoais de seus clientes e as transações das casas de penhores. Se eles desejam acessar a web, eles usam um computador separado que não possui nenhuma informação pessoal!

Frank R.
fonte
0

Servidor de licenciamento flutuante é um conceito semelhante. Usei um compilador no AIX da IBM, que verificava constantemente em um servidor de licenciamento. Assim, ficou lento e finalmente portamos o código para o gcc.

É frágil e irritante. Eu acho que só faz sentido para software muito caro por empresas quase monopolistas.

LennyProgrammers
fonte