Evolução do ScadaBR... ou "Manifesto ScadaBR 2.0"

Spoiler/Resumão

Falaremos aqui, não necessariamente nesta mesma ordem :slight_smile:

  • sobre próximos passos no ScadaBR.
  • Como atualizar o sistema para as versões modernas do Java8, Tomcat9, etc.
  • Quando teremos um novo instalador?
  • O que é o ScadaLTS e porque abraçamos parcialmente a internacionalização.
  • Como você pode ajudar?

Introdução

Atualmente o projeto ScadaBR é usado literalmente por “dezenas de milhares” de pessoas em todo o mundo. Temos muito orgulho de resolver problemas reais, todos os dias, nas mais diversas áreas que possam ser imaginadas.

Desenvolver um sistema supervisório totalmente gratuito é um grande desafio. Além da complexidade técnica em si, existem questões sociais e filosóficas - quantas pessoas têm, hoje em dia, tempo livre para disponibilizar o projeto? quem é o “dono” do software? como motivar e capacitar desenvolvedores voluntários, para agregar conhecimento nas novas versões?

Pessoalmente, como fundador do projeto e desenvolvedor de sistemas já há algumas décadas, posso ajudar a conduzir a evolução dos próximos passos, mas não tenho repostas as todas as perguntas, e nem acesso a recursos infinitos. O que podemos fazer é orientar, tentar dar ritmo, e resolver pequenos problemas, um de cada vez.

Onde queremos chegar?

A visão permanece a mesma - oferecer uma ferramenta útil, versátil, e o mais completa possível, para que pessoas comuns possam resolver problemas de monitoramento & automação no seu dia-a-dia; ao mesmo tempo que profisisonais liberais, estudantes, autônomos, e pequenas empresas, possam desempenhar profissionalmente suas funções, superando a barreira de entrada do alto custo das soluções proprietárias.

Este cenário já evoluiu (e demos uma IMENSA contribuição, com suporte de toda a comunidade), mas ainda preserva elementos de quando começamos, 15 ou 16 anos atrás.

O que precisamos para chegar lá?

Uma comunidade de software livre precisa incluir os usuários, divulgadores, profissionais capazes de treinar as próximas gerações, manter o site, escrever documentação entre outros.

Em geral, todo o trabalho hoje é voluntário. Temos um patrocinador que “banca” o site no ar, e alguns anúncios na página que ajudam com despesas miúdas - mas somos gratos particularmente a todos os usuários que publicam seus trabalhos de fim de curso, mestrados, vídeos no Youtube, respondem aos posts nos forums e contribuem em outras mídias sociais.

Sem mais delongas, porém, o recurso mais escasso hoje, onde temos dificuldade de dar uma boa vazão, é GENTE CAPAZ DE ESCREVER SOFTWARE.

Qualquer contribuição é válida - desenhar imagens para HMI, fazer debug de pequenos defeitos, corrigir traduções…

Mas precisamos também de gente capacitada para as contribuições mais pesadas. Aqui não falamos de qualquer software, e as habilidades abaixo precisam ser atendidas:

  • Desenvolvimento orientado a objetos
  • Uso correto de sistemas de controle de versão
  • Entendimento sobre sistemas operacionais
  • Desenvolvimento Web (cliente/servidor)
  • Noções de Automação e Protocolos

Mais especificamente no ScadaBR, a nossa arquitetura atual exige estes conhecimentos:

  • Desenvolvimento com Java e Tomcat
  • Conhecimento sobre a filosofia Servlets com JSP

Quais ações são mais urgentes?

A evolução para o Java 8 e Tomcat 9 são críticos, por motivos de segurança, e modificações no modelo de licenciamento da Oracle, que tornam cada vez mais difícil distribuir e encontrar o Java 6.

Quais outras ações são desejadas?

Posso citar algumas de cabeça

  • Evolução nas interfaces de usuários
  • Gráficos mais modernos com “rolar, dar zoom”
  • Aproveitamento de objetos (agrupar componentes e reutilizá-los como templates)
  • Novos protocolos
  • Correção de bugs
  • Evolução do modelo SOAP para o modelo REST
    … e uma infinidade de outras, afinal quanto mais usamos, mais idéias surgem.

