¿Por qué Facebook NO UTILIZA Git?

midulive
17 Mar 202406:50

Summary

TLDREl artículo explora por qué Facebook optó por utilizar Mercurial en lugar de Git, a pesar de la mayor popularidad de este último. Se revela que los problemas de rendimiento de Git eran un cuello de botella para la productividad de Facebook, con tiempos de ejecución lentos para operaciones básicas. La respuesta de Git a sus problemas fue no muy cooperativa, sugiriendo simplemente dividir el repositorio, lo que llevó a Facebook a buscar ayuda en el equipo de Mercurial, que resultó ser más dispuesto a colaborar y mejorar el sistema para sus necesidades específicas. Esto resalta la importancia de la colaboración y la adaptabilidad en el mundo del control de versiones.

Takeaways

  • 📜 Facebook no utiliza git, sino Mercurial como sistema de control de versiones.
  • 📈 Mercurial es una alternativa menor en tamaño comparado con git, que ocupa alrededor del 1-2% del mercado.
  • 🚀 La razón principal para migrar a Mercurial fue el rendimiento, ya que git resultó ser demasiado lento para sus necesidades.
  • 🔍 Facebook experimentó cuellos de botella de productividad debido a problemas de rendimiento con git.
  • 💡 Las mejoras de rendimiento incluyen trabajar con historiales grandes, clonado y pull, lo que se mejoró hasta en 10 veces la velocidad con Mercurial.
  • 📊 Un git status en Facebook tardaba 39 minutos y un git blame 44 minutos, lo cual era inaceptable para la productividad.
  • 🔄 La respuesta de git ante los problemas presentados por Facebook fue no muy cooperativa, sugiriendo dividir el repositorio en varios.
  • 🤝 En contraste, el equipo de Mercurial mostró una mayor apertura para colaborar y ayudar a Facebook a hacer las mejoras necesarias.
  • 📈 La decisión de Facebook de utilizar Mercurial se basó en la disposición de su equipo para colaborar y solucionar los problemas de rendimiento.
  • 🌐 La información sobre la migración de Facebook a Mercurial y las conversaciones relacionadas son públicas y disponibles para su revisión.

Q & A

  • ¿Por qué Facebook no utiliza git?

    -Facebook no utiliza git porque optó por Mercurial, una alternativa que ofrecía mejores rendimientos en situaciones de grandes repositorios y históricos.

  • ¿Cuál es la cuota de mercado de git frente a Mercurial?

    -Git tiene una cuota de mercado del 90%, mientras que Mercurial es alrededor del 1% o 2%.

  • ¿Qué problemas de rendimiento tenía Facebook con git?

    -Con git, Facebook experimentaba problemas de rendimiento significativos, como tardar 39 minutos en ejecutar un comando `git status` y 44 minutos en realizar un `git blame`.

  • ¿Cómo afectaron estos problemas de rendimiento a la productividad de Facebook?

    -Los problemas de rendimiento de git convirtieron en un cuello de botella para la productividad de Facebook, afectando seriamente su capacidad para manejar su crecimiento rápido.

  • ¿Qué mejoras de rendimiento menciona el artículo sobre Mercurial?

    -El artículo menciona mejoras en el clonado y el pull, y que trabajando con Mercurial era hasta 10 veces más rápido que trabajar con git en situaciones de grandes repositorios.

  • ¿Qué fue la respuesta de git ante los problemas reportados por Facebook?

    -La respuesta de git fue que no podían hacer mucho, y sugirieron dividir el repositorio en diferentes ones para manejar el tamaño del historial.

  • ¿Qué hizo Facebook después de que git no ofreciera soluciones satisfactorias?

    -Después de no recibir una respuesta satisfactoria de git, Facebook consideró alternativas y se volvió hacia Mercurial, que estuvo más abierto a colaborar y ayudarles con las mejoras necesarias.

  • ¿Qué es la razón principal por la que Facebook se decidió por Mercurial?

    -La razón principal es que el equipo de Mercurial estuvo más abierto a la colaboración y ayudó a Facebook a crear nuevos patrones y mejoras para manejar su gran repositorio.

  • ¿Qué se puede inferir sobre la toma de decisiones en casos de uso claro con repositorios gigantes?

    -En casos de uso claro con repositorios gigantes, la elección de una herramienta de control de versiones no siempre depende de su popularidad, sino de la capacidad de la herramienta para solucionar los problemas específicos que se enfrentan.

  • ¿Qué pasó con la comunicación entre Facebook y el equipo de git?

    -La comunicación entre Facebook y el equipo de git no resultó en una solución para los problemas reportados, lo que llevó a Facebook a buscar alternativas y migrar a Mercurial.

  • ¿Qué se puede aprender de este caso sobre la colaboración en el desarrollo de software?

    -Este caso demuestra la importancia de la colaboración abierta y la disposición de los equipos para ayudar en la mejora de las herramientas, ya que puede ser clave en la adopción de una tecnología en lugar de otra.

