hgbook
diff es/intro.tex @ 404:1839fd383e50
translated a few subsections of intro
author | Igor TAmara <igor@tamarapatino.org> |
---|---|
date | Sat Nov 08 21:47:35 2008 -0500 (2008-11-08) |
parents | 4cdeb830118b |
children | 779944196e2a |
line diff
1.1 --- a/es/intro.tex Sat Nov 08 19:31:13 2008 -0500 1.2 +++ b/es/intro.tex Sat Nov 08 21:47:35 2008 -0500 1.3 @@ -141,167 +141,184 @@ 1.4 ha tenido un éxito enorme; Es probablemente el sistema de control de 1.5 revisiones más extendido del planeta. 1.6 1.7 -In the early 1990s, Sun Microsystems developed an early distributed 1.8 -revision control system, called TeamWare. A TeamWare workspace 1.9 -contains a complete copy of the project's history. TeamWare has no 1.10 -notion of a central repository. (CVS relied upon RCS for its history 1.11 -storage; TeamWare used SCCS.) 1.12 - 1.13 -As the 1990s progressed, awareness grew of a number of problems with 1.14 -CVS. It records simultaneous changes to multiple files individually, 1.15 -instead of grouping them together as a single logically atomic 1.16 -operation. It does not manage its file hierarchy well; it is easy to 1.17 -make a mess of a repository by renaming files and directories. Worse, 1.18 -its source code is difficult to read and maintain, which made the 1.19 -``pain level'' of fixing these architectural problems prohibitive. 1.20 - 1.21 -In 2001, Jim Blandy and Karl Fogel, two developers who had worked on 1.22 -CVS, started a project to replace it with a tool that would have a 1.23 -better architecture and cleaner code. The result, Subversion, does 1.24 -not stray from CVS's centralised client/server model, but it adds 1.25 -multi-file atomic commits, better namespace management, and a number 1.26 -of other features that make it a generally better tool than CVS. 1.27 -Since its initial release, it has rapidly grown in popularity. 1.28 - 1.29 -More or less simultaneously, Graydon Hoare began working on an 1.30 -ambitious distributed revision control system that he named Monotone. 1.31 -While Monotone addresses many of CVS's design flaws and has a 1.32 -peer-to-peer architecture, it goes beyond earlier (and subsequent) 1.33 -revision control tools in a number of innovative ways. It uses 1.34 -cryptographic hashes as identifiers, and has an integral notion of 1.35 -``trust'' for code from different sources. 1.36 - 1.37 -Mercurial began life in 2005. While a few aspects of its design are 1.38 -influenced by Monotone, Mercurial focuses on ease of use, high 1.39 -performance, and scalability to very large projects. 1.40 - 1.41 -\section{Trends in revision control} 1.42 - 1.43 -There has been an unmistakable trend in the development and use of 1.44 -revision control tools over the past four decades, as people have 1.45 -become familiar with the capabilities of their tools and constrained 1.46 -by their limitations. 1.47 - 1.48 -The first generation began by managing single files on individual 1.49 -computers. Although these tools represented a huge advance over 1.50 -ad-hoc manual revision control, their locking model and reliance on a 1.51 -single computer limited them to small, tightly-knit teams. 1.52 - 1.53 -The second generation loosened these constraints by moving to 1.54 -network-centered architectures, and managing entire projects at a 1.55 -time. As projects grew larger, they ran into new problems. With 1.56 -clients needing to talk to servers very frequently, server scaling 1.57 -became an issue for large projects. An unreliable network connection 1.58 -could prevent remote users from being able to talk to the server at 1.59 -all. As open source projects started making read-only access 1.60 -available anonymously to anyone, people without commit privileges 1.61 -found that they could not use the tools to interact with a project in 1.62 -a natural way, as they could not record their changes. 1.63 - 1.64 -The current generation of revision control tools is peer-to-peer in 1.65 -nature. All of these systems have dropped the dependency on a single 1.66 -central server, and allow people to distribute their revision control 1.67 -data to where it's actually needed. Collaboration over the Internet 1.68 -has moved from constrained by technology to a matter of choice and 1.69 -consensus. Modern tools can operate offline indefinitely and 1.70 -autonomously, with a network connection only needed when syncing 1.71 -changes with another repository. 1.72 - 1.73 -\section{A few of the advantages of distributed revision control} 1.74 - 1.75 -Even though distributed revision control tools have for several years 1.76 -been as robust and usable as their previous-generation counterparts, 1.77 -people using older tools have not yet necessarily woken up to their 1.78 -advantages. There are a number of ways in which distributed tools 1.79 -shine relative to centralised ones. 1.80 - 1.81 -For an individual developer, distributed tools are almost always much 1.82 -faster than centralised tools. This is for a simple reason: a 1.83 -centralised tool needs to talk over the network for many common 1.84 -operations, because most metadata is stored in a single copy on the 1.85 -central server. A distributed tool stores all of its metadata 1.86 -locally. All else being equal, talking over the network adds overhead 1.87 -to a centralised tool. Don't underestimate the value of a snappy, 1.88 -responsive tool: you're going to spend a lot of time interacting with 1.89 -your revision control software. 1.90 - 1.91 -Distributed tools are indifferent to the vagaries of your server 1.92 -infrastructure, again because they replicate metadata to so many 1.93 -locations. If you use a centralised system and your server catches 1.94 -fire, you'd better hope that your backup media are reliable, and that 1.95 -your last backup was recent and actually worked. With a distributed 1.96 -tool, you have many backups available on every contributor's computer. 1.97 - 1.98 -The reliability of your network will affect distributed tools far less 1.99 -than it will centralised tools. You can't even use a centralised tool 1.100 -without a network connection, except for a few highly constrained 1.101 -commands. With a distributed tool, if your network connection goes 1.102 -down while you're working, you may not even notice. The only thing 1.103 -you won't be able to do is talk to repositories on other computers, 1.104 -something that is relatively rare compared with local operations. If 1.105 -you have a far-flung team of collaborators, this may be significant. 1.106 - 1.107 -\subsection{Advantages for open source projects} 1.108 - 1.109 -If you take a shine to an open source project and decide that you 1.110 -would like to start hacking on it, and that project uses a distributed 1.111 -revision control tool, you are at once a peer with the people who 1.112 -consider themselves the ``core'' of that project. If they publish 1.113 -their repositories, you can immediately copy their project history, 1.114 -start making changes, and record your work, using the same tools in 1.115 -the same ways as insiders. By contrast, with a centralised tool, you 1.116 -must use the software in a ``read only'' mode unless someone grants 1.117 -you permission to commit changes to their central server. Until then, 1.118 -you won't be able to record changes, and your local modifications will 1.119 -be at risk of corruption any time you try to update your client's view 1.120 -of the repository. 1.121 - 1.122 -\subsubsection{The forking non-problem} 1.123 - 1.124 -It has been suggested that distributed revision control tools pose 1.125 -some sort of risk to open source projects because they make it easy to 1.126 -``fork'' the development of a project. A fork happens when there are 1.127 -differences in opinion or attitude between groups of developers that 1.128 -cause them to decide that they can't work together any longer. Each 1.129 -side takes a more or less complete copy of the project's source code, 1.130 -and goes off in its own direction. 1.131 - 1.132 -Sometimes the camps in a fork decide to reconcile their differences. 1.133 -With a centralised revision control system, the \emph{technical} 1.134 -process of reconciliation is painful, and has to be performed largely 1.135 -by hand. You have to decide whose revision history is going to 1.136 -``win'', and graft the other team's changes into the tree somehow. 1.137 -This usually loses some or all of one side's revision history. 1.138 - 1.139 -What distributed tools do with respect to forking is they make forking 1.140 -the \emph{only} way to develop a project. Every single change that 1.141 -you make is potentially a fork point. The great strength of this 1.142 -approach is that a distributed revision control tool has to be really 1.143 -good at \emph{merging} forks, because forks are absolutely 1.144 -fundamental: they happen all the time. 1.145 - 1.146 -If every piece of work that everybody does, all the time, is framed in 1.147 -terms of forking and merging, then what the open source world refers 1.148 -to as a ``fork'' becomes \emph{purely} a social issue. If anything, 1.149 -distributed tools \emph{lower} the likelihood of a fork: 1.150 +A comienzos de los noventa(1990s), Sun MicroSystems desarrollo un 1.151 +temprano sistema distribuido de revisión de controles llamado TeamWare 1.152 +Un espacio de trabajo TeamWare contiene una copia completa de la 1.153 +historia del proyecto. TeamWare no tiene la noción de repositorio 1.154 +central. (CVS se basaba en RCS para el almacenamiento de su historia; 1.155 +TeamWare usaba SCCS.) 1.156 + 1.157 +A medida que avanzaba la decada de los noventa, se empezño a 1.158 +evidenciar los problemas de CVS. Alacena cambios simultáneos a muchos 1.159 +archivos de forma individual, en lugar de agruparlos como una 1.160 +operación única y atómica lógicamente. No maneja bien su jerarquía de 1.161 +ficheros bien; es fácil desordenar un repositorio renombrando ficheros 1.162 +y directorios. Peor aún, su código fuente es difícil de leer y 1.163 +mantener, lo que hace que su ``umbral de dolor'' para arreglar sus 1.164 +problemas arquitecturales algo prohibitivo. 1.165 + 1.166 +En 2001, Jim Blandy y Karl Fogel, dos desarrolladores que habían 1.167 +trabajado en CVS, comenzaron un proyecto para reemplazarlo con una 1.168 +herramienta con mejor arquitectura y código más limpio. El resultado, 1.169 +Subversion, no se separó del modelo centralizado cliente/servidor de 1.170 +CVS, pero añadió consignaciones atómicas de varios ficheros, mejor 1.171 +manejo de nombres de espacios, y otras características que lo hacen 1.172 +mejor que CVS. Desde su versión inicial, ha ido creciendo en 1.173 +popularidad. 1.174 + 1.175 +Más o menos en forma simultánea Graydon Hoare comenzó a trabajar en un 1.176 +sistema distribuido de control de versiones ambicioso que llamó 1.177 +Monotone. Mientras que Monotone se enfocaba a evitar algunas fallas de 1.178 +diseño de CVS con una arquitectura peer-to-peer, fue mucho más 1.179 +allá(junto con otros proyectos subsecuentes) que unas herramientas de 1.180 +control de revisiones en varios aspectos innovadores. Usa hashes 1.181 +criptográficos como identificadores, y tiene una noción integral de 1.182 +``confianza'' para código de diversas fuentes. 1.183 + 1.184 +Mercurial nació en el 2005. Algunos de sus aspectos de de diseño 1.185 +fueron influenciados por Monotone, pero Mercurial se enfoca en la 1.186 +facilidad de uso, gran rendimiento y escalabilidad para proyectos muy 1.187 +grandes. 1.188 + 1.189 +\section{Tendencias en el control de revisiones} 1.190 + 1.191 +Ha habido varias tendencias en el desarrollo y uso de las herramientas 1.192 +de control de revisiones en las pasadas cuatro décadas, mientras la 1.193 +gente se ha vuelto familiar con las capacidades de sus herramientas 1.194 +así mismo con sus limitaciones. 1.195 + 1.196 +La primera generación comenzó administrando archivos individuales en 1.197 +computadores por persona. A pesar de que tales herramientas 1.198 +representaron un avance importante frente al control de revisiones 1.199 +manual, su modelo de candados y la limitación a un sólo computador, 1.200 +determinó equipos de trabajo pequeños y acoplados. 1.201 + 1.202 +La segunda generación dejó atrás esas limitaciones moviéndose a 1.203 +arquitecturas centradas en redes, y administrando proyectos completos 1.204 +uno a la vez. A medida que los proyectos crecían, nacieron nuevos 1.205 +problemas. Con la necesidad de comunicación frecuente con los 1.206 +servidores, escalar estas máquinas se convirtió en un problema en 1.207 +proyectos realmente grandes. Las redes con poca estabilidad impidieron 1.208 +que usuarios remotos se conectaran al servidor. A medida que los 1.209 +proyecos de código abierto comenzaron a ofrecer acceso de sólo lectura 1.210 +de forma anónima a cualquiera, la gente sin permiso para consignar, 1.211 +vio que no podían usar tales herramientas para interactuar en un 1.212 +proyecto de forma natural, puesto que no podían guardar sus cambios. 1.213 + 1.214 +La generación actual de herramientas de control de revisiones es de 1.215 +forma natural peer-to-peer. Todos estos sistemas han eliminado la 1.216 +dependencia de un único servidor central, y han permitido que la 1.217 +gente distribuya sus datos de control de revisiones donde realmente se 1.218 +necesita. La colaboración a través de Internet ha cambiado las 1.219 +limitantes tecnológicas a la cuestión de elección y consenso. Las 1.220 +herramientas modernas pueden operar sin conexión indefinidamenta y 1.221 +autónomamente, necesitando una conexión de red solamente para 1.222 +sincronizar los cambios con otro repositorio. 1.223 + 1.224 +\section{Algunas ventajas del control distribuido de revisiones} 1.225 + 1.226 +A pesar de que las herramientas para el control distribuido de 1.227 +revisiones lleva varios años siendo tan robusto y usable como la 1.228 +generación previa de su contraparte, personas que usan herramientas 1.229 +más antiguas no se han percatado de sus ventajas. Hay gran cantidad 1.230 +de situaciones en las cuales las herramientas distribuidas brillan 1.231 +frente a las centralizadas. 1.232 + 1.233 +Para un desarrollador individual, las herramientas distribuidas casi 1.234 +siempre son más rápidas que las centralizadas. Por una razón sencilla: 1.235 +Una herramienta centralizada necesita comunicarse por red para las 1.236 +operaciones más usuales, debido a que los metadatos se almacenan en 1.237 +una sola copia en el servidor central. Una herramienta distribuida 1.238 +almacena todos sus metadatos localmente. Con todo lo demás de la 1.239 +misma forma, comunicarse por red tiene un sobrecosto en una 1.240 +herramienta centralizada. No subestime el valor de una herramienta de 1.241 +respuesta rápida: Usted empleará mucho tiempo interactuando con su 1.242 +programa de control de revisiones. 1.243 + 1.244 +Las herramientas distribuidas son indiferentes a los caprichos de su 1.245 +infraestructura de servidores, de nuevo, debido a la replicación de 1.246 +metadatos en tantos lugares. Si usa un sistema centralizado y su 1.247 +servidor explota, ojalá los medios físicos de su copia de seguridad 1.248 +sean confiables, y que su última copia sea reciente y además 1.249 +funcione. Con una herramienta distribuida tiene tantas copias de 1.250 +seguridad disponibles como computadores de contribuidores. 1.251 + 1.252 +La confiabilidad de su red afectará las herramientas distribuidas de 1.253 +una forma mucho menor que las herramientas centralizadas No puede 1.254 +siquiera usar una herramienta centralizada sin conexión de red, 1.255 +excepto con algunas órdenes muy limitadas. Con herramientas 1.256 +distribuidas, si sus conexión cae mientras usted está trabajando, 1.257 +podría nisiquiera darse cuenta. Lo único que que no podrá hacer es 1.258 +comunicarse con repositorios en otros computadores, algo que es 1.259 +relativamente raro comparado con las operaciones locales. Si tiene 1.260 +colaboradores remotos en su equipo, puede ser significante. 1.261 + 1.262 +\subsection{Ventajas para proyectos de código abierto} 1.263 + 1.264 +Si descubre un proyecto de código abierto y decide que desea comenzar 1.265 +a trabajar en él, y ese proyecto usa una herramienta de control 1.266 +distribuido de revisiones, usted es un par con la gente que se 1.267 +considera el ``alma'' del proyecto. Si ellos publican los 1.268 +repositorios, se puede copiar inmediatamente la historia del proyecto, 1.269 +hacer cambios y guardar su trabajo, usando las mismas herramientas de 1.270 +la misma forma que ellos. En contraste, con una herramienta 1.271 +centralizada, debe usar el programa en un modo ``sólo lectura'' a 1.272 +menos que alguien le otorgue permisos para consignar cambios en el 1.273 +repositorio central. Hasta entonces, no podrá almacenar sus cambios y 1.274 +sus modificaciones locales correrán el riesgo de dañarse cuando trate 1.275 +de actualizar su vista del repositorio. 1.276 + 1.277 +\subsubsection{Las bifurcaciones(forks) no son un problema} 1.278 + 1.279 +Se ha mencionado que las herramientas de control distribuido de 1.280 +versiones albergan un riesgo a los proyectos de código abierto, puesto 1.281 +que se vuelve muy sencillo hacer una ``bifurcanción''\NdT{fork} del 1.282 +desarrollo del proyecto. Una bifurcación pasa cuando hay diferencias 1.283 +de opinión o actitud entre grupos de desarrolladores que desenvoca en 1.284 +la decisión de la imposibilidad de continuar trabajando juntos. Cada 1.285 +parte toma una copia más o menos completa del código fuente del 1.286 +proyecto y toma su propio rumbo. 1.287 + 1.288 +En algunas ocasiones los líderes de las bifurcaciones reconcilian sus 1.289 +diferencias. Con un sistema centralizado de control de revisiones, el 1.290 +proceso \emph{técnico} de reconciliarse es doloroso, y se hace de 1.291 +forma muy manual. Tiene que decidir qué historia de revisiones va a 1.292 +``win'', e injertar los cambios del otro equipo en el árbol de alguna 1.293 +manera. Con esto usualmente se pierde algo o todo del historial de la 1.294 +revisión de alguna de las partes. 1.295 + 1.296 +Lo que las herramientas distribuidas hacen con respecto a las 1.297 +bifurcaciones, es que las bifurcaciones son la \emph{única} forma de 1.298 +desarrollar un proyecto. Cada cambio que usted hace es potencialmente 1.299 +un punto de bifurcación. La gran fortaleza de esta aproximación es que 1.300 +las herramientas distribuidas de control de revisiones tiene que ser 1.301 +bueno al \emph{fusionar} las bifurcaciones, porque las bifurcaciones 1.302 +son absolutamente fundamentales: pasan todo el tiempo. 1.303 + 1.304 +Si todas las porciones de trabajo que todos hacen todo el tiempo, se 1.305 +enmarca en términos de bifurcaciones y fusiones, entonces a aquello a 1.306 +lo que se refiere en el mundo del código abierto a una ``bifurcación'' 1.307 +se convierte \emph{puramente} en una cuestión social. Lo que hacen las 1.308 +herramientas distribuidas es \emph{disminuir} la posibilidad de una 1.309 +bifurcación porque: 1.310 \begin{itemize} 1.311 -\item They eliminate the social distinction that centralised tools 1.312 - impose: that between insiders (people with commit access) and 1.313 - outsiders (people without). 1.314 -\item They make it easier to reconcile after a social fork, because 1.315 - all that's involved from the perspective of the revision control 1.316 - software is just another merge. 1.317 +\item Eliminan la distinción social que las herramientas centralizadas 1.318 + imponen: esto entre los miembros (personas con permiso de consignar) 1.319 + y forasteros(los que no tienen el permiso). 1.320 +\item Facilitan la reconciliación después de una bifurcación social, 1.321 + porque todo lo que concierne al programa de control de revisiones es 1.322 + una fusión. 1.323 \end{itemize} 1.324 1.325 -Some people resist distributed tools because they want to retain tight 1.326 -control over their projects, and they believe that centralised tools 1.327 -give them this control. However, if you're of this belief, and you 1.328 -publish your CVS or Subversion repositories publically, there are 1.329 -plenty of tools available that can pull out your entire project's 1.330 -history (albeit slowly) and recreate it somewhere that you don't 1.331 -control. So while your control in this case is illusory, you are 1.332 -forgoing the ability to fluidly collaborate with whatever people feel 1.333 -compelled to mirror and fork your history. 1.334 +Algunas personas se resisten a las herramientas distribuidas porque 1.335 +desean mantener control completo sobre sus proyectos, y creen que las 1.336 +herramientas centralizadas les dan tal control. En todo caso, si este 1.337 +es su parecer, y publica sus repositorios de CVS o Subversion, hay 1.338 +muchas herramientas disponibles que pueden obtener la historia 1.339 +completa(A pesar de lo lento) y recrearla en otro sitio que usted no 1.340 +controla. Siendo así un control ilusorio, está impidiendo la fluidez 1.341 +de colaboración frente a quien se sienta impulsado a obtener una copia 1.342 +y hacer una bifurcación con su historia. 1.343 1.344 \subsection{Advantages for commercial projects} 1.345