[gitec] SAPL | Desenvolvimento | Por onde iniciar?

Leandro Roberto Silva leandroroberto.br em gmail.com
Quarta Novembro 18 09:06:39 -03 2020


[Ao gitec]: ainda bem que ele encerrou o email com: "Sinceramente, espero
que esta sejo o ínicio de uma longa conversa.". Segue Textão!!! Abraços

Boa tarde Leandro, muito prazer. Espero que esteja bem.
>

Olá, satisfação receber seu email!!!


> Ouvi falar de você em uma Oficina do Interlegis sobre compilação de leis.
>
> Apesar de não ser responsável pelo setor de informática da Casa, sou
> formado em Análise de Sistemas pela ...-PR, e atualmente aluno do
> Mestrado em Informática pela mesma instituição.
>
> O principal motivo deste e-mail é iniciar uma conversa que acredito ser
> proveitosa para ambos os lados.
>

Com certeza, e estamos do mesmo lado... servidores de casas de leis que
sabem que podem fomentar nos parlamentos do país a inclusão e transformação
digital, inovando e oferecendo tecnologias que promovem o controle,
publicidade e transparência à sociedade de suas estruturas democráticas a
um custo mínimo e otimizado...


> Estava pensando em contribuir com o Portal Modelo ou SAPL etc. O que me
> falta é tempo e experiência com os *frame*works utilizados.
>

Sobre essas duas soluções: Sou suspeito para falar, visto que sou
desenvolvedor do SAPL e do SAAP, além do portal de minha casa legislativa
que é um mix de (SAAP, SAPL e pmzinho ;D ) é o primeiro SAAP feito em
django lá em 2016, mais o SAPL em django começado em 2015, mais uma
alternativa simplificada ao PM para notícias, porém integrado nativamente
com SAPL e SAAP... e por desenvolvi um portal de notícias e não utilizei o
PM... primeiro que sou chato... segundo que sou frontend tb, me incomodava
muito navegar por uma instituição com dados que me pareciam ser tudo parte
de um único contexto e os layouts totalmente diferentes... terceiro, não
conseguia programar (mesmo que exista um meio que não conheço) com
produtividade no frontend... quarto, a curva de aprendizado do Plone, onde
o PM é desenvolvido, é muito grande... patinei por este framework de 2009 a
2014. Nesse tempo, quando começava a entender o Plone 2 ponto alguma
coisa... veio o plone 4, que ferrou geral, cheguei a fazer um curso mas,
achava tudo muito estranho, frontend improdutivo, backend sei lá,
entendi... 2015 iniciei no django, 1 semana já tinha entendido o basicão...
hoje conheço ele desde o socket que escuta as requisições até a quando
responde ao usuário.

Sobre o contribuir: Espero que sua consciência de contribuir com o
Interlegis não é estar contribuindo com uma instituição, mantida pelo
senado, fornecedora de soluções gratuitas. O Interlegis foi concebido para
oferecer, numa primeira fase, ferramentas, em uma primeira versão oficial,
para transformar o parlamento brasileiro mas, dentro de sua concepção, não
era pra ter se tornado, ao menos culturalmente, um fornecedor eterno de
serviços. O que vai de encontro exatamente com o espírito de contribuição e
de comunidade. Esse é o que tenta-se resgatar, o espírito de comunidade,
que esse mecanismo cliente/fornecedor que se instalou entre câmaras e
Interlegis é insustentável, que seja, mais casas de leis e programadores
adeptos da evolução das ferramentas enquanto soluções públicas, livres e
gratuitas.


> Se vc estivesse começando a contribuir hoje com esses projetos, por onde
> vc começaria? Tentaria fazer algum curso on-line sobre um frame em Python
> antes? Qual?
> Eu tenho uma grande familiaridade com Python e bibliotecas para análise de
> dados como matplotlib, pandas, numpy, sci-kit learn, por causa da minha
> pesquisa do mestrado. Mas não tenho tanta familiaridade com desenvolvimento
> web em Python.
>

Excelente sua experiência com python... quando comecei no django, arranhava
alguns python scripts dentro do Zope-Plone, e só.
Bom... é impar a integração que tenho com a plataforma de desenvolvimento
frontend com o Django, o que me traz agilidade em ambos os lados, só abro
mão dessa parceria se python-django não conseguir resolver, ou não resolver
tão bem, como é o caso de assinaturas digitais que uso um plugin que fiz em
java e chamo ele pelo django para assinar o que preciso que seja assinado.