Outlines

00:00

📈 Por qué Facebook utiliza Mercurial en lugar de Git

Este párrafo aborda la decisión de Facebook de utilizar Mercurial en vez de Git para su sistema de control de versiones. Se menciona que, a pesar de la popularidad y el gran mercado de Git, Facebook optó por Mercurial debido a problemas de rendimiento que experimentaban con Git. Se destaca que Mercurial resultó ser más rápido en tareas como el clonado y el pull, mejorando significativamente la productividad. Además, se menciona una experiencia pasada de Facebook con Git, donde un comando simple como 'git status' tomaba 39 minutos en ejecutarse, lo que indicaba una gran lentitud y un cuello de botella en la productividad. Finalmente, el vídeo destaca la razón clave de la migración: un correo electrónico de Facebook a Git solicitando ayuda, que fue respondido con una propuesta poco cooperativa, lo que llevó a Facebook a buscar soluciones alternativas y a encontrar una mejor colaboración con el equipo de Mercurial.

05:01

🤝 Colaboración con Mercurial frente a la falta de mejoras en Git

Este párrafo narra la experiencia de Facebook al buscar mejoras en Git y la respuesta que recibieron. Al no encontrar una solución satisfactoria y ante la falta de mejoras significativas por parte de los desarrolladores de Git, Facebook se giró hacia Mercurial. La colaboración con el equipo de Mercurial resultó en mejoras significativas en el rendimiento y nuevas funcionalidades que atendían a las necesidades específicas de Facebook. El vídeo subraya la importancia de la colaboración y la apertura a nuevas soluciones, más allá de la popularidad o el tamaño de un proyecto, como es el caso de Mercurial frente a Git. Además, se menciona que la decisión de Facebook fue motivada por la efectividad y disposición de Mercurial para adaptarse a sus necesidades, en contraste con la respuesta no tan cooperativa de Git.

Mindmap

Keywords

💡Facebook

Facebook es una de las mayores redes sociales del mundo y en este contexto se menciona como una empresa que ha tomado la decisión de no utilizar git, sino Mercurial, para manejar su código fuente debido a problemas de rendimiento.

💡git

git es un sistema de control de versiones distribuido ampliamente utilizado en el desarrollo de software. En el video, se discute cómo Facebook ha decidido no utilizar git y optó por Mercurial por razones de rendimiento.

💡Mercurial

Mercurial es otro sistema de control de versiones distribuido, que se destaca por ser una alternativa más liviana y rápida que git. En el video, se explica que Facebook utilizó Mercurial para mejorar su eficiencia en el manejo de su gran cantidad de código.

💡rendimiento

El rendimiento se refiere a la eficiencia y velocidad a la que un sistema o aplicación puede realizar tareas. En el contexto del video, el rendimiento es un factor crítico para Facebook al decidir entre usar git o Mercurial.

💡código fuente

El código fuente es el conjunto de instrucciones que un programador escribe para crear un programa o aplicación. En el video, se discute cómo Facebook maneja su código fuente a través de un sistema de control de versiones.

