Contribuindo na fortran-lang.org#
Fortran-lang.org possui código-fonte aberto e contribuições são bem-vindas!
Veja o guia de pacotes para saber como adicionar um pacote na Lista de Pacotes
Veja minibook guide para saber como escrever e estruturar um tutorial para a seção Aprenda
Introdução#
Como o site é escrito?
O conteúdo do site é primariamente escrito com uma combinação de Markdown (dialeto Myst), HTML and YAML (para dados). Este código-fonte é compilado para produzir HTML puro que no final é o que você vê aqui.
O site é estático que significa que uma vez compilado, o conteúdo do site é o mesmo para todos os usuários; diferentemente de muitos outros sites que são dinâmicos, que podem mostrar um conteúdo diferente dependendo do usuário e das informações fornecidas pelo mesmo.
Componentes estruturais do site são escritos utilizando o gerador de sites Sphinx e JavaScript para os recursos dinâmicos.
Preciso saber HTML para ajudar?
A maior parte do conteúdo do site é escrita em Markdown, uma linguagem simples de marcação para a formatação de texto - mas não se preocupe se você nunca usou Markdown antes, pois é bem fácil de começar a usar!
Como o site é compilado?
O site fortran-lang usa o gerador de sites estáticos feito em Python, Sphinx para compilar RST, Markdown e HTML. É recomendado que colaboradores instalem o Python no seu computador de desenvolvimento, de modo que as mudanças possam ser visualizadas previamente, no entanto, isso não é obrigatório, uma vez que pré-visualizações podem ser geradas durante o processo de PR (veja abaixo para mais informações). Veja o README.md para entender como configurar o Sphinx e gerar o site.
O ramo principal do repositório do GitHub deve apenas conter o código-fonte do site, não arquivos gerados; um serviço automático já gera o site a partir do código-fonte sempre que uma atualização é feita e armazena o resultado no ramo gh-pages
que então é mostrado em https://fortran-lang.org.
Deste modo, como colaborador, você apenas precisa fazer o upload de mudanças no código-fonte do site em si e não em seus arquivos gerados, já que este é compilado automaticamente a partir do código-fonte no ramo principal.
Fluxo de Trabalho#
Contribuições ao site são feitas a partir de PR no repositório no github: fortran-lang/webpage.
O fluxo de trabalho segue a forma abaixo:
Criar/Atualizar um fork pessoal da página
(Consulte a ajuda do github: sincronizar um fork )
Crie um ramo novo no seu fork
O nome do ramo deve descrever de forma breve sua contribuição, Ex:
fix-spelling-homepage
(corrige gramática da página inicial),update-compiler-info
(atualiza informações do compilador)
Faça suas mudanças em um ramo local
Mande seu ramo modificado para o seu fork
Ex:
git push --set-upstream origin fix-spelling-homepage
Crie um PR no repositório fortran-lang/webpage a partir do ramo modificado
(Veja a ajuda do github: criação de um PR )
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: Você pode continuar a mandar mudanças para o ramo do seu fork após aberto o PR - este será atualizado de acordo com elas
Sei PR será analisado por outros membros da comunidade que pode pedir algumas alterações. O GitHub fornece uma interface amigável em seu site para aplicar (ou rejeitar) qualquer sugestão com um clique de botão. O que evita ter que copiar sugestões manualmente para sua cópia local e por fim enviá-las para o seu PR. Se você usar a opção «Commit suggestion» será necessário atualizar sua cópia local usando git pull
caso queira editar mais coisas direto do seu computador.
Uma vez que o PR é aprovado, geralmente por pelo menos dois outros membros da comunidade, ele será enviado para o ramo principal do site pelos mantenedores, que em algum ponto será publicado no site fortran-lang.org.
Se for preciso, os mantenedores do repositório podem compilar uma pré-visualização pública de suas mudanças, que poderá ser visualizada em fortran-lang.org/pr/<pr_id>/
onde <pr_id>
é o número identificador do seu PR.
Isso permite que revisores possam ver diretamente o resultado gerado por seu PR.
Note: se você mandar commits subsequentes ao ramo do seu PR, você deve recompilar a pré-visualização comentando no PR “#build_preview”.
Após que seu PR tenha sido aceito e renderizado corretamente, os mantenedores vão deletar a pré-visualização.
Note: se o link para a pré-visualização do seu PR não funcionar ou não atualizar após a recompilação, tente adicionar um parâmetro aleatório ao final da URL, Ex: https://fortran-lang.org/pr/98?v=2
- o nome e o valor do parâmetro não importa, porém use valores diferentes a cada atualização. Isso forçará o GitHub a te entregar a versão atualizada em vez da versão desatualizada que se encontra em cache.
Guia de estilos#
Markdown#
Coloque trechos de código em blocos de código, denotado por (
```
). Use o estilo de código inline (`code`
) para trechos de código ao longo do texto, palavras-chave da linguagem de programação, nomes de variáveis e nomes de ficheiros.Não deve ter mais do que uma frase por linha do código-fonte, e deve quebrar frases longas através de múltiplas linhas - isto é importante para evitar grandes diffs no git e blocos de revisão de código no GitHub.
Links externos#
É uma boa prática abrir links para site externo em uma nova aba. Aqui no site fortran-lang.org
todos os links deste tipo automaticamente possuem um ícone de nova aba; isso dá aos usuários do site a expectativa de que tal link o levará a um link externo porém manterá o site aberto na aba anterior.
Exemplo: Abrir link em nova aba (HTML ou markdown)
<a href="https://fortran-lang.discourse.group/" target="_blank" rel="noopener"
>Discourse</a
>
Links internos para o site#
Links que apontam para outras partes do site fortran-lang.org devem ser prefixados com {{pathto('index',1)[:-5]}}
- isso é importante para gerar pré-visualizações de PRs (veja aqui uma explicação).
Exemplo: link no markdown
[Fortran-lang news]({{pathto('index',1)[:-5]}}News)
Exemplo: link no html
<a href="{{pathto('index',1)[:-5]}}Packages">Fortran packages</a>
Pacote de icones#
Icones são uma forma fácil de melhorar a estética da página quebrando a monotonia de algumas partes do texto e chamando a atenção para títulos ou informações importantes.
Três pacotes de ícone estão disponíveis para o uso no fortran-lang.org
:
Sphinx-design (Licença MIT)
Font awesome (CC BY 4.0 License)
Exemplo: Font awesome
<i class="fas fa-info-circle"></i>
Exemplo: Sphinx design e diretivas Myst
{octicon}`book;1em;sd-text-info`
Visite os respectivos sites para navegar pelos ícones disponíveis.
Conteúdo da página#
Às vezes, é útil exibir o conteúdo da página com hiperlink para páginas longas. O sumário da página atual é gerado automaticamente. Já o método para gerar um sumário de todo o diretório em Fortran-lang.org
é:
Para páginas em MD:
adicione a diretiva toctree em markdown ao final da página index do diretório contendo o nome de todos os ficheiros naquele diretório.
````{toctree} :hidden: ARRAY_index ````
Tutoriais#
Diretrizes para o conteúdo dos mini-books.
Geral#
Use o layout book
.
Siga as diretrizes para o Markdown.
Estilo de código#
Use dois espaços para indentação, indente o corpo das unidades de código mas mantenha o comando contains
no mesmo nível do seu module
ou type
. Tente limitar o tamanho da linha em 90 caracteres. Estas ponderações devem tornar o código mais legível em dispositivos com largura de tela menor.
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 bloco de código deve ter o nível indentação base nulo, mesmo em casos em que este seria indentado se colocado em um contexto maior.
integer :: i1 ! yes
integer :: i2 ! no
Evite alinhar verticalmente ::
e comentários na mesma linha já que isso adiciona um custo de manutenção e aumenta o tamanho da linha na maioria dos casos.
Se um bloco de código contém linhas que não são códigos válidos em Fortran, deixe-o como um bloco de código sem formatação para evitar erros de sintaxe.
module <module name>
...
end module <module name>
Sinta-se livre para omitir o espaçamento nas expressões onde isso ajuda a legibilidade, mas em geral inclua espaços ao redor de 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
Em geral, adicione espaços depois de vírgulas, exceto ao indexar com valores ou nomes de variáveis curtos.
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
! ...
Outras situações em que os espaços podem ser omitidos:
Renomear variáveis ao usar módulos
use, intrinsic :: iso_c_binding, only: sp=>c_float, dp=>c_double
Concatenação de cadeias
print *, 'hello '//'world'
Acessando componentes (atributos) de tipos derivados
p%x p%calc_something(a, b)
Ao redor de
=
ao passar argumentos pelo nomecall sr(a, b, c=3) point = t_point(x=1., y=2.) character(len=:), allocatable :: s
Use a primeira letra maiúscula em comentário na mesma linha, exceto em comentários ao final da linha que consistem apenas em uma palavra ou frase curta.
! Compute new values
y = m*x + b ! meters
Estas recomendações de estilo são similares as encontradas no guia de estilo do DFTB+.
Texto#
Use maiúsculas apenas no inicio da frase, e não cada palavra, para títulos de páginas e seções.
Use ênfase (*ênfase*
/_ênfase_
, apresentado em itálico) para palavras-chave/frases quando são introduzidas pela primeira vez, para ênfase, …
Evite o uso de negrito (**negrito**
, que será mostrado em negrito) dentro de parágrafos, já que este estilo é usado em títulos ou para chamar atenção a exemplos (Example:), advertência/títulos à parte e etc.
Usar as caixas de diálogo destacado (nota, dica, importante) sempre que apropriado.
para adicionar uma nota a um documento em Markdown, use:
::::{note} extra information, something that might appear in a footnote :::::
para adicionar uma dica a um documento em Markdown, use:
::::{tip} information about best practices, practical tips :::::
para adicionar uma caixa de importante a um documento em Markdown, use:
::::{importrant} warnings, things to avoid, etc. :::::
(sugestão para textos em língua inglesa) Inclua a vírgula de Oxford. Geralmente torna as sentenças mais claras.
Fortran é rápido, divertido e célebre.