Colabora

¿Quieres colaborar? Aquí encontrarás instrucciones

Los primeros pasos
Contacto
¡Estaremos encantados de saber que te gusta Mathifold! Nos puedes contactar a través de nuestro correo mathifold@gmail.com. Podremos asesorarte sobre el mejor modo en que contribuir con nosotros y podrás conocer nuestro equipo.
Fork en GitHub
Si conoces GitHub, el modo en que más directamente puedes ayudarnos es haciendo una copia personal (fork) del repositorio https://github.com/mathifold/mathifold desde el cual construir y enviar contribuciones.

Si no stás familiarizado con GitHub, te aconsejamos hacer el curso de Git/GitHub en Udacity. ¡Te encantará!
Otros modos de colaborar
También hay otros modos de colaborar que no involucran directamente el código o la programación: asesoría pedagógica, diseño, difusión... ¡cualquier idea es bien recibida!
Palabras clave
GitHub
El material con el que se construye la página web está alojado en el repositorio mathifold/mathifold en GitHub: https://github.com/mathifold/mathifold. De este modo, todo el contenido es de libre acceso. GitHub también ofrece una apropiada plataforma para gestionar las distintas contribuciones.
jekyll
Mathifold se construye con el generador de páginas web estáticas jekyll
MathJax
MathJax permite insertar fórmulas LaTeX dentro de la página web
SageMath
SageMath ofrece un lenguaje apropiado con el que hacer multitud de applets de matemáticas
Geogebra
Geogebra está siendo utilizado en la construcción de algunos applets, generalmente de geometría plana y tridimensional.
IPE Drawing Editor
IPE Drawing Editor es el software con el que se hacen la mayoría de los dibujos.
Blender
Blender permite el renderizado de animaciones matemáticas.
La creación de nuevos posts
La mayor parte del trabajo en la realización de la página web es la creación de nuevos posts, los "paquetes de conocimiento"
¿Dónde se encuentran?
Los posts son archivos .md (lenguaje markdown), y deben colocarse en la carpeta _posts dentro del idioma correspondiente con el siguiente formato: yyyy-mm-dd- ....... .md. Dentro de cada capítulo, jekyll ordena los posts lexicográficamente, por lo que en ocasiones puede ser necesario hacer referencia a una fecha de creación fictícia en la creación de post.
Encabezados
Cada post cuenta con un encabezado, que es la "ficha técnica" del post. Ésta consta de
  • title: Título del post
  • lang y category: en ambos el código del idioma del post
  • permalink: código-de-idioma/ident
  • ident: un identificador que debe ser distinto para cada post y que intente sintetizar el contenido de éste. Suele comenzar con el tipo de post
  • parent: el identificador del capítulo al cual pertenece, según _data/nav.yml
  • kind: el código de tipo de post
  • mathjax y sage: true o false según si la página necesita utilizar mathjax o sage
  • geogebratube: en caso de embeber un applet de Geogebratube, indicar el número identificativo
  • layout y type: se dejan con post
Contenido
El contenido se escribe en markdown, y puede incluir mathjax u otros complementos.
Se puede enlazar a otros posts incluyendo
{% cite ident %}
y se pueden incluir imágenes mediante
{% resource name.ext %}
(ver la sección _plugins abajo para más información)
Los archivos del repositorio
Todas las carpetas del repositorio mathifold/mathifold contribuyen a la construcción de la página web:
_data
Esta carpeta contiene archivos con información relevante, generalmente en forma de listas o diccionarios
  • languages.yml: Describe la lista de idiomas que soporta la página
  • nav.yml: Describe, por medio de diccionarios anidados, la estructura arbórea de la página en sus tres primeros órdenes: Temas, Asignaturas y Capítulos. Cada item debe tener un identificador ident, una traducción en cada uno de los idiomas listados en languages.yml y, para los dos primeros, un subdiccionario children.
