Scripts distribution / Distribuição de scripts

fnunes's picture

My scripts are now live on GitHub (original version here)

English version
People following this blog or my posts in comp.databases.informix or in the IIUG mailing lists may have noticed I've been working with Informix for a couple of decades (actually a bit more). Over this period, I, as any Informix DBA have created and used a few utility scripts and code.

Several years ago I decided to use a version control system to manage these sources essentially as a way to keep track of versions and changes. The main driver to this was that I occasionally left some of these scripts in some customers who eventually later got in touch with me to report doubts or issues. Sometimes it was hard to understand the version they were using so that I could understand if the problem or doubt would still be meaningful in the latest versions.
After looking around I decided to use CVS for it's simplicity and because I didn't need any fancy distributed version control system.

Later I decided to make the scripts generally available and over time I got a VM running on my home computer with ViewCVS installed. This is a handy little utility that will present a web interface over a CVS repository. Simple to setup it worked great, as long as the VM was running, my Internet provider was ok, and I could update my dynamic DNS service if my IP changed. As you can imagine, several potential points of failure resulted in the unavailability of the system for long periods.

Just recently I decided I needed to fix this. So I looked around for public source codes repositories that could be used. For several reasons GitHub was the natural choice (basically too much uncertainty around other options and some security issues). But if from a hosting point of view GitHub was a good choice, from some other practical aspects is was a nightmare:

  • It's a nice distributed version control system, created for easy collaboration between many developers spread across geographically disperse regions. A simple automatic feature of CVS which is to mark a file with a specific version on each commit, one that can be easily readable by an end user, is not possible (nor really needed in a traditional project where there is a "build" phase) with Git.
  • The concepts are a bit more complex (to say the leastt), given the objectives. For my use case this is completely overkill
  • GitHub offers also an SVN (another version control system) option, but converting to SVN would still require significant changes on the way I work
  • I wanted to convert my CVS repository to a new system, without loosing the history of changes

After a couple of weeks messing around with GitHub and a nice CVS2Git conversion utility I'm glad to announce I've done it.

From now on, my work with Informix scripts will be available on:

http://github.com/domusonline/InformixScripts

You can browse it, download the scripts and even clone the repository for your use. Currently I have no plans to include collaborators on this repository (people who would be able to submit changes made by them to the scripts). There are several reasons why:

  • I don't have available time to guarantee good support for this to work out well
  • I don't think this is really need. I highly doubt there would be requests in a significant number to justify this

Having said this, by no means I'm stating I'm not interested in improving the scripts. Quite the opposite. If you use any of them and find a bug or have doubts please send me feedback, or propose changes and I'll do my best to answer in a timely manner. I just can't guarantee anything. GitHub has a nice feature that allows users to create issues, make requests etc.
In any case the scripts are made available as GPL version 2 license You can use them and change them.

Things to do and caveats
Many of the scripts are a bit useless without some documentation or guidance. Not that they are very complex, but some of them have some assumptions and dependencies on other scripts. I'll try to document the ones that really need documentation. I'll try to do this in two ways:

  • Add the documentation to GitHub, either in it's wiki or with README files
  • Eventually post here some articles about some of the scripts

