¿Qué se necesita para crear un navegador web desde cero que funcione en una Mac?

Si realmente quieres eso desde cero, no es realmente posible en la vida .

Piensa en lo siguiente.

  • las líneas de código fuente son, de hecho, una mala medida para los esfuerzos de desarrollo (porque rara vez sucede que un desarrollador muy brillante pueda reemplazar miles de líneas por unas pocas docenas, durante la refactorización del código), pero a menudo es el “mejor” métrica que puede obtener en los esfuerzos. Ver también SLOCCount (por D.Wheeler).
  • un desarrollador típico puede escribir entre 15 y 25 KLOC por año (esto significa código depurado y probado).
  • para software muy grande, los esfuerzos de comunicación (entre los miembros de un gran equipo de desarrollo) son cada vez más costosos, por lo que la productividad (por desarrollador) es inferior a estos 20 KLOC / año. Leer el mes mítico del hombre
  • Firefox tiene aproximadamente 20 o 30 millones de líneas de código (pero dado que es software libre, verifíquelo usted mismo) y utiliza muchas bibliotecas de software libre adicionales.

Entonces, para lograr algo como Firefox, necesitarás alrededor de mil años de trabajo. No vivirás tanto y te aburrirás antes de eso. Y tenga en cuenta que los estándares web están en constante evolución (y son muy complejos, especialmente por razones heredadas y porque evolucionaron “orgánicamente”: mire en el World Wide Web Consortium (W3C) todos los documentos de especificaciones allí …). Entonces, si puede codificar hasta los estándares de 2016 durante 20 años, su trabajo terminaría obsoleto (porque en 2036 los estándares serían diferentes).

Desde cero, es * enormemente * difícil, el navegador web es posiblemente el software más complicado que tiene instalado en su computadora en este momento.

Personalmente, me gustaría tener más posibilidades de escribir un sistema operativo completo desde cero más de lo que me gustaría escribir un navegador web desde cero.

Todo lo que hace un navegador web es (demasiado) complicado y difícil.

Piénselo de esta manera, debe renderizar un párrafo de texto en una fuente dada en un rango de tamaños y estilos, que pueden o no envolver una imagen. Debes pintar una palabra, obtener su tamaño y considerar si la siguiente palabra encajará o si necesita pasar a la siguiente línea. El tamaño de esa palabra dependerá de la fuente, tamaño, formato, como cursiva o lo que sea, si es superíndice, subíndice, negrita, el interletraje y / o el seguimiento de esa fuente, si se trata de varias palabras, ¿hay un & nbsp; elemento allí? Ese es un espacio que no se rompe, por lo que no puede ajustarse a la siguiente línea como si fuera un espacio normal.

Eso es solo una muy, muy pequeña parte de la representación en Word a la página. Eso ni siquiera incluye que la fuente podría estar en Google Fonts, no en su sistema, y ​​la fuente podría cambiar, dependiendo de CSS, o podría cambiarse a través de JavaScript en cualquier momento.

Habiendo dicho todo eso, en la Mac, solo puede colocar un WebView si lo desea, lo que lo hará todo por usted.

La web es tan complicada, es una farsa , el gran Alan Kay llamó a la web “una broma” y ese tipo sabe de lo que está hablando.

La web es probablemente lo más cercano en informática que tenemos a la locura pura.

Si eres un principiante en programación, no tienes ninguna posibilidad de hacer un navegador web desde cero. Si eras 100 programadores experimentados, tus posibilidades no mejoran mucho.

Depende de lo que quieras decir con “scratch”. Si quiere decir “en metal, con nada más que un compilador de idiomas nativos, probablemente años: un navegador como Firefox tiene la centésima parte del desarrollador trabajando en una comunidad que data de aproximadamente 20 años o más.

Si quiere tener acceso a todo el software requerido … simplemente descargue el código fuente de Firefox y la dependencia de bibliotecas relacionadas y compílelo. Es cuestión de horas.

Todo lo que se encuentra en algún lugar en el medio de estos dos extremos también es posible.

¿Para una persona? Llevaría muchos años . A Microsoft (y a un equipo de muchos desarrolladores) le toma años lograr que Internet Explorer funcione correctamente. Microsoft ha pasado años desarrollando el nuevo navegador Edge para Windows 10, ¡y todavía no lo han hecho funcionar bien! Edge es ignorado por los usuarios.

[EDITAR: el interlocutor comentó que no entienden por qué “desde cero” sería ambiguo, así que aclaré]

Tu preguntaste:

¿Qué se necesita para crear un navegador web desde cero que funcione en una Mac?

Cuanto más específica sea la respuesta, mejor.

¡Gracias!

¿Podrías aclarar qué quieres decir exactamente con “desde cero”?

La frase “desde cero” puede significar muchas, muchas cosas:

  • ¿Debo extraer la bauxita y olerla para obtener el aluminio y poder comenzar a construir una carcasa para un MacBook Pro?

    Probablemente, eso es demasiado “desde cero”.

  • ¿Debo tener las herramientas estándar para desarrolladores de Apple XCode en un MacBook Pro o tengo que desarrollar mi propio compilador?

    Probablemente, eso es demasiado “desde cero”.

  • Si tengo las herramientas estándar para desarrolladores de Apple XCode en un MacBook Pro, ¿puedo usar todas las bibliotecas que Apple proporciona como bibliotecas de soporte para sus desarrolladores?