💡repositorios

Los repositorios son lugares donde se almacena y se gestiona el código fuente en sistemas de control de versiones. En el video, se menciona la posibilidad de dividir el código en diferentes repositorios para mejorar el rendimiento.

💡colaboración

La colaboración se refiere a la capacidad de trabajar conjuntamente con otras personas para lograr un objetivo común. En el contexto del video, la colaboración es un aspecto clave en la decisión de Facebook al elegir Mercurial por su disposición a colaborar con ellos.

💡problemas de rendimiento

Los problemas de rendimiento son situaciones en las que un sistema o aplicación no funciona a la velocidad o eficiencia que se requiere. En el video, estos problemas son importantes porque afectaron la productividad de Facebook y llevaron a la migración a Mercurial.

💡clonado

El clonado en sistemas de control de versiones se refiere al proceso de crear una copia local de un repositorio para trabajar en ella. En el video, se menciona que Mercurial mejoró significativamente el tiempo de clonado en comparación con git.

💡pull

El pull es una acción en sistemas de control de versiones que consiste en obtener los cambios realizados por otros en un repositorio y combinarlos con la copia local del código. En el contexto del video, el pull se menciona como una operación que Mercurial mejoró significativamente.

Highlights

Facebook no utiliza git, sino Mercurial.

El artículo sobre por qué Facebook no utiliza git es interesante y revela la historia detrás de su elección.

Mercurial es una alternativa menor pero efectiva frente a git, que tiene una cuota de mercado del 90%.

El uso de Mercurial por parte de Facebook se debe a problemas de rendimiento con git.

Revelan que trabajando con Mercurial mejoró significativamente el rendimiento en clonado y pull.

El artículo de 2014 explica que Facebook experimentó un cuello de botella de productividad debido a git.

Un git status en Facebook tardaba 39 minutos, lo que indica la magnitud del repositorio y los problemas de escala.

El equipo de Facebook solicitó ayuda a git para mejorar la performance, pero la respuesta no fue cooperativa.

La respuesta de git sugirió dividir el repositorio en varios para abordar los problemas de rendimiento.

Facebook consideró que la respuesta de git no era una solución práctica para manejar su base de código.

El equipo de Mercurial mostró una mayor disposición a colaborar y ayudar a Facebook con sus problemas específicos.

Facebook migró a Mercurial debido a la mejor disposición al colaboración y la capacidad de mejorar el rendimiento.

El caso de Facebook muestra que la elección de un sistema de control de versiones puede depender de la disposición de la comunidad a la colaboración.

El artículo demuestra que la popularidad no siempre es el factor determinante en la elección de herramientas tecnológicas.

La experiencia de Facebook con git y Mercurial destaca la importancia de la performance y la escalabilidad en el control de versiones.

El intercambio de correos electrónicos entre Facebook y los equipos de git y Mercurial es público y puede ser revisado por cualquiera.

Transcripts

play00:00

Facebook no utiliza git lo sabías me he

play00:03

leído este artículo y me ha parecido tan

play00:05

interesante Por qué Facebook no utiliza

play00:07

git y de hecho una cosa Este título

play00:09

ponerle un textp es bastante interesante

play00:11

la historia es bastante interesante os

play00:13

voy a hacer el spoiler de qué es lo que

play00:14

utiliza Entonces si no utiliza git qué

play00:16

utiliza pues utiliza Mercurial que ya os

play00:19

digo yo que el el uso que tiene

play00:21

Mercurial es muy pequeño respecto a git

play00:24

Pero sigue siendo una de las grandes

play00:26

alternativas de git lo que pasa es que

play00:27

git tiene una cuota de Mercado del 90 y

play00:31

pico por c y Mercurial debe ser no sé el

play00:33

uno o el dos es muy poquito yo de hecho

play00:35

Mercurial lo utilicé hace 10,000

play00:37

millones de años en la universidad la

play00:38

pregunta del millón es esta Por qué no

play00:40

usa git no y aquí te explican un poco la

play00:42

historia y tal buscando resulta que aquí

