Quando começamos este blog, a idéia era ter um diálogo: uma conversa de duas vias sobre a engenharia do Windows 7. Não poderíamos estar mais felizes com o modo como as coisas estão acontecendo nesse curto período. De acordo com nosso objetivo, iniciamos uma discussão sobre como construímos o produto e tivemos uma chance de estabelecer uma troca nos comentários e artigos sobre assuntos que claramente são importantes para vocês. Para mostrar alguns números, eu recebi pessoalmente mais ou menos 400 emails (e respondi a vários deles) e no total recebemos aproximadamente 900 comentários em língua inglesa de quase 500 leitores diferentes (alguns de vocês deixaram mais de 10 comentários). Números iniciais mostram que temos mais do que 10 vezes aquele último número em leitores e visualizações de página.

Algumas pessoas no blog pediram mais detalhes sobre como construímos o Windows – qual o processo de seleção dos recursos, o processo diário de construção, globalização, e outros. Mantendo nossa tradição de ver o outro “lado” de uma questão, vários também disseram que já têm informação o bastante sobre isso e querem conhecer os recursos. Portanto, neste artigo quero oferecer uma perspectiva sobre alguns recursos que foram muito discutidos e também uma perspectiva sobre discussão e seleção de recursos.

Adoramos as reações. Vimos que alguns assuntos geraram um fórum para que as pessoas perguntassem bastante sobre os recursos e faremos o máximo para responder dentro do contexto do que nos propusemos a fazer, que é discutir sobre como o Windows 7 é feito, incluindo como fazemos escolhas quanto o que é incluído no produto. Admito que possa ser tentador (para mim) fazer uma enorme lista de recursos e então dizer “façam seus comentários”. É tentador porque eu vi isso antes e é certamente algo fácil e que pode fazer as pessoas mais felizes e mais envolvidas. Entretanto, há alguns desafios apresentados por essa técnica que fazem com que esse tipo de fórum seja um pouco frustrante para todos nós. Primeiro, é baseado em “reações” na medida em que pede que vocês somente reajam àquilo que vêem. Afora o contexto compartilhado, não estaremos falando a mesma língua em termos de motivações, prioridades e outras coisas. Isso é particularmente verdadeiro quando um recurso é prematuro e não somos realmente capazes de "vendê-lo" efetivamente nem de contar sua história. Segundo, um grande conjunto de comentários do tipo relatos (quer dizer, textos livres) não são dados que possam ser realmente utilizados e não apreendem o diálogo e a discussão que estamos tendo. Tomar decisões dessa forma quase certamente não cairá bem com a “metade” das pessoas que não concordam com a decisão ou priorização. Terceiro, há uma tendência de achar que os comentários oferecidos levam a ação naquela direção. Esses são alguns motivos pelos quais escolhemos a abordagem de falar sobre como estamos fazendo o Windows 7.

Alguns sugeriram a publicação de uma lista de recursos e que utilizássemos então um processo de classificação/votação. Na verdade, alguns já chegaram a fazer isso para nós em seus próprios web sites. Obrigado. Esses sites são interessantes e nós realmente os lemos. Acho, porém, que todos concordamos que também há um desafio muito conhecido para muitos, que é quando um grupo auto-selecionado oferece um tipo de comentário que é provavelmente diferente daquele de um grupo que é escolhido intencionalmente como sendo representativo. Estava me lembrando de um episódio antigo de Saturday Night Live, “Larry the Lobster”, no qual ao pagar uma taxa você poderia votar em salvar Larry da panela ou não. Todos sabem que essa é uma pesquisa não-científica, mas também nem sabemos se é uma pesquisa não-científica sobre opiniões quanto aos direitos dos animais ou preferências gastronômicas. Acho que o valor de se votar em recursos específicos vai além de mero entretenimento, mas também temos que nos dedicar a ter certeza de que estamos refletindo sobre os assuntos dentro do mesmo contexto. Também queremos que qualquer amostra de clientes que fizermos seja representativa ou da ampla base de clientes ou do “segmento” alvo específico de clientes.