Esa última es una pregunta increíblemente complicada … una de las bibliotecas que Mac OS X incluye como componente estándar es WebKit.framework.

En otras palabras, puedo tener un navegador realmente estúpido, que se ve y funciona casi igual que la ventana web de Safari, sin todos los controles, funcionando en unos 15 minutos, con un botón de “atrás”, una barra de URL puede escribir URL, y si no cometo ningún error, y conozco CoreData, probablemente sea un soporte de marcador realmente primitivo, no jerárquico (es decir, sin carpetas).

Entonces, si me permiten todo eso: unos 15 minutos.

Si lo “reimagina” hasta el punto de que ya no estoy usando un WebView o delegados de WebView, o cualquiera de las partes que lo rodean o incrustan, entonces se vuelve más difícil.

En ese momento, empiezo a hacer más preguntas para obtener más aclaraciones:

  • ¿Puedo usar CoreData?
  • ¿Puedo usar WebView?
  • OK, ¿exactamente qué cosas que están y no están instaladas por defecto en / System / Library / Frameworks se me permite o no usar?
  • ¿Puedo usar el UIBuilder?
  • Si no se me permite usar el UIBuilder, ¿al menos se me permite usar las bibliotecas de componentes de la interfaz de usuario, por ejemplo, CoreGraphics?
  • Si se me permite usar esos … y no se me permite usar UIBuilder en sí mismo … porque tengo un conocimiento íntimo de los aspectos internos de muchas de estas cosas, ¿me van a marcar cuando me vaya y pase una semana? ¿Estoy construyendo mi propia versión de UIBuilder?
  • Porque si eso está permitido, y UIBuilder no lo está: eso es más o menos lo que voy a hacer
  • Y maldeciré tu nombre mientras lo hago de manera simple porque no me permitirás desplegar ese elemento del menú en XCode
  • ¿Puedo usar Security.framework y SecurityFoundation.framework?
  • ¿Me vas a hacer escribir mi propia implementación SSL?
  • En otras palabras, ¿hasta qué punto de este agujero de conejo estás llamando “desde cero” tengo que gatear, antes de que pueda comenzar a trabajar?


    Ahora que estoy trabajando …

    ¿Tengo que implementar mi propio motor HTML?

    ¿Tengo que hacer la desencapsulación RFC 2282 de los documentos HTML yo mismo, para tener acceso a las etiquetas de encabezado, de modo que pueda obedecer el “Control de caché” y otros encabezados que no veré de otra manera?

    ¿Se me permite el acceso a documentos estándar?

    ¿O tengo que realizar ingeniería inversa en HTML viendo que otro navegador habla con un servidor web?


    Entonces para repetir:

    ¿Podrías aclarar qué quieres decir exactamente con “desde cero”?

    Cuanto más específica sea la aclaración, mejor.

    ¡Gracias!

    Si desea implementar un subconjunto de HTML, CSS y JavaScript, entonces todavía es manejable y práctico. Todo lo que tiene que hacer es escribir un analizador sintáctico y un motor de renderizado para dom y css y un intérprete para JavaScript.

    Si desea implementar un navegador completamente funcional para todo el estándar de HTML, CSS y JavaScript, puede costarle varios años o más completarlo, incluso si está extremadamente familiarizado con todos los detalles mencionados anteriormente.

    Si desea implementar una versión competitiva como safari, firefox o chrome, entonces es casi imposible.

    Desde cero? Eso va a ser difícil Te diría la siguiente mejor opción: la mayoría de los navegadores de hoy están hechos sobre Chromium o Firefox. Entonces tendría sentido.

    ¿Has oído hablar de Electron? Está hecho por github. Le permite crear aplicaciones nativas multiplataforma (es decir, el Código funciona igual en todos los sistemas operativos) usando HTML5 y usa el motor v8 de Chrome. Entonces todo es agradable y cálido.

    Sobre el navegador web, aquí hay un gran video que muestra cómo construir exactamente eso:

    Dado que está construido con Electron, que está construido con nodejs, obtendrá muchas características del motor v8 de Chrome.

    Construir un navegador desde cero es demasiado trabajo duro y es muy complejo. El nivel de abstracción que esto trae es asombroso. Estoy bastante seguro de que de todos modos solo quieres una mejor interfaz de usuario.

    ¿”Desde cero” significa no utilizar uno de los motores de diseño existentes?

    Tomará un tramo de longitud media en el infierno.

    ¿Has notado que de los cuatro principales navegadores (Chrome, Firefox, IE y Safari) tres de los cuatro están hechos por algunos de los jugadores más importantes de la industria tecnológica? Google, Microsoft y Apple? ¿Y que el restante está controlado por una organización sin fines de lucro fundada con el dinero recaudado por Netscape antes de colapsar?

    Hay una razón para eso. Hacer el motor de renderizado es una maldita pesadilla que requiere tanto trabajo que solo aquellos jugadores importantes ven el valor de hacerlo.

    pruebe electron project es muy simple y funciona en el nodo js. Por lo tanto, puede utilizar tecnologías web como js, ​​html, css para crear aplicaciones, navegadores que funcionen en macc, win, linux …

    Electrón

    o simplemente busca crear un navegador usando electron en youtube …

    Inmensa cantidad de tiempo. Muy profundo conocimiento en informática y gráficos por computadora. También debe seguir los estándares o no se utilizará en absoluto.