play00:44

aunque es del 2014 fijaos que est este

play00:47

artículo es de meta es del 2014 pero

play00:50

aquí está hablando justamente de Por qué

play00:52

eh ves en lugar hemos mejorado Mercurial

play00:55

Mercurial no sé qué básicamente en este

play00:57

artículo explican que se camb

play01:00

por un tema de rendimiento vale Esto es

play01:02

lo que dicen aquí por un tema de

play01:04

rendimiento porque git les iba demasiado

play01:07

lento y resulta que tuvieron como un

play01:11

cuello de botella de productividad muy

play01:13

pronto por los problemas de rendimiento

play01:16

de git interesante la verdad es que está

play01:17

muy chulo el artículo Y entonces

play01:19

explican Por qué utilizan Mercurial las

play01:22

mejoras de rendimiento trabajar en

play01:24

historiales muy grandes mejorar el

play01:26

clonado y el Pull y que mejoraron hasta

play01:29

por 10 eran 10 veces más rápido

play01:31

trabajando con Mercurial que trabajando

play01:33

con git O sea que bastante veis aquí git

play01:36

Remote file lock basic hg este sería el

play01:39

el que tenían antes de Mercurial esto

play01:42

sería con git y esto sería lo que

play01:44

estaban haciendo ahora y bueno podéis

play01:46

ver la mejora de rendimiento en redes y

play01:48

todo esto pero no es esta la razón Esa

play01:51

es la historia Esta no es la red Esta no

play01:53

es la razón Lo cual es más interesante

play01:55

todavía leyendo el artículo en realidad

play01:58

eh ves o sea por el rendimiento no Por

play02:01

qué Y cómo Facebook migró de git Por qué

play02:05

17 millones de líneas de código en 44000

play02:07

archivos o sea Tremendo la verdad es que

play02:10

es bastante grande Pues en realidad la

play02:13

razón es este correo que no sé si

play02:16

cargará este correo este correo

play02:20

ch Esta es la razón Esta es la verdadera

play02:23

razón bueno básicamente lo voy a lo voy

play02:27

a resumir bastante rápido vale porque no

play02:30

lo vamos a leer Y tal Pero básicamente

play02:32

aquí lo que tenéis dice Hola amigos de

play02:34

git somos Facebook y hemos estado

play02:36

investigando que nuestro sistema de

play02:38

control de versiones git tiene que

play02:40

manejar nuestro crecimiento que es muy

play02:42

rápido y hemos utilizado un montón git y

play02:44

pero no no se está escalando y tal para

play02:46

que os hagáis una idea un git status nos

play02:50

tarda 39 minutos esto alguna vez os ha

play02:53

pasado un kit

play02:55

status 39 minutos en en frío y 24

play03:00

segundos ya calentito o sea claro

play03:02

Imagínate cómo tiene que ser repositorio

play03:03

comoo tiene ser la cosa bueno o por

play03:05

ejemplo un git blame 44 minutos un git

play03:08

at 7 segundos un git at 7 segundos si

play03:12

haces un comit un comit con un no verify

play03:16

quitando los archivos no tracket quiet

play03:19

no status 41 minutos call o sea es una o

play03:23

sea es que es una salvajada es una

play03:25

salvajada es que es increíble bueno Esto

play03:27

es lo que dice Facebook pero Es que es

play03:31

que es que la

play03:34

respuesta es brutal tío La respuesta es

play03:37

lo que le dice el de Facebook es Oye

play03:39

tenemos estos problemas eh hemos visto

play03:42

que la performance de git pues es un

play03:44

poco regulinchi habría que mejorar

play03:45

algunos puntos aquí entonces me gustaría

play03:48

saber si se pueden hacer algunas

play03:50

modificaciones mejor no sé qué sé cuánto

play03:52

y básicamente lo que dicen por aquí es

play03:54

del palo

play03:56

Mira no podemos hacer mucha cosa lo

play03:59

mejor que que podéis hacer es que lo

play04:00

dividis en diferentes repositorios que

