Contribuyendo a fortran-lang.org#
¡Fortran-lang.org es de código abierto y las contribuciones son bienvenidas!
Vea paquetes para saber cómo añadir una entrada al Índice de paquetes
Vea mini librospara saber cómo escribir y componer un mini tutorial para la sección Aprender
Introducción#
¿Cómo está escrito el sitio web?
El contenido del sitio web está escrito principalmente como una combinación de Markdown (extensión Myst), HTML y YAML (para datos). Esta fuente es compilada para producir HTML puro que usted verá en el sitio web final.
El sitio web es estático lo que significa que una vez creado, el contenido del sitio es el mismo para todos los usuarios; esto contrasta con muchos sitios web que son dinámicos, lo que significa que pueden ofrecer contenido diferente según el usuario y las entradas proporcionadas por el usuario.
Los componentes estructurales del sitio web están escritos en el generador de sitios Sphinx Static para características estáticas y JavaScript para características dinámicas.
¿Necesito saber HTML para contribuir?
La mayoria del contenido del sitio web está escrito en Markdown, un lenguaje de marcado simple para dar formato al texto. No se preocupe si no lo ha usado antes, ¡es muy fácil de entender!
¿Cómo está construido el sitio web?
El sitio web Fortran-lang utiliza el generador de sitios estáticos Sphinx, basado en Python, para compilar los archivos RST, Markdown y HTML. Se recomienda que los colaboradores instalen Python en su computadora de desarrollo para que los cambios puedan ser previsualizados localmente; sin embargo, esto no es obligatorio ya que las vistas previas del sitio pueden ser generadas durante el proceso de pull request (consulte más abajo para más información). Consulte README.md para saber cómo configurar Sphinx y compilar el sitio web.
La rama predeterminada en el repositorio de Github solo contiene el “código fuente” del sitio web, no el resultado final compilado; un servicio automático compila este código fuente cada vez que se envía una actualización y almacena el resultado compilado en la rama gh-pages
que está disponible en https://fortran-lang.org.
Por lo tanto, como colaborador, solo necesita cargar los cambios en el código fuente del sitio y no el resultado compilado, ya que esto se crea automáticamente a partir del código fuente en la rama predeterminada.
Flujo de trabajo#
Las contribuciones al sitio web son realizadas mediante solicitudes de integración al repositório de github: fortran-lang/webpage.
El flujo de trabajo para ello es el siguiente:
Cree/actualice una bifurcación (fork) personal de la página web
Cree una rama nueva en su fork
El nombre de la rama debe describir concisamente su contribución, por ejemplo,
fix-spelling-homepage
,update-compiler-info
Realice los cambios en su rama local
Envie su rama modificada a su bifurcación
e.g.
git push --set-upstream origin fix-spelling-homepage
Cree una solicitud de integración la página web fortran-lang desde su bifurcación modificada
Note: Before opening a pull request you must build your changes locally using Sphinx (see README.md) to verify that your changes build correctly and render as you expect.
Nota: Usted puede continuar enviando cambios a la rama de su bifurcación después de abrir una solicutd de integración - la solicitud de integración será actualizada
Su solicitud de integración será revisada por otros miembros de la comunidad, que podran requerir cambios. Github brinda una interfaz facil en su página web para aplicar (o rechazar) culaquier cambio sugerido por los revisores con un clic . Esto evita tener que copiar manualmente las sugerencias a su copia local y volver a enviarlas. Si usa el botón «Confirmar sugerencia», deberá actualizar la copia local en su computadora usando git pull
si tiene la intención de enviar más ediciones desde su computadora.
Una vez que su solicitud de integración sea aprobada, generalmente por al menos otros dos miembros de la comunidad, los encargados la fusionarán en la rama predeterminada de la página web, momento en el cual se publicará en el sitio fortran-lang.org.
Si es necesario, los encargados del repositorio pueden crear una vista previa pública de los cambios propuestos que estarán disponibles para ver en fortran-lang.org/pr/<pr_id>/
donde <pr_id>
es el identificador numérico de su solicitud de integración .
Esto permite a los revisores ver directamente el resultado generado de su solicitud de integracion.
Nota: si realizas commits adicionales en la rama de tu pull request, debes recompilar la previsualización del pull request comentando en el pull request con “#build_preview”.
Luego de que el pull request haya sido fusionado y renderizado con éxito, los workflows borrarán la compilación de previsualización.
Nota: si el enlace de vista previa de la solicitud de integración no funciona o no se actualiza después de la reconstrucción, intente agregar un parámetro aleatorio al final de la URL, p. ej. https://fortran- lang.org/pr/98?v=2
: el nombre y el valor del parámetro no importan, pero use valores diferentes para cada actualización. Esto obligará a la red de entrega de contenido de GitHub a brindarle una versión actualizada en lugar de una versión almacenada que está desactualizada.
Guía de estilo#
Markdown#
Coloque fragmentos de código en bloques de código, señalados con marcas de verificación (
```
). Use el estilo de código en línea (`code`
) para extractos de código en línea, palabras clave de lenguaje de programación, nombres de variables y nombres de archivos.Para evitar git diffs enormes y revisiones de código en blocks en Github, por favor no escribir más de una oración por línea de código fuente y oraciones largas, deberán ser separadas en varias líneas.
Enlaces externos#
Se recomienda que los hipervínculos fuera del sitio se abran en una nueva pestaña. En Fortran-lang.org
, todos estos enlaces tendrán automáticamente un sufijo con un icono de nueva pestaña; esto les da a los usuarios del sitio la expectativa previa de que el enlace los llevará fuera del sitio mientras mantiene fortran-lang.org abierto en una pestaña anterior.
Ejemplo: Abrir enlace en una pestaña nueva (HTML o Markdown)
<a href="https://fortran-lang.discourse.group/" target="_blank" rel="noopener"
>Discourse</a
>
Enlaces internos del sitio web#
Los hipervínculos que apuntan a otras partes del sitio web fortran-lang.org deben tener el prefijo {{pathto('index',1)[:-5]}}
; esto es importante para generar vistas previas de solicitudes de integración (consulte aquí para obtener una explicación).
Ejemplo link en markdown
[Fortran-lang news]({{pathto('index',1)[:-5]}}News)
Ejemplo: enlace html
<a href="{{pathto('index',1)[:-5]}}Packages">Fortran packages</a>
Paquetes de íconos#
Los íconos son una manera fácil de mejorar la estética de la página al dividir pasajes de texto monótonos y llamar la atención sobre los encabezados o la información clave.
Hay tres paquetes de íconos disponibles para usar en fortran-lang.org
:
Diseño de Sphinx (Licencia MIT)
Tipo de letra awesome (Licencia CC BY 4.0)
Ejemplo: Tipo de letra awesome
<i class="fas fa-info-circle"></i>
Ejemplo Diseño de directivas Myst en Sphinx
{octicon}`book;1em;sd-text-info`
Visite los sitios web respectivos para explorar los íconos disponibles.
Contenido de la página#
A veces es útil mostrar contenidos de páginas con hipervínculos para páginas extensas. El árbol TOC de la página se ha automatizado y generará el TOC de la página actual. Mientras que el método para generar TOC de todo el directorio en Fortran-lang.org
es:
Para páginas en MD:
añadir la directiva «toc tree» en Markdown (md) al final de la página índice del directorio con los nombres de todos los archivos en ese directorio.
````{toctree} :hidden: ARRAY_index ````
Tutoriales#
Directrices para el contenido de los minilibros.
General#
Utilice el diseño libro
.
Siga las directrices de Markdown.
Estilo de código#
Use dos espacios para la tabulación, tabulando los cuerpos de las unidades pero manteniendo la declaración contiene
al mismo nivel que su módulo
o tipo
. Intente limitar la longitud de la línea a 90 caracteres. Estas consideraciones deberían hacer que el código sea más legible y fácil de ver en dispositivos con anchos de ventana de visualización más pequeños.
module m
implicit none
private
public :: a_t
type :: a_t
integer :: val
contains
procedure :: func
end type a_t
contains
subroutine func(self)
class(a_t), intent(in) :: self
if (self%val > 0) then
print *, self%val
end if
end function func
end module m
Cada bloque de código debe tener un nivel de tabulación base de 0, incluso si tuviera tabulación si se colocara en un contexto más amplio.
integer :: i1 ! yes
integer :: i2 ! no
Evite alinear verticalmente ::
y los comentarios en línea, ya que esto agrega una carga de mantenimiento y aumenta la longitud de la línea en la mayoría de los casos.
Si un bloque de código contiene líneas que no son Fortran válidas, déjelo como un bloque de código sin idioma para evitar los cuadros rojos del resaltador de sintaxis.
module <module name>
...
end module <module name>
Siéntase libre de omitir el espacio en las expresiones donde ayude con la legibilidad, pero generalmente incluya espacios en blanco alrededor de los operadores.
y1 = a * b
y2 = a*b + c*d ! instead of a * b + c * d
y3 = a**2 + 1
y4 = (a*b + c*d) / 2
s3 = s1 // s2
Por lo general, agregue un espacio después de las comas, excepto cuando se indexe con valores de índice cortos o nombres de variables.
a(:,1)
a2(1:10, 2:5)
b(i,j)
b2(long_i_name, long_j_name)
b3(i + 2, j)
call some_subroutine(a, b, an_option=.false.)
c = [1, 2, 3, 10]
d = [(i, i = 1, 10)]
do i = 1, 10
! ...
Otras situaciones además de indexaciones simples donde se pueden omitir los espacios en blanco:
Renombrando al importar
use, intrinsic :: iso_c_binding, only: sp=>c_float, dp=>c_double
Concatenación de cadenas de caracteres
print *, 'hello '//'world'
Acceso a componentes (atributos) de tipos derivados
p%x p%calc_something(a, b)
Alrededor de
=
al pasar argumentos de palabras clavecall sr(a, b, c=3) point = t_point(x=1., y=2.) character(len=:), allocatable :: s
Escriba en mayúscula la primera letra para los comentarios en línea, excepto para los comentarios en línea finales que solo constan de una palabra o una frase corta.
! Compute new values
y = m*x + b ! meters
Estas recomendaciones de estilo de código son similares a las de la guía de estilo DFTB+.
Texto#
Por favor capitalice los títulos de sección y páginas usando reglas de capitalización de oraciones, esto es: «Hola, soy Pedro» y no usando reglas de Títulos, esto es: «Hola, Soy Pedro».
Enfatice (*enfatice*
/_enfatice_
, mostrado en cursiva) al utilizar palabras clave por primera vez, para resaltar…
Evite el uso del formato fuerte (**fuerte**
, se muestra en negritas) en párrafos, ya que el uso de negritas está reservado para encabezados, llamar la atención a ejemplos (Ejemplo:), títulos de advertencia, etc.
Utilice símbolos de advertencia (nota, tip, importante) donde sean apropriados.
para agregar una nota al documento md use:
::::{note} extra information, something that might appear in a footnote :::::
para adicionar una sugerencia al uso del documento md:
::::{tip} information about best practices, practical tips :::::
para adicionar un texto importante al documento md use:
::::{importrant} warnings, things to avoid, etc. :::::
Prefiera incluir la coma Oxford. Por lo general, deja las cosas más claras.
Fortran es rápido, divertido y famoso.