Convenções para o campo de estabilidade dos pacotes de cabala
Pergunta
Cabala permite uma forma livre Estabilidade campo:
estabilidade: forma livre
O nível de estabilidade do pacote, por exemplo
alpha
,experimental
,provisional
,stable
.
Quais são as convenções da comunidade sobre esses valores de estabilidade? O que é considerado experimental
e o que é provisional
? Vejo que apenas alguns pacotes são declarados como stable
. Que tipo de estabilidade ele se refere, a estabilidade da API exposta ou o estado final do software sem bugs?
Solução
O campo está principalmente extinto agora e não deve ser usado. Como Max disse, provavelmente será substituído por algo significativo no futuro.
Se você estiver interessado na história, o campo se originou em uma proposta de design para o primeiro conjunto de Bibliotecas hierárquicas de Haskell. Esse documento descreve os significados pretendidos originais para os valores.
Outras dicas
Atualmente, esse campo é um guia muito ruim para a estabilidade da biblioteca, o que é principalmente ignorado. Duncan Coutts (um dos principais desenvolvedores de Cabal e Hackage) disse que ele finalmente planeja substituir completamente esse campo, com algo como um sistema de votação social em hackage.
Pessoalmente (e não estou sozinho), sempre omito o campo de estabilidade. Dado que vai desaparecer, provavelmente não vale a pena perder o sono sobre o que colocar nele.
Os significados pretendidos originais eram:
- experimental: a API é instável. Pode mudar a qualquer momento, ou seja: qualquer alteração do número da versão;
- provisório: a API é movendo -se em direção à estabilidade. Pode ser alterado em todas as revisões menores, mas deve fornecer versões depreciadas de recursos;
- estábulo: a API é estábulo. Somente adições devem ser feitas em pequenos lançamentos. Após as mudanças na API, os recursos depreciados devem ser mantidos para pelo menos uma grande liberação.
Como as outras respostas apontaram, a comunidade parece não ser Segue essas diretrizes mais.
Como Simon Marlow ressalta que isso é descrito em uma proposta de design para o primeiro conjunto de bibliotecas hierárquicas de Haskell. O link original está morto, mas você pode encontrar uma cópia no Wayback Machine.