A organização de idéias ou “issues” em um repositório único (lista de tarefas ou “backlog”) é altamente desejado. É possível executar este tipo de controle usando ferramentas do Sourceforge ou, mais modernamente, no Github.

O que é o projeto ScadaLTS?

Em 2017 fomos visitados por colegas europeus, principalmente o Brent de Luxemburgo e o Michal da Polônia. Fizemos grande amizade e pudemos conhecer o impacto que o ScadaBR também estava provocando lá do outro lado do Atlântico.

Seguindo no espírito do open-source, visualizou-se um “fork” ou desdobramento do projeto atual, com o fim específico de dar mais robustez e atualização ao software. A sigla LTS significa “Long Term Service” e representa a capacidade de fecharmos uma versão estável, que perdure por muitos anos, não necessariamente com muitas funcionalidades novas, mas principalmente com correções críticas e boa capacidade de dar suporte.

O ScadaLTS assim se propõe a ser um “núcleo duro” para o software, não como um concorrente para o ScadaBR, mas exatamente como uma parceria necessária na evolução.

Conseguimos com o ScadaLTS alguns objetivos interessantes - sensibilização internacional, uma mentalidade de “longa duração” com uso de versões novas do Java, bibliotecas mais atualizadas, migração para o Github, uso do Docker, entre inúmeras outras. Porém, o LTS ainda não tem uma versão fechada e 100% estável, com o mesmo conjunto de funcionalidades que tínhamos no ScadaBR. Durante o processo de evolução, muita coisa está sendo mexida, e algumas funcionalidades comuns estão “quebradas” necessitando fix (para dar um exemplo simples, a utilização de portas seriais com Modbus RTU).

Qual o futuro desejado para a Arquitetura do ScadaBR?

Para quem não conhece os detalhes técnicos, o ScadaBR pode ser descrito de maneira muito simplificada, assim:
1- O software canadense “Mango m2m” utilizado como núcleo
2- Um patch (arquivos adicionais e correções) que extendem o Mango com traduções, novos protocolos, API´s, pacotes de imagens e funcionalidades
3- Uma coleção de instaladores, especialmente para Windows com o Tomcat6 pré-instalado e pronto para usar; e outros para versões diversas de Linux.

O projeto Mango m2m em sua versão Pública ou “GPL”, tal como utilizamos no ScadaBR, foi descontinuado pelo autor original sendo repassado para uma empresa americana, a Infinite Automation. As novas versões do Mango estão (escrevo isso em 2020) “anos-luz” à frente do ScadaBR, com um software muito robusto, gratuito para pequenas instalações, e de custo relativamente baixo para uso profissional.

Mantenho contato eventual com os diretores da Infinite Automation, são excelentes profissionais e muito dispostos a ajudar, mas o enfoque mais comercial do Mango não atende aos propósitos originais do ScadaBR, de oferecer uma ferramenta 100% gratuita e baseada em comunidade. Ambos os projetos podem (e devem) coexistir de forma pacífica, cada um com seu propósito.

Com a “saída de cena” do Mango, visualizamos a necessidade de troca do núcleo do software. Precisa ser algo mantido por profissionais muito capacitados, com orientação pura de software livre (sem travas comerciais), e com visão de longo prazo. Atualmente o grupo liderado pelo Brent, Michal, Grzegorz entre outros no ScadaLTS, é o que se destaca com todos estes requisitos simultaneamente.

De maneira que um novo desenho para o “ScadaBR 2” começa a tomar esta forma:
1- O software internacional “ScadaLTS” utilizado como núcleo
2- Patches brasileiros com traduções, novos protocolos, pacotes de imagens e funcionalidades
3- Uma coleção de instaladores, especialmente para Windows com Tomcat9 pré-instalado e pronto pra usar; e outros para versões diversas de Linux.

Quanto mais as novas contribuições de software, a partir de hoje, puderem ser alimentadas diretamente no tronco principal do projeto ScadaLTS, maior a garantia de compatibilidade, apoio pelas dezenas de desenvolvedores lá envolvidos, e alinhamento com a visão de futuro do projeto.

