Um espaço de nome claramente definido. Como C é meu idioma principal, também quero que as macros correspondam a isso. Resolver conflitos nessa área é péssimo.
Se você alocar alguma coisa, me dê uma pista óbvia de que ela precisa ser liberada. Isso vai para o meu próximo ponto, que é a documentação.
Documente a biblioteca. Ferramentas como o Doxygen são simples e portáteis, não há desculpa para não me dar algo que eu possa gerar e navegar.
Documente tipos opacos em cabeçalhos públicos. Vou encontrá-los de qualquer maneira, me diga por que você não quer que eu mexa com eles e o que poderia acontecer se eu o fizesse. Se você realmente quer remendos, preciso saber o que você estava pensando.
Não caia e corra. Eu realmente aprecio comentários como "Por favor, não entre em contato comigo sobre isso. Não tenho intenção de mantê-lo. Isso resolveu meu problema imediato, talvez ele resolva o seu problema. Eu não me importo, não vou atualizar isso e você pode ficar à vontade para bifurcar. " Eu não posso te dizer quanto tempo isso me salva.
Não deve adicionar vazamentos de memória ou erros ao código existente. Se você não testou antes de enviar coisas para o seu próprio código, por que está me tentando?
Se for realmente uma biblioteca, use uma licença permissiva e seja consistente. Não decida daqui a três meses que você deve ganhar mais dinheiro com isso. Isso é mais do que irritante na noite anterior ao envio de algo e você percebe que precisa reescrever um monte de código de biblioteca porque a licença foi alterada. Esse é exatamente o tipo de coisa que me deixa irritado o suficiente para reimplementar suas coisas sob a licença do MIT.
Seja consistente no estilo de codificação, outras pessoas precisam ler seu código para descobrir o que ele está realmente fazendo quando as coisas não funcionam como o esperado.
Não use mais de 110 colunas; seu código pode ter que ser editado no lugar e talvez eu tenha apenas uma tela de 80x25. Se você contar com guias para deixar as coisas mais "elegantes", terá outros problemas a resolver.
Tente considerar pelo menos portas, se não estiver lidando com uma linguagem interpretada. Mesmo assim, tente considerar pelo menos as portas.
Me dê testes. Espero que você os tenha, posso sugerir o contrário e, na verdade, posso ajudar a escrevê-los com base em um gráfico de chamadas. Se eu passar por todo esse problema, por favor, use-os . Caso contrário, você receberá patches que "funcionam para mim !!!" :)
Não quebre a API, ponto final. Sei que você pode perceber que errou tudo, mas verifique se as coisas vinculadas a você não quebram em uma atualização simples. Isso pode significar algumas críticas e críticas, bem-vindo ao mundo das bibliotecas.
Dê-me um roteiro para não duplicar seu trabalho ou o trabalho de outras pessoas.
Provavelmente vou editar esta postagem para adicionar mais.