¿Qué tan difícil sería para un estudiante graduado construir una versión más simple de Sourcegraph?

(Soy uno de los creadores de Sourcegraph ).

Depende de lo que quieras decir con “más simple”; es decir, qué quiere que haga y cuánto código desea indexar. Al igual que prácticamente cualquier otro sitio web grande (Google, Twitter, etc.), es fácil, divertido y educativo hacer una versión simple, pero es desafiante hacer que funcione a escala y lidiar con todos los casos límite.

Si solo quiere algo como Sourcegraph en el código de un único repositorio, puede usar nuestra cadena de herramientas de análisis de código abierto, srclib . Analizará el código y las dependencias y descargará JSON en el directorio .srclib-cache. Luego puede usar los complementos del editor srclib o el programa “src” incluido para consultar esos datos o escribir otras aplicaciones que los consuman.

Lo bueno de srclib es que es una capa de abstracción entre el analizador de código y la aplicación que consume el análisis. Eso significa que sus herramientas no necesitan ser específicas del idioma, y ​​sus analizadores de idiomas no necesitan ser específicos de la aplicación.

Dado que los datos de análisis de código son solo JSON (consulte Modelo de datos en los documentos srclib ), es fácil de usar. Te encontrarás con algunas cosas difíciles cuando quieras agregar enlaces y resaltado de sintaxis al código, y otras cosas por el estilo, pero hemos lanzado una gran cantidad de código fuente abierto para ayudarte con eso (como el paquete de anotaciones ).

En general, escribir una aplicación que utiliza la salida srclib para mostrar cosas ingeniosas sobre su código es bastante fácil. Lanzamos srclib con ese objetivo, y la gente ya ha creado complementos de editor y herramientas de análisis de licencias. La principal dificultad estará en escribir la aplicación que la usa, no en nada relacionado con el análisis de la fuente.

Si desea escribir las partes de análisis de código usted mismo, puede mirar las cadenas de herramientas individuales para cada idioma para tener una idea de lo que está involucrado: srclib-go , srclib-java , etc. Hackear estos requiere una buena comprensión de los compiladores y un mucha intuición de sistemas (CS “street smarts”) para tratar con sistemas de compilación, reproducibilidad, casos extremos, incompatibilidades de versión, etc. Se necesita de unos días a unos meses para hacer una cadena de herramientas de trabajo completa para un idioma, dependiendo de El estado de las herramientas existentes. Una vez que haya creado 1 o 2 cadenas de herramientas, las siguientes son significativamente más fáciles.

Si está interesado en escribir una cadena de herramientas de análisis de código para un nuevo idioma, avíseme y con gusto le asesoraremos. También puede ejecutar “src push” con su nueva cadena de herramientas instalada localmente para enviar el código y la salida de análisis a Sourcegraph, y cualquier otra persona lo indexará y podrá explorar.

Hacer que Sourcegraph funcione en repositorios, para múltiples lenguajes de programación, en diferentes confirmaciones (para mostrar diferencias estructurales) y a escala (más de 100.000 repositorios y repositorios gigantes gigantes) es mucho más difícil. Me encantaría explicar los desafíos que hemos enfrentado, pero la pregunta es sobre la construcción de una versión más simple de Sourcegraph , por lo que está más allá del alcance por ahora. 🙂 (Si tiene curiosidad, consulte nuestra charla de Google I / O 2014 sobre Sourcegraph ).

(PD: si usted o alguien más que está leyendo esto está interesado en estas cosas, ¡únase a nosotros para construir Sourcegraph! Estamos contratando y sucederán muchas cosas emocionantes en los próximos meses).

More Interesting

Cómo manejar el trabajo artístico en el desarrollo de juegos independientes como desarrollador de software

¿Qué desarrolladores de software conozco para confiar en mi idea legalmente desprotegida?

Cómo comenzar a convertirse en un desarrollador de aplicaciones o software exitoso

El desarrollo de software requiere mucho pensamiento y enfoque claros. ¿Cómo se logra ese nivel de pensamiento? Muchas veces pienso demasiado.

¿Cuáles son los mejores libros de desarrollo de software que resisten el paso del tiempo?

¿Las nuevas empresas y los desarrolladores experimentados usarán Swift de Apple?

Para una empresa de nueva creación, ¿cuál podría ser un buen software de gestión de productos / proyectos para trabajar (o reemplazar) a jira?

¿Cuán realista es para un desarrollador con 1-2 años de experiencia negociar un salario de $ 125k en una empresa de tecnología de Silicon Valley?

¿Cómo esperan las empresas que alguien obtenga 2 años de experiencia como desarrollador junior si casi todas las vacantes son para personas con 2 años de experiencia?

¿Cómo ganan dinero / sobreviven los desarrolladores de software mientras su software está en desarrollo antes de los ingresos?

Cómo pasar del desarrollador o programador de software Zero To Hero

¿En qué campo debe un desarrollador de software conseguir trabajo?

¿Qué medidas debe poner en práctica un desarrollador de software próximo / maestro para resistir la mayor competencia en el mercado laboral?

¿Qué características debo tener en cuenta si estoy desarrollando un software de punto de venta POS?

¿Cuántos desarrolladores de software viven en Israel? ¿Cómo se distribuyen?