Independente disso, com visão mais imediata e de curto prazo, há algumas ações que precisam ser tomadas para manter o ScadaBR “vivo”. Não podemos esperar uma grande reforma na arquitetura, para usufruir de benefícios práticos e de acesso imediato.

Sugestões de Roadmap

ScadaBR 1.1CE (Community Edition)
Esta versão deve preservar a arquitetura de instaladores do ScadaBR1.0CE, com a atualização crítica para Java e Tomcat.

  • Mango como núcleo
  • Build compatível em Java 8 e openJDK
  • Mudança do MySQL para o MariaDB
  • Utilização compatível com Tomcat 9
  • Patches etc; (já existentes)
  • Instaladores Windows, Linux etc; (novos ou atualizados)

ScadaBR 1.2CE (Community Edition)

  • Adição de bugfixes mínimos e novas funcionalidades, submetidos pela comunidade
  • Remoção de blibliotecas obsoletas

ScadaBR 2.0-Alfa

  • ScadaLTS (versõs de desenvolvimento) como núcleo
  • Instalador para Windows

ScadaBR 2.0-Beta

  • Correção de funcionalidades críticas “quebradas” no LTS como o Modbus RTU
  • Tradução ptBR de pelo menos 80% dos componentes
  • Novidades da comunidade

ScadaBR 2.0 CE

  • ScadaLTS em versão estável como núcleo
  • Compatibilidade com openJDK na última versão disponível no momento do build
  • Instaladores, no mínimo, para Windows 10, Ubuntu, e Docker

Por onde começar?

Estou pessoalmente bem interessado em ver o bichano rodando no Java 8, ou preferencialmente no openJDK. Infelizmente o tempo é curto e vamos gota a gota, pingando uma ou duas horinhas cada fim de semana.

Encontrei alguns guias de build no fórum e no portal.

http://www.scadabr.com.br/index.php/2017/06/06/compilacao-do-scadabr1-1/

http://www.scadabr.com.br/index.php/2017/06/06/scadabr-1-1-com-ubuntu-java8-tomcat8-e-mariadb/

O ScadaLTS roda em Java8/openJDK e é um ponto de partida para o trabalho.

O ponto crucial para sair do Java6 é a subistuição da bilbioteca Rhino, que roda os scripts e as variáveis Meta, e tem problemas de compatibilidade nos javas mais novos.

Podemos seguir a discussão neste mesmo tópico, dividindo tarefas, e compartilhando os avanços.

Onde você pode ajudar?

Estamos buscando contribuição especificamente para a ScdadBR1.1CE indicada acima.
Alguns posts no fórum e no blog já começam a nos apontar na direção correta.

Melhorias no software são muito bem-vindas, mas será difícil nos comprometer em dar “merge” nas novas contribuições antes que os itens críticos sejam sanados (Java8/openJDK, tomcat9, mariaDB).

Também é importante que novas contribuições, comecem a estar alinhadas com a stack atualizada do LTS. Lembre que nosso software já tem mais de 10 anos, o que em termos de software, já é um “ancião”.

Estamos buscando desenvolvedores de software que queiram se capacitar na direção que o “ScadaBR powered by LTS” está tomando: uso de docker, novas bibliotecas spring, uso do Vue.js, etc.

Estimulamos a criação de novos componentes gráficos, ou a conversão de pacotes de imagens gratuitas (copyleft, CC ou royalties-free) para o formato do ScadaBR

Todo tipo de idéias e contribuições são necessárias!

Considerações finais

Obrigado pela leitura!! E mãos à obra.

3 curtidas

Muito bom saber desssas questões. Acredito que um fork do projeto no GitHub seria um passo inicial para podermos fazer melhorias. Acredito que cada um tirando algumas horas por semana pra ajudar podemos evoluir a ferramenta.