_includes
Cada archivo de esta carpeta contiene un fragmento de código que se repite en todas las páginas creadas
  • footer.html contiene el pie de página, que incluye los botones informativos
  • head.html contiene parte del head previo a body, donde se cargan las hojas de estilo y los distintos scripts, que pueden variar de página a página (mathjax, sage, geogebra)
  • header.html contiene el encabezado: los enlaces a niveles superiores a la izquierda, el buscador y los idiomas a la derecha
_layouts
Cada layout describe el contenido y diseño de cada página. default es el contenido estándar del cual están después las especificaciones home, topic, subject, chapter, post y search.
_plugins
Hay dos tipos de plugins implementados, que podemos llamar generadores y funcionales
  • Los plugins generadores son generate_home.rb, generate_topic.rb, generate_subject.rb generate_chapter.rb y generate_search.rb, que generan las páginas descritas por _data/nav.yml (junto con la página de búsqueda), una vez por cada idioma
  • Los plugins funcionales son cite.rb y resource.rb, e implementan distintas funciones que pueden ser ejecutadas al redactar un post. Las funciones implementadas son

    {% cite ident %}

    que enlaza al post del ident correspondiente (del mismo idioma, si lo hay) y

    {% resource name.ext %}

    que busca la imagen name.ext dentro de la carpeta /images/images, la coloca e inserta un enlace de descarga de la fuente si se encuentra un archivo name (con distinta extensión) en la carpeta /images/codes
_posts
Contiene los posts, cuya estructura se ha descrito anteriormente. Están divididos en carpetas según el idioma, pero esta separación es sólo para la logística de traducción, pues esta ordenación es indistinta para jekyll, que ordena todos los posts en _posts de acuerdo con la información de sus encabezados.
_site
Este es el directorio en el que jekyll guarda la página web estática generada que después se sube al servidor. En principio, en esta carpeta no se hacen modificaciones directamente
css
Contiene las hojas de estilo. custom.css es la hoja que genuinamente se encarga de la apariencia de la página, mientras que subject_images.css, topic_images.css y symb.css tratan la asignación de imágenes representativas y deberían poderse implementar con cierto código.
images
Contiene las imágenes de toda la página web. Las carpetas topics, subjects, symb y others contienen las imágenes exteriores al contenido de los posts. Las carpetas images y codes contienen las imágenes que se utilizarán en los posts (preferiblemente en formato SVG) junto con sus códigos fuente, que se incluyen en la página mediante el plugin resource
js
Contiene los archivos de script. lunr.min.js y search.js implementan la búsqueda de posts en páginas generadas con jekyll usando lunr.js. script.js almacena el resto de script.
plus
Contiene los archivos de la información contenida en los botones de la parte inferior izquierda: Sobre Mathifold, Manual y Colabora en distintos idiomas
templates
Varias plantillas que incorporan ciertos scripts (mathjax y sage) con los que realizar pruebas de código sin necesidad de correr jekyll
xtras
Cualquier otro material relacionado con la construcción de Mathifold que se quiera guardar
otros archivos
Fuera de las carpetas anteriores se encuentran los archivos _config.yml, 404.md, app.yaml, favicon.ico, index.html, LICENSE.txt y README.md
Tareas y retos
He aquí un pequeño listado de implementaciones que se quieren llevar a cabo en Mathifold y para los cuales se requiere de colaboradores entusiastas y experimentados
Cuentas
Creación de cuentas personales, en las que cada usuario pueda personalizar su estudio de las matemáticas dentro de Mathifold
App
Asociada a la página web, la creación de una aplicación (en Android y iOS) que permita y adapte el uso de Mathifold en tablets y dispositivos móviles, de tal modo que en un futuro cualquier usuario pueda tener en su dispositivo algo similar a la imagen
Traducción
Traducción a todos los idiomas posibles, especialmente aquellos de más uso, y comenzando por aquellos contenidos más estables dentro de la página