Portanto, grande parte desse blog se trata de criar um fórum onde possamos nos comunicar sobre o que é importante e quais são os contextos relativos que trazemos para a discussão. É por isso que pensamos nele como um diálogo, e não como pergunta e resposta, solicitação e atendimento, ponto e contraponto ou anúncio e comentário. Pessoalmente, estou me beneficiando genuinamente da natureza dinâmica do que vamos escrever no blog com base nos que participam dele. Portanto, isso é muito mais como uma reunião social para a qual nós vamos a fim de nos encontrar e conversar do que uma reunião de negócios, na qual temos objetivos específicos, ou uma aula de treinamento onde somente uma das partes é responsável por falar.

Nesse sentido, seria bom continuar a conversa sobre alguns pontos que foram levantados com freqüência e acho que as pessoas vêm pedindo um ponto de vista sobre elas. Cada um merece seu próprio artigo, mas eu também gostaria de oferecer um ponto de vista sobre alguns pedidos específicos de recursos. Vamos analisar alguns assuntos que surgiram conforme falamos sobre desempenho ou a experiência geral do Windows. Por esta ser uma “resposta” a comentários e idéias, há a possibilidade de adotarmos a forma de ponto/contraponto; espero que possamos nos lembrar das discussões de "contexto" que tivemos antes de entrarmos mais a fundo no debate.

Instalação baseada em perfis

Em termos de idéias sobre recursos, alguns de vocês sugeriram que nós oferecêssemos uma maneira de configurar o Windows para um cenário específico quando da instalação. Alguns sugeriram cenários como uso de jogos, uso ocasional, para produtividade de negócios, navegação na web, emails, “utilização leve” e outros. Fica subentendido que o Windows poderia funcionar melhor (velocidade, espaço, etc.) se o ajustássemos para um cenário específico de acordo com esses limites, mas na verdade essa suposição provavelmente não seria bem sucedida de forma consistente ou geral. Há muitas maneiras de contemplar esse recurso - pode ser uma na qual adaptamos os conteúdos do Menu Iniciar (algo que os administradores fazem em empresas o tempo todo), ou a métrica de desempenho para alguns componentes de baixo nível (tamanho de bloco de disco, tamanhos de quadro tcp/ip, etc.) ou o nível de refinamento da interface do usuário (também conhecido como alguns chamam de “bonita por fora”), e outras. Vimos o cenário ou instalação com base em funções como um recurso bastante usado no Windows Server 2008. No ambiente do servidor, entretanto, cada uma dessas funções representa um hardware diferente (provavelmente com configurações diferentes) ou talvez um VM específico numa máquina muito robusta, além de também representar “cargas de trabalho” claramente entendidas (servidor de arquivos, servidor de impressoras, servidor de web).

O PC desktop (ou laptop) é diferente porque há somente um PC e as funções não estão tão bem definidas. Somente em casos raros é que o PC é voltado para um único objetivo. Conforme Mike, do planejamento de produtos, disse no blog, a realidade é que vemos muito poucos PCs que executam somente um software específico e em quase todos os estudos que fizemos quase todos os PCs executam ao menos um software que as outras pessoas não executam. Então devemos retirar disso a dificuldade que é rotular um PC como tendo uma função específica. Existem momentos de funções específicas ao usar um PC e para eles o objetivo de um OS é se adaptar bem às cargas de trabalho diferentes. Como somente um exemplo disso no Windows Vista, considere o trabalho de tornar o indexador uma atividade de baixa prioridade usando o novo I/O APIs de baixa prioridade. Sei que alguns disseram que isso é “algo que eu sempre desligo”, mas a realidade é que há um custo direto e depois o trabalho contínuo de indexar é realmente muito baixo. Isso é algo no qual fizemos melhorias significativas para o Desktop Search 4.0 (lançado como um download) e no Windows 7. A realidade é que um OS de finalidade geral deve se ajustar às cargas de trabalho impostas a ele. Sabemos que nem tudo é perfeito e sabemos que muitos de vocês (particularmente os jogadores) buscam extrair cada pequena gota de desempenho. Mas também sabemos que a complexidade e a fragilidade que aparecem ao tentar “ser mais esperto” do que os serviços do sistema central às vezes escondem as melhorias de desempenho que vemos na amostragem mais ampla de clientes. Há uma atmosfera de “caçadores de mitos” na qual poderíamos embarcar – então que tal compartilhar os resultados sistemáticos que vocês conseguiram e então nós falaremos sobre eles nos comentários?