Desde o periodo que trabalhei como tecnico no scadabr, percibi essa necessidade do projeto scadabr por um desenvolvedor capaz de trabalhar no projero e poder manipula-lo de acordo com a necessidade do cliente, desde daquele tempo mudei todo meu foco de tecnico em automacao para desenvolvedor. Meu nivel de desenvolvimento ainda nao é bom. Mas se algum colega quiser me passar informaçoes minima que seja. Terei todo o prazer de ajurda o projeto.

Alo,
interessante a idéia de usar o github.
estou fazendo as primeiras experimentações com a migração (postarei em breve) e assim que tiver modificações minimamente úteis, subir para o github pode ser uma idéia sim.

hoje os fontes estão no sourceforge em svn, mas sei que “os tempos mudaram” e os novos dev´s usam muito mais o git.

abç

A primeira parte da epopéia :slight_smile: que é simplesmente atualizar para javas mais recentes (sem novas features, nem novos bugs), vou seguir relatando neste outro tópico do fórum.

Eu já estou ansioso.
Estou aguardando com ansiedade algumas coisas. Uma delas é o upgrade para instalar o sistema em java7. Um numero muito grande de problemas vem dessa limitação.

Oi Pessoal!

Estava mergulhado em uns projetos aí e fiquei um bom tempo sem aparecer aqui no forum. (fora uns meses afastado por Covid…)

Vou fazer uma pergunta, por favor, não se ofendam…

Tem algum jeito de abandonar esse tal de Java? Não seria o caso de migrarmos para alguma outra tecnologia? Eu tenho usado para algumas coisas mais simples, REST-API, uma mistura de python com WSGI (Flask)… roda suave… e hoje em dia tem muita coisa de protocolos e automação já disponível em python.

Bom, uma outra pergunta, como faço pra ajudar?

[]'s
Daniel

@Gulart, isso seria possível, aliás, tudo é possível,
contudo requer muito tempo, muitas linhas de código e muito trabalho, não é algo que se faça num fim de semana.

É necessário testar cada biblioteca de protocolo para ver se funcionam muito bem quando integradas, fazer o acesso a banco de dados, tudo isso demanda muito tempo, muito esforço.

É mais fácil continuar tocando com o que já esta pronto do que fazer algo do zero.

Para desenvolvimento, é melhor ir para o ScadaLTS.

Para ajudar no desenvolvimento, você precisa saber bem de Java/Servlets, DOJO, SpringMVC, entre outras coisas. O meu java ainda é muito primário, como entendo bem de Linux, estou fazendo um novo instalador Linux que vai poder instalar o ScadaLTS ou o ScadaBR tanto no Computador quanto na Raspberry PI. Voce pode ajudar aqui no fórum escrevendo artigos, toda ajuda é apreciada.

Espero ter esclarecido as suas dúvidas.

SS (Stay Safe)
Wagner de Queiroz

Olá Wagner!

Um motivo que me leva a questionar este posicionamento, é o fato de todo o sistema ScadaBR/LTS estar “preso” em uma plataforma bem obsoleta (não o Java em si, que eu particularmente desprezo, rsrsrs, mas suas versões), muito principalmente por estar intrinsecamente amarrado a um backend feito pela Mango, que deixou de ser código aberto, e não recebe nenhum update.

Mesmo no projeto LTS, eu vejo bastante esforço na parte grafica, acabamento, funções de UI de usuário, ou seja, existe muito esforço da comunidade no FrontEnd do projeto, sem muito trabalho no backend, até por ser obsoleto e por estar defasado em um projeto que não é mais código aberto.

Por um momento, minha proposta seria voltar novamente a atenção ao Backend, é claro que tem um bom trabalho (de corno) envolvido, mas seria um grande passo na plataforma, pois no momento que o core do sistema está em um servidor de aplicação, fornecendo todo acesso via API, o sistema que vai ser o FrontEnd pode ser qualquer coisa… uma pagina HTML+CSS, PHP, React, Kotlin, Android e iOS native, etc… Imagina o ScadaBR rodando em um aplicativo de celular, com controles personalizados para o cliente. Tem infinitas possibilidades para o sistema. Ele fica “agnóstico” quando ao FrontEnd.

Só umas ideias ao vento.

Daniel