vou te dizer como comecei com o django:
a) em agosto de 2015, fui no interlegis para conversamos sobre a compilação
de leis, sobre fazê-la em django. O  @Márcio Mazza
<mazza em senado.leg.br> e @Edward
de Oliveira Ribeiro <edwardr em senado.leg.br> e me mostraram como criar um
virtualenv, instalar o django, e baixar o sapl... é só os primeiros 11
passos daqui:
https://github.com/interlegis/sapl/blob/3.1.x/docs/instalacao31.rst
b) conversando sobre IDE, o @Sesostris Vieira <sesostris em interlegis.leg.br> me
falou que no próprio eclipse que eu já era familiarizado, existia o PyDEV
que me possibilitaria programar em python com uma IDE que eu já conhecia...
e te digo, é meio chatinho de iniciar, mas foi a melhor coisa que fiz, o
processo de depuração é semelhante ao do java, com acesso fácil a pilha de
funções, suas variáveis em cada etapa da pilha, além do local em específico
que o breakpoint foi adicionado, sem falar que essa visualização é gráfica,
tudo já na está na tela, isso é extremamente dedutivo e indutivo, além de a
navegabilidade gráfica do GoTo Definition é a melhor que já vi até hoje...
tentei ficar só no vscode que é fantástico para frontend, mas nunca
consegui a mesma eficiencia, então fico no vscode para frontend e pydev
para back...
c) os primeiros passos com django... fiz todo o tutorial do django, e só...
já tinha fortalecido o conhecimento sobre MVC (Model-View-Controler)... me
adaptar para MVT (model-view-template) foi de boa... tutorial do django
aqui: https://docs.djangoproject.com/pt-br/3.1/intro/tutorial01/
d) como eu já conhecia a modelagem do sapl, foi relativamente fácil
entender a remodelagem que veio da plataforma anterior, no mais eu fiquei
os primeiros 6 meses concentrado em apenas uma das apps a compilação
e) uma vez compreendido o MVT, no sapl existem coisas que vão além do
django. Os mais relevantes: 1) Crud, CrudAux, menus.py: de modo geral não
precisa conheçê-los mas o uso básico sim, que passa por instanciação
trivial, customização básica se necessário, definir seus layout-templates;
2) rules app: se criar model novo tem que saber alimentar a rules app. 3) a
api: é automática e cria todos endpoint REST para todo o sapl, customizar é
simples e segue as premissas do Django rest framework e a documentação em
sapl/api/views.py 4) integração Solr: já é bem integrado mas se criar
solução que a busca textual vai ser alimentada, então no solr terá que
mexer. 5) configurações docker.


> Eu utilizo um template para fazer os requerimentos dos vereadores. Como
> sou eu que faço a maior parte dos requerimentos desenvolvi um script em
> python para obter estrutura alguns dados como autor, destinatário, data
> do documento, texto etc.
>
> Eu gostaria de utilizar futuramente esse script para alimentar o SAPL e
> colocar todos os requerimentos on-line da melhor forma possível.
>
> Eu estava pensando em fazer algo com selenium (conhece?) ou algo
> diretamente por requisições HTTP. Você teria alguma sugestão?
>
já li sobre selenium, mas nunca usei...
Juntando os três pontos aí em cima, uma historinha: sabe essa compilação de
leis que vc fez oficina, então, em fiz isso como uma solução web em java,
lá em 2009, em 2011 ela foi apresentada no EnGITEC, apresentei a modelagem
teórica, utilizando grafos mapeado em bando de dados relacional e a
funcionalidade fato. Desde então provocações ano a ano eram feitas no
EnGITEC para redesenvolver nativamente a solução dentro do sapl. Em maio de
2015, dentro do engitec daquele ano, tomei essa decisão de o fazer dentro
do sapl 2.5 (mesmo sendo horrível desenvolver frontend e bankend no zope).
Pra minha felicidade este mesmo engitec foi motor para uma mudança de linha
em iniciava ali a discussão de redesenvolver o sapl, o que foi decidido o
fazer em django, primeiro commit em 03/06/2015 aqui:
https://github.com/interlegis/sapl/commit/cb3d65b18014d2d71b6a4e58942efa0c3b7b6bea

Por que a historia? simples: sua casa usa o sapl, certo!?, vc faz scripts
em python para facilitar seu trabalho dentro do sapl, apesar de não ter
participação na informática e nela não poder decidir, certo? Mas sua casa
usa o sapl oficial, certo? vc tem duas possibilidades, ou usa API REST do
sapl para alimentar o sapl da sua casa, com seu usuário se autenticando via
token... ou você começa a redesenvolver essas soluções entre outras novas
que queira, dentro do próprio sapl, enviar o código para o sapl oficial
github.com/interlegis/sapl e depois disso estar disponível para sua casa
usar.


> Sinceramente, espero que esta sejo o ínicio de uma longa conversa.
>

ainda bem que vc deixou espaço para textão... a comunidade sabe que goxto
munthio de textão...
como não conversamos antes, não pedi permissão para responder seu email
compartilhando na lista gitec... para tanto, apaguei os dados que te
identificam e estou encaminhado esta resposta para você e para a lista...

Abraço...

@LeandroJataí
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.interlegis.gov.br/pipermail/gitec/attachments/20201118/50adefad/attachment.html>


Mais detalhes sobre a lista de discussão GITEC