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.
fonte
Respostas:
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!
fonte
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.
fonte
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.
fonte
Não
Excluindo aplicativos da Web, um aplicativo de desktop não deve assumir em minha mente que possui acesso à Internet.
fonte
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.
fonte
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).
fonte
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.
fonte
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.
fonte
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!
fonte
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.
fonte