play04:03

dividis que os acabéis un poco con el

play04:05

tema del historial Y al tomar por saco

play04:07

básicamente le contesta Esto vale le

play04:10

contesta esto que creéis esto y ya está

play04:12

no y aquí pues este sigue aquí como

play04:14

bueno Esto lo otro aquí tenéis el

play04:15

histórico no sé qué y continúan pero

play04:18

básicamente lo que le dice es que lo

play04:19

dividas en repositorios y ya está que no

play04:21

es mi problema sabes que no me vengas

play04:23

aquí a con problemas entonces Esa fue la

play04:26

razón la razón es que cuando fueron a

play04:27

git git les solucionó una patata

play04:30

básicamente dijeron not my Problem dice

play04:34

mientras puedes hacer esto no es una

play04:35

gran idea lo que deberías hacer es

play04:37

dividir los repositorios Vale y punto he

play04:40

estado trabajando en una empresa durante

play04:41

muchos años y lo mejor que puedes hacer

play04:43

es migrar lo todo y a tomar por saco

play04:45

Aunque puede ir bien git para

play04:47

repositorios grandes lo mejor que puedes

play04:49

hacer es nada que lo dividas y a tomar

play04:51

por saco o sea y ya está no entonces lo

play04:53

que dice aquí que la respuesta no era

play04:54

muy cooperativa que a ver tampoco es que

play04:57

le insulte ni mucho menos pero era más

play04:59

bien de nosotros no podemos hacer nada

play05:00

Esto es lo que hay entonces qué pasó

play05:03

Claro que git pues no parecía que iban a

play05:05

hacer ningún tipo de mejora respecto

play05:07

para intentar hacer esto y al final lo

play05:10

que pasó eh lo que hicieron es más que

play05:13

nada pues considerar alternativas y

play05:16

cuando fueron a mercurian a pedir ayuda

play05:18

y tal Pues sí que estuvieron mucho más

play05:21

abiertos justamente a ayudarles a crear

play05:23

nuevos patrones a hacer todas las

play05:26

mejoras que fuesen necesarias Y a partir

play05:28

de ahí es que esa es la razón por la que

play05:30

utilizaron Mercurial porque básicamente

play05:33

básicamente estaban más abiertos a la

play05:35

colaboración lo cual me parece muy

play05:36

interesante porque hay veces que

play05:38

pensamos no es que por qué no usan git

play05:40

es que están locos o yo que sé Claro

play05:42

tienen un caso de uso muy claro con un

play05:44

monor repositorio gigante y cuando

play05:47

fueron a pedir ayuda a git Que

play05:48

obviamente ellos no están obligados a

play05:50

darle ayuda a Facebook ni mucho menos

play05:52

pero quiero decir que hay veces que no

play05:53

es un tema de popularidad o lo que pueda

play05:55

tener más sentido sino que simplemente y

play05:58

llanamente es porque le ayudó el otro

play06:00

equipo y punto ya está porque le ayudó

play06:02

el otro equipo y punto y y ya está buo

play06:05

repos no tan gigantes es Sí y Mercurial

play06:08

contento con la posibilidad claro

play06:09

totalmente me parece lógico por parte de

play06:11

Facebook en este caso no Claro tiene

play06:13

todos los todo el sentido del mundo

play06:15

ostia midu quién filtra estas cosas no

play06:16

si es público si es público al final

play06:18

todo lo que habéis visto es totalmente

play06:20

público no hay nada absolutamente raro

play06:22

ni o sabes o sea se lo podéis ver sin

play06:25

ningún problema e los mails todo los

play06:27

mails es un intercambio de

play06:29

conversaciones que hay públicas eso lo

play06:31

puedes ver sin ningún

play06:48

problema

Rate This

5.0 / 5 (0 votes)

Ähnliche Tags
Control de versionesFacebookMercurialGitRendimientoColaboraciónRepositoriosDesarrollo softwareElección tecnológicaComparación VCS
Benötigen Sie eine Zusammenfassung auf Englisch?