In any case, most of the scripts (the most useful ones I'd say) are self contained and will show you the usage if you run them with the "-h" option.

Feel free to access the repository, download the script you feel could be useful and send me feedback about problems, suggestions etc

Versão Portuguesa
Quem siga este blog ou as minhas participações no comp.databases.informix ou nas listas e email do IIUG, já terá percebido que trabalho com Informix há um par de décadas (um pouco mais na verdade). Durante este período eu, como qualquer outro DBA Informix, criei e usei algum código e scripts.

Há vários anos atrás decidi que deveria utilizar um sistema de controlo de versões para gerir estas fontes, essencialmente como uma forma de manter um registo de versões e modificações. A principal motivação para isto foi que ocasionalmente deixo alguns destes scripts em clientes que visito, os quais eventualmente mais tarde me contactam com dúvidas ou problemas. Por vezes era difícil perceber que versão estavam a usar de forma a perceber se o problema ou dúvida ainda fazia sentido nas versões mais recentes.
Depois de procurar decidi usar o CVS,pela simplicidade e porque não necessitava de funcionalidades "finas" oferecidas pelos sistema de controlo de versões distribuídos.

Mais tarde decidi que deveria disponibilizar os scripts e acabei por ter uma VM a correr no PC caseiro com o ViewCVS instalado. Este componente é um pequeno software que disponibiliza uma interface web sobre um repositório CVS. É simples de montar e funciona bem, desde que a VM esteja a correr, que o meu serviço de internet esteja estável e que eu consiga atualizar o serviço de DNS dinâmico em caso de mudança de IP. Como se pode imaginar, vários potenciais pontos de falha resultaram em indisponibilidade durante longos períodos.

Mais recentemente decidi que deveria resolver isto. Procurei por serviços de repositórios públicos e gratuitos. Por várias razões o GitHub foi a escolha natural (basicamente devido a incertezas e problemas de segurança associados a outras alternativas). Mas se do ponto de vista do alojamento o GitHub é uma boa escolha, de outros pontos de vista mais práticos foi um pequeno pesadelo:

  • É um excelente sistema distribuído de controlo de versões, criado para fácil colaboração entre muitos programadores espalhados por diferentes áreas geográficas. Mas uma simples funcionalidade do CVS, que "marca" cada fonte com uma versão ou revisão específica durante um commit não é possível (nem é realmente necessária num projeco tradicional onde exista uma fase de "build")
  • Os conceitos são um pouco mais complexos (para não dizer mais), especialmente considerando os objectivos. Para o meu caso de uso é um "exagero".
  • O GitHub também oferece uma opção de usar o SVN (outro sistema de controlo de versões). Mas a conversão para o SVN revelou-se também trabalhosa
  • Queria converter o repositório sem perder o histórico das alterações

 Depois de um par de semanas às voltas com o GitHub e um simpático software de conversão, o CVS2Git, é com satisfação que anuncio que está feito.

A partir de agora, o meu trabalho em scripts relacionados com Informix estará disponível em:

http://github.com/domusonline/InformixScripts

Pode navegar no repositório, transferir os scripts individualmente ou até clonar o repositório para seu uso. Neste momento não tenho planos para incluir colaboradores neste repositório (pessoas que poderiam fazer envios de alterações). Há várias razões para isto:

  • Não tenho disponibilidade de tempo para garantir um nível de suporte que permitisse o bom funcionamento do processo
  • Não me parece que seja realmente necessário. Dúvido sinceramente que houvesse pedidos num número que justificasse isto

Tendo dito isto, não quero dizer de forma nenhuma que não esteja interessado em melhorar os scripts. Muito pelo contrário. Se usar algum deles e encontrar um problema, ou se tiver dúvida por favor envie-me feedback ou proponha alterações que eu farei o meu melhor para responder atempadamente. Apenas não posso garantir nada. O GitHub tem uma funcionalidade simpática que permite que os utilizadores possam criar "issues" que podem ser comentários, relatos de erros, pedidos de funcionalidades etc.
Em qualquer caso os scripts são disponibilizados sob a licença GPL versão 2. Pode usá-los e alterá-los.

Alterações e problemas
Muitos dos scripts são um pouco inúteis sem alguma docuemntação ou aconselhamento. Não que sejam muito complexos, mas alguns deles partem de certos pressupostos, ou têm dependência de outros scripts. Tentarei documentar os que realmente necessitam de documentação. Isto poderá ser feito de duas formas:

  • Adicionar documentação ao GitHub, seja na forma do Wiki ou em ficheiros README
  • Eventualmente através de alguns artigos aqui no blog

De qualquer das formas, a maioria dos scripts (os mais úteis diria eu) são independentes e mostram alguma ajuda se executados com a opção "-h"

Esteja à vontade para aceder ao repositório, descarregar os scripts que lhe possam ser úteis e envie-me feedback sobre problemas, sugestões etc.