Outro desafio seria desenvolver essa taxonomia. Isso é algo que eu pessoalmente me esforcei muito para fazer no Office 95 e Office 97. Achamos que poderíamos fazer um “assistente” de instalação perguntar a vocês o quanto usavam o Word, Excel, PowerPoint e Access, ou uma taxonomia que perguntasse a vocês sobre suas profissões (advogado, contador, professor). A partir daí descobriríamos não só quais aplicativos mas quais recursos dos aplicativos nós iríamos instalar. Encontramos dois problemas constantes. Primeiro: chegar somente a descritores ou perguntas para "categorizar" as pessoas falhou nos testes de utilização - o problema clássico de quando apresentadas com um leque de escolhas as pessoas escolheriam todas as medianas ou somente ficariam “paralisadas” achando que nenhuma delas serve (as pessoas normalmente não gostam de rótulos). Segundo: sempre tivemos o problema de múltiplos usuários no mesmo PC ou pessoas que alteram as funções ou padrões de uso. Acontece que nossos clientes corporativos aprenderam o mesmo para nós e tornou-se rotina “instalar tudo”; portanto, deu-se início a uma era de instalar todo um pacote de produtos e então o treinamento era utilizado para restringir os cenários de utilização.

O desafio final foi como apresentar isso aos clientes e quando. Essa seqüência de passos, a experiência OOBE (ao utilizar um produto pela primeira vez), é o que você faz quando retira um PC da caixa (a grande maioria dos clientes Windows o recebem dessa forma) ou executa a instalação a partir de um DVD (o cliente do varejo de “produto embalado"). Isso leva ao item seguinte, que é ver a OOBE como um espaço para fazer otimizações de desempenho. Tentar melhorar o desempenho desse passo é definitivamente um desafio e leva ao nosso "contexto" para a experiência OOBE.

Experiência na Primeira Inicialização - “OOBE"

A OOBE é realmente onde os clientes têm o primeiro contato com o Windows num PC novo. Como muitos já leram em críticas de produtos competitivos (com relação aos PCs Windows), os objetivos de experiência que a maioria das pessoas tem estão relacionados a “qual o caminho mais rápido entre abrir a caixa do PC para a web”. Para o Windows 7, estamos trabalhando junto com nossos parceiros OEM para ter certeza de que é possível oferecer a experiência mais eficiente possível. É claro que os OEMs têm muita flexibilidade e oportunidades de diferenciação naquilo que oferecem como parte da instalação de um novo PC; o que nós queremos é ter certeza de que a parte que se refere ao “OS central” seja absolutamente o mínimo necessário para chegar à parte divertida de usar seu PC.

Por si só, esse objetivo seria o oposto de introduzir "perfis" ou "assistentes” para ajudar a avaliar a(s) utilização(ções) pretendidas (quando da compra) para um PC. Isso não significa que um OEM não poderia oferecer tal experiência de perfil, o que daria uma experiência OOBE diferenciada, mas não uma pela qual pediríamos que todos os clientes passassem como parte de uma instalação de “OS central”.

Reconheço que muitos de vocês, como entusiastas de PCs, passaram pela experiência de instalar um PC Linux usando uma das variedades de gerenciadores de pacotes - provavelmente muitas vezes só para fazer com que uma instalação funcionasse direito. Como viram com essas instalações (especialmente como as coisas convergiram recentemente num distribuidor específico voltado para o usuário final), as formas pelas quais você pode produzir um sistema que roda mal excedem as formas pelas quais você pode produzir uma instalação totalmente adequada (para suas necessidades). Na prática, sabemos que muitos componentes acabam dependendo de muitos outros e no fim das contas é um desafio gerenciar e ajustar esse gráfico de dependência, mesmo como um gerenciador de dependência de software (como o Windows Installer). Conseqüentemente, geralmente vemos os clientes se beneficiando de uma ampla base de softwares na máquina, contanto que isso não tenha um custo alto - desenvolver a instalação faz parte do desenvolvimento do produto, de equilibrar a área de cobertura, conexões de arquitetura, confiabilidade do sistema, etc.

Portanto, nosso contexto para a primeira experiência seria o de que não queremos aumentar a complexidade onde menos interessa aos clientes, já que eles querem atingir a emoção de usar seu novo PC. Isso parece um pouco com os vendedores de carros que não lhe entregam a chave até que você se sente e assista a um DVD sobre o carro e depois faça uma inspeção nele - se você for como eu deve estar gritando "me dê as chaves e me deixe sair daqui".  Achamos que os compradores de PCs são mais ou menos assim e nossas pesquisas confirmam isso ao redor do mundo.

Também reconhecemos que existem usuários avançados que podem querer ajustar o sistema em execução por uma variedade de motivos (desempenho, área de cobertura, área de superfície, etc.). Chamamos isso de “Ligando ou Desligando Recursos do Windows”, que é o próximo item do qual vocês falaram.

Recursos do Windows

Se nós fizermos a instalação típica do Windows como uma que tenha basicamente todos os recursos da SKU (unidade de manutenção em estoque) que o cliente comprou, então como fica o cliente que deseja ajustar o que foi instalado e remover alguma coisa? Os clientes podem querer remover alguns recursos porque simplesmente nunca os usam e não querem fazê-lo acidentalmente ou carregar neles o "código" que possam executar. Os clientes podem estar definindo uma função para o PC (caixa registradora) e portanto se certificando de que alguns recursos específicos nunca estejam lá. Há muitos motivos para isso. Há vários lançamentos o Windows já possui a habilidade de instalar ou desinstalar vários recursos que fazem parte dele. No Windows Vista isso se tornou mais robusto conforme os recursos são removidos do sistema em execução, mas também permaneceram disponíveis para reutilização sem o DVD original. Também tornamos a lista de recursos mais longa no Windows Vista.

Para o Windows 7, muitos nos pediram para tornar essa lista ainda mais longa e conter mais recursos. Isso é algo que estamos considerando seriamente para o Windows 7, já que achamos que é consistente com os objetivos de design de "escolha e controle" dos quais vocês já nos ouviram falar bastante com o Internet Explorer 8.0 beta 2.

Claro que enfrentamos o mesmo desafio que as distribuições do Linux têm: a capacidade de remover rapidamente algumas coisas pode causar problemas em outros recursos quando da remoção; você passa por um processo complexo de informar ao cliente sobre essas “dependências” e no fim das contas você acaba sentindo como se tudo estivesse interligado. Em algumas instalações de OS esse conjunto funciona razoavelmente bem porque há uma duplicação dos recursos (você escolhe a partir de vários navegadores de arquivos, vários navegadores web, vários pacotes de office, até várias GUIs). O OS Windows central, apesar de não estar livre de duplicações, não possui esse tipo de configuração. Ao invés disso lançamos uma plataforma à qual os clientes podem adicionar muitos componentes conforme quiserem.

Oferecemos várias ferramentas disponíveis para clientes que desejarem remover, recolocar ou somente evitar o acesso a componentes do Windows:

  • Definir os Programas Padrão (ou Definir Acesso e Padrões do Programa). No Vista esses recursos lhe permitem determinar os programas/manipuladores por tipo de arquivo ou protocolo. Isso foi introduzido no Windows XP SP1. No Vista o SYDP foi expandido e esperamos que todos os softwares da Microsoft registrem e empreguem esse mecanismo de forma adequada. Portanto se você quiser ter um programa de email padrão, manipulador padrão para GIF ou um navegador web de sua escolha, essa é a interface do usuário a ser usada. O próprio Windows respeita esses padrões para todos os tipos de arquivo que gerencia.
  • Customização do menu iniciar ou diretivas de grupo. Há algum tempo, administradores corporativos vêm criando PCs “baseados em funções” através da customização do menu iniciar (ou até mesmo retornando ao progman – gerenciador de programas) para mostrar somente um grupo específico de programas. Também vemos muito isso em cybercafés hoje em dia. A funcionalidade SPAD leva isso adiante e oferece uma ferramenta de usuário final para retirar acesso a programas de email, navegadores web, media players, programas de mensagem instantânea instalados e tempos de execução de máquinas virtuais.
  • Remoção de programas. Às vezes os clientes só querem remover programas. Com discos de capacidade pequena muitos buscaram remover mais e mais do Windows só para caber em SSDs. Eu certamente já vi algumas das pequenas instalações Windows. A ferramenta de suporte para remover códigos do Windows é utilizar o “Ligar e Desligar os Recursos do Windows”. na interface do usuário (no Vista). Há mais de 80 recursos nessa ferramenta nos pacotes premium do Vista hoje.

Muitos querem que a lista de recursos do Windows que podem ser ligados/desligados seja mais longa e houve muitas sugestões no site de coisas que poderiam ser disponibilizadas dessa forma. Isso é mais complexo por causa da plataforma do Windows, isto é, muitos desenvolvedores dependem de várias partes da plataforma Windows e simplesmente “supõem” que elas estão lá. Seja um media player que usa o catálogo de endereços do Windows, um pacote de finanças pessoais que utiliza spool de impressão avançado ou até um navegador totalmente novo que depende de recursos avançados de rede. Esses são exemplos reais de utilizações comuns de APIs de sistema que não parecem facilmente aparentes da perspectiva do usuário final do software.

Alguns exemplos são muito fáceis de ver e você deve esperar que façamos mais com relação a isso, tal como com os componentes de TabletPC. Tenho um PC que é um laptop bem pequeno e, apesar de possuir funcionalidade total de tablet, não é o melhor tamanho para eu fazer bons trabalhos com tinta (prefiro uma tela de 12.1” ou maior e esse PC tem uma de 10”). O código tablet possui uma área de cobertura na memória; na máquina de 1GB se eu remover os componentes tablet ela não tem desempenho melhor. Isso é algo que posso fazer hoje. As pessoas perguntaram pela Galeria de Fotos, Movie Maker, Windows Mail, Windows Calendar... são bons comentários e coisas boas para nós pensarmos para o Windows 7.

Um ponto importante é que a grande maioria das coisas que você remove dessa forma consome muito pouco ou nenhum recurso se você não as está utilizando. Portanto, apesar de você poder reduzir a área de superfície do PC provavelmente não vai obter melhor desempenho dele. Por exemplo, o Windows Mail não lhe atrasa de forma alguma se você não tiver nenhuma conta de email (ou de notícias) configurada. Para ter certeza você poderia ocultar o acesso com SPAD ou só alterar o identificador de protocolo padrão para o de email de sua preferência. Outro exemplo é que você pode só alterar a associação e nunca iniciar a galeria de fotos para imagens se isso for o que você preferir. Isso significa que esses recursos não ocuparão memória.

Essa foi uma oportunidade de continuar nossa discussão sobre como estamos aprendendo a partir das discussões e de alguns pontos específicos que apareceram bastante. Espero que estejamos adquirindo uma visão comum sobre como vemos alguns dos assuntos levantados.

Esse artigo ganhou o recorde em tamanho. Não esperem que isso ocorra com freqüência :-)

--Steven