Grupo de Desenvolvimento C++ com KiCAD
O e-hal (I Encontro Brasileiro de Hardware Aberto e Livre), que acontecerá em outubro de 2016, terá uma hackatona do KiCAD.
O KiCAD é uma suite de software livre para design de circuitos elétricos e placas de circuito impresso.
O objetivo da hackatona no e-hal será implementar a importação automática de projetos e bibliotecas do Eagle. Mesmo sendo um software proprietário, o Eagle é o software EDA de-facto na comunidade de hardware aberto e livre. O KiCAD tem ganhado terreno, mas tal recurso aceleraria a sua adoção, já que grandes fornecedores como Sparkfun, Arduino e Adafruit usam Eagle e distribuem extensas bibliotecas de componentes.
Para aumentar o rendimento da hackatona, que terá participação de membros do time do KiCAD vindos da gringa só para isso, o garoa organizou este grupo preparatório para quem quiser (ou não) participar em outubro.
A proposta deste grupo é resolver bugs simples ("starter patches") do KiCAD com o objetivo de nos familiarizarmos com o código e, de quebra, praticar um pouco e ganhar experiência em desenvolvimento C++ através de uma ferramenta que pode ser utilizada em projetos de hardware feitos no Garoa.
Não é preciso ter experiência com C++, porém alguma familiaridade com outra linguagem é desejável. De todo modo, o foco da atividade será programar e aprender programando!
Horário
Encontros presenciais às quartas-feiras** de setembro, na Biblioteca do Garoa, a partir das 18h00, mas também pode participar remoto via IRC no canal #garoa em irc.freenode.net
Investimento
0
Informações úteis
- Guia de desenvolvedores como obter o código fonte, instalar as dependências e compilar o kicad (TODO: colocar um guia resumido aqui)
- Desenvolvedores e usuários ficam on-line no canal #kicad da rede IRC freenode. Se você não tem um cliente IRC, pode acessar por aqui
- Lista de e-mail dos desenvolvedores do KiCAD
- Segundo relato do Juca o KiCAD passou a usar git em todos os seus repositórios
, então as informações acima podem estar desatualizadas. Existe um source mirror no github, mas recomendamos que todos façam checkout a partir do launchpad, como nas instruções do Guia de desenvolvedores - Recomendamos que cada um traga seu notebook, de preferência com uma distribuição GNU/Linux instalada. No entanto, vale lembrar que o KiCAD é multiplataforma, mas os processos de build para Windows e MacOS são mais complexos.
- Para compilar com símbolos de debug: mkdir build && cd build && cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo .. && make
Instalar build system e dependências
TODO
Baixar source
git clone https://git.launchpad.net/kicad
Compilar
TODO
Criar e submeter patches
TODO
Starter patches
Os desenvolvedores do KiCAD disponibilizaram uma lista de bugs para iniciantes no projeto.
Caso tenha interesse em trabalhar em algum deles, coloque o seu nome na frente. A lista abaixo não é exaustiva. Você também pode trabalhar em qualquer outro bug que ache interessante.
- Bug #1423515 pcbnew option to export text as editable text when writing DXF/SVG Pitanga
- Bug #1428125 Don't freeze GUI when showing hotkey list.
Bug #1395442 Hotkeys Editor should have a reset button- Bug #1412628 pos file ref cut off
- Bug #1448460 Canceling a started track in GAL. Juca
Bug #1424003 OpenGL & Cairo Canvas "End Track".Já estava corrigido: https://code.launchpad.net/~rohbotics/kicad/bug_1424003/+merge/285826- Bug #1492734 Likely DRAWSEGMENT::computeArcBBox() (pcbnew/class_drawsegment.cpp) is the culprit. The issue should solved in DRAWSEGMENT::ViewBBox(), so perhaps both could be merged.
- Bug #793420 Perhaps it is missing a few OnModify() calls. Wayne proposes a simple solution which may serve as an example.
- Bug #1005383 Minor UI issue.
- Bug #1482866 One needs to get the currently highlighted net number, and preselect it in the zone creation dialog (pcbnew/dialogs/dialog_copper_zones.cpp) through a ZONE_SETTINGS object.
- Bug #1485941 Class CONTEXT_TRACK_WIDTH_MENU (pcbnew/router/router_tool.cpp) lacks an update handler that would update the units whenever the menu is shown. Have a look at CONTEXT_MENU::SetMenuHandler(). It might be also a good introduction to implement #1519973.
- Bug #1503921 It might be just one 'if' statement missing, though I am not sure.
- ...
Referências
- [1] palestra do Wayne Stambaugh (líder do projeto) falando dos "velhos tempos" do KiCAD.
- [2] informações essenciais para novos desenvolvedores
- [3] thread na lista de e-mails sobre o desenvolvimento de suporte a arquivos do Eagle, que será tema da hackatona
- [4] [5] [6] [7] [8] [9] links para o trabalho do Chris Gammel, citado aos 32:20 da palestra do Wayne
- Arquivo:Kicad dev intro.pdf, documento com uma explicação geral sobre a organizaçãod o código
Resumo dos encontros
07/09/16
- Presentes: Afonso, Marcelo Campos, Alexandre, Aylons (remoto), orsonmmz (desenvolvedor do KiCAD, remoto), Pitanga
- Falado: objetivos gerais do grupo, organização da documentação (esta página), conversa com os desenvolvedores do KiCAD
- Feito: baixar e compilar o código fonte
14/09/16
- Presentes:
- Falado:
- Feito:
21/09/16
- Presentes:
- Falado:
- Feito:
28/09/16
- Presentes:
- Falado:
- Feito:
Anotações e ideias
- Marcelo: coisas que não estão no tutorial - dependência GLM e biblioteca x tem que ser instalada em x_64
- Salvar o ultimo Output Directory-
- Pq os arquivos plotados saem com um nome tipo -Bxxxx, começando com dash? Talvez seja pq o projeto não está salvo e o nome do projeto, que viria antes do dash é a string nula. Nesse caso, deveria ter um nome melhor pois nome de arquivo começando com dash é estranho e escapar o dash na linha de comando não é trivial