Posts de August, 2010

[Rafael Biriba] 31 de agosto: Dia do Blog 2010

Tuesday, August 31st, 2010

 

blog-day

http://www.blogday.org/

O que é o BlogDay?
BlogDay foi criado na convicção de que os bloggers deverão ter um dia dedicado ao conhecimento de novos blogs, de outros países ou áreas de interesse. Nesse dia os bloggers recomendarão novos blogs aos seus visitantes.

O que acontecerá no BlogDay?
Durante o dia 31 de Agosto, bloggers de todo o mundo farão um post a recomendar a visita a novos blogs, de preferência, blogs de cultura, pontos de vista ou atitude diferentes do seu próprio blog. Nesse dia, os leitores de blogs poderão navegar e descobrir blogs desconhecidos, celebrando a descoberta de novas pessoas e novos bloggers.

( Fonte: http://www.blogday.org/pt.htm )

badge_yellow

Então vamos a algumas recomendações:
Blogs novos:

Outros assuntos:

Bom, feliz dia do blog para todos !

Divulgue: http://www.rafaelbiriba.com/2010/08/31/31-de-agosto-dia-do-blog-2010.html

Divulgue: http://www.rafaelbiriba.com/2010/08/31/31-de-agosto-dia-do-blog-2010.html


Leia também:

[Bernardo Heynemann] Dream Team – Part VII – Ownership

Monday, August 30th, 2010

Introduction

The INews team has reached an important milestone. Four of the team’s values are defined and understood.

This time they are talking about a very controversial topic: product ownership.

Who owns it?

John – Hey! How are you all today?
All – Good!
John – I was reading an awesome article last night. It was so good I felt like calling you guys immediately.
Susan – What was it about?
John - About product ownership. The idea here is that you push product decisions as close to the people working with them as possible. The company is responsible for setting the context that allows those people to decide.
Jake – What do you mean by context?
John – The company is responsible for setting strategies and broad scope goals, as well as providing the team with whatever other intel they might need – financial, internal, market share, marketing, you name it. If the team needs that information, they should get it.
Christian –
Ok, I totally agree with that. I’m still wondering about the ownership part, though.
Susan – In the last event I attended, Wackile – agile for the wacky – I saw a brilliant presentation about how projects are killing agile initiatives. Projects are tricky beasts. They have start, finish and handover. At first there’s nothing wrong with that, except there’s no incentive whatsoever for developers to choose long term decisions. They’ll be long gone by the time their decisions affect the product.
John – I see. Well, Chris, what I meant with ownership is that we as a team should be the ones deciding where the product should go. Not someone with no context about the intricacies of the product. What Susan just pointed out just reinforces the need for the people working with the product to feel part of it.
Jane – I couldn’t agree more. As an experience designer I get to decide quite a few things about the product. Sometimes, though, I wish the team had more freedom to choose their own path.
Joseph – I’ll get Daniel here as I believe he’ll be able to tell us whether this value is aligned with the company’s values.

Ok, you guys don’t know Danny, but he’s a great CIO at Acme. He really fights for his teams, in order to provide them with the best possible work environment.

Daniel – What’s up guys? What can I do to help you?
John – Hey Danny. Thanks for joining us in so short notice. The thing here is we decided as a team that one of our values is that we want to own the product in the lean sense that we get to make product decisions…
Daniel – While the company sets the context, right?
Joseph – Right.
Daniel – Perfect. No problems with me. I’ll get our CEO buy-in. As a start is there any intel I can help you with?
Susan – Hi Danny. Actually, there is: Other news companies’ market share on mobile news delivery.
Daniel – I’ll get you guys that info asap. Now I gotta run. See you all. Take care.
All – See ya!

“What a great guy!”, I think to myself.

Joseph – I guess we just got another team value: we own the product and we’ll take care of it thinking about the long run.
Me – IMHO this was the best meeting so far. Danny is the best.
Joseph – That he is, Bernardo. That he is.

Conclusion

The people who are more qualified to make important product decisions are the same ones working with it on a daily basis. They know all of its intricacies and constraints.

Why risk having someone that does not fully understand the issue deal with it?

Yet, most companies keep pulling decisions up in their hierarchies, trying to protect their products from the poor judgement of their employees.

Not trusting the people doing the work to make decisions results in shallow decisions and lack of commitment by the people working with the product. Short-term actions are made, the product evolves in unintended (and bad) ways and eventually people want to get out of the product team. At some point a major redesign and rebuild is needed.

Have you guys ever seen this?

[Emerson Macedo] [NodeJS] Acontecimentos recentes

Monday, August 30th, 2010

Nos últimos meses, tenho me envolvido muito com NodeJS. Estou fazendo vários experimentos, inclusive algumas coisas internas aqui na empresa. Certamente falarei sobre isso mais pra frente.

Por conta desse envolvimento, tenho procurado acompanhar os acontecimentos do mundo NodeJS e vou tentar resumir aqui algumas coisa relevantes dos últimos dias.

Node Knockout

Node Knockout

Apesar de todas as outras coisas importantes que tenho pra falar aqui, nenhuma delas é tão recente e tão interesasnte quanto o evento Node Knockout, que é basicamente uma maratona, onde cada equipe tem 48 horas para desenvolver uma aplicação “do zero”. Esse evento foi totalmente inspirado no Rails Rumble, que já acontece há alguns anos.

Infelizmente não pude participar do evento, pois eu tinha alguns compromissos pessoais, não menos importantes, e que não poderiam ser adiados. Eu ia fazer uma aplicação com um amigo de portugal, o José Moreira. Ele acabou fazendo sozinho e ficou ótimo da minha opinião. Votem nessa app :)

Node Smart Machines

Durante o Node Knockout, a Joyent disponibilizou uma hospedagem chamada Node Smartmachines, com deployment via GIT. É bem parecido com o esquema do Heroku, só que ainda está começando. Pra usar basta criar uma conta aqui e começar a fazer seus testes.

Smart Platform Management

Node 0.2.0

No último dia 20 de agosto, foi lançado a versão 0.2.0 do NodeJS, que basicamente se resume ao upgrade da versão do V8 para 2.3.8, algumas melhorias e correções de bugs. Apesar de ainda estar nessa versão “rasa”, o NodeJS tem evoluido de maneira bem interesante, tentando atacar os pontos mais críticos. Ryan Dahl tem se mostrado bem participativo e acessível na lista de discussão oficial e isso de fato ajuda bastante. A API ainda não pode ser considerada estável, mas já caminha pra isso, conforme o anúncio feito na lista.

Node Package Management Website

O gerênciador de pacotes mais famoso para NodeJS agora tem um site para browsear os pacotes existentes, assim como o famoso RubyGems, o que faz com que ele se distancie mais ainda dos concorrentes, se consolidando mais ainda como a principal opção nesse segmento.

npm (node package manager)

Essas são algumas das novidades do mundo NodeJS. Aguardemos as próximas.

Post Footer automatically generated by Add Post Footer Plugin for wordpress.

[Bernardo Heynemann] Dream Team – Part VI – Respect and Fun

Monday, August 30th, 2010

Introduction

The last time we met with the Acme INews team I was telling you guys how they came to the conclusion that if you don’t release it, you lose it. Ok, I’m just kidding, but they all agreed that unreleased code is waste and that it was a value for all of them to diligently work on reducing cycle time variation.

This time around we touch a subject that most companies (well at least some of the ones I know of) don’t like to discuss. Respecting your employees as you expect them to respect you, and allowing them to have fun. Yes, that’s right, FUN! Let’s see what the INews team thinks of that.

Respect

Jane – Hey guys. I wanted to talk to you about something since we first met to do this job.

John – Sure Jane, go ahead. I think we must maintain an open channel for communication at all times if we are to succeed as a team.

Jane – Thanks John. Well, sometimes in my previous projects I got the feeling of being an outsider among developers. I heard comments about how I was being picky and annoying. That made me feel very bad and in those projects I feel like I contributed less than I could because I was afraid of that behavior.

Jake – Jane, that’s a very good thing to discuss. As a client-side developer I heard comments in these areas as well. After discussing with the devs and explaining to them my point of view, things worked out quite alright, though.

Jane – Yeah, it might be so. Even so I still think I shouldn’t have to do that. If we are in a team we trust each other and respect each other’s point of view, right?

John – Absolutely right! There can be no better opinion or prevalent point of view. If we are a multidisciplinary team, we should value each other’s opinions above all and treat each other as we want to be treated in return.

Susan – No offense, guys, but sometimes I feel the designers take our opinion for granted as well.

Jane – Hmm… I see… Can you ellaborate, Susan?

Susan – Sure. Sometimes a designer comes up with an user experience that’s great. It really is. I can see myself loving that experience. It just isn’t realistic given our constraints (might be hardware, network, you name it). Usually I approach the designer and explain that. A lot of times I got a “it’s not my problem” look and had to resort to my boss for help. I would say I didn’t get the same respect I was showing for that professional.

Jane – Sure you didn’t. Well, I guess it does go both ways, doesn’t it?

Joseph – I’m pretty sure we can get along if we just try to always see the other person’s point of view and treat them with the same respect we expect them to show towards us,  don’t you agree?

All – Yep.

I keep getting amazed by how simple they make these things look.

Christian – I’d like to discuss a related topic. When I’m contributing to some project or even coding one of my own, usually I have a purpose to fulfill (I need the feature, someone at work does, or I just find it cool). Even though I have a purpose, if it’s not fun, I won’t do it. No matter how much I force myself to do it, I just won’t.

There will be something else that is a lot more fun to do, or I’ll go read something. I was wondering how can we make sure working in our project is fun. How can we enjoy that feeling of “Great!!! I’m going to work today!” when we wake up?

John – I don’t think there’s one right answer for that. I believe it’s a set of things. A great project makes we want to come work on it (the cool tasks as you said). A great environment where we respect each other does that as well. We already have our XBox 360 and our foosball. How do you guys feel of ‘do whatever you want’ friday?

Christian – What do you mean?

John - Every two or three fridays we’ll get a free day. We can code whatever we want, with whomever we want. We can study, experiment or just play a game together. Anything that improves our project in any way whatsoever.

Susan – That’s a very interesting idea. Can we refactor our own product’s code or implement a feature we’d like to see int he product?

John - Sure. Anything we want.

Jane – Could I use that day for discovery and experimenting with different things?

John - Of course! Anything that you think will help!

Jane – Ok, can’t wait till next Friday!!!

Joseph – I really love that idea. I think we are set in two VERY intertwined values. Might be the same value altogether. Respect and Fun with responsibility. Meaning that we’ll respect each other and have fun together, while delivering business value to ACME. Is that about right?

All – YES!!!

Me - Ok, again with time to spare, and it’s about time to go. Anyone for a settlers game?

Conclusion

Several companies (like Yahoo, JotSpot, Atlassian, Facebook, Google, Atom and Technorati), have already found that by letting your employees self-organize and make their own decisions about the product they are working in pays out big time.

Having a fun environment is not only a bonus to productivity. It is a requirement for creative skilled workers to unlock their full potential. Companies that keep trying to control what their employees are doing (via timesheets, task monitoring or metrics) are in fact killing the motivation that could trigger incredible features to their products.

A product team must be kept in a fun, respectful environment where they can decide what they want to do instead of being bossed around. This way, they’ll be working in the product in their free time, because they want to do it.

There’s a very good video by Dan Pink about what motivates us. Basically it’s authonomy, mastery and purpose. You can learn more by watching the video. I VERY DEEPLY recommend it. It really changed my way of seeing some things.

[Rafael Biriba] Globo.com: Inscrições para estágio vão até 15 de outubro/2010

Thursday, August 26th, 2010
http://www.globo.com/estag

http://www.globo.com/estag

O programa de estágio da Globo.com está aberto e as inscrições poderão ser feitas até dia 15 de outubro (2010).

Não perca essa oportunidade… Inscreva-se pelo site http://www.globo.com/estag

Para quem tem conta do linkedin, adicione o usuário Globo.com Estag, os processos seletivos estão sendo divulgados por lá também.

Etapas do processo seletivo: ( 2010 )
- Inscrições: até o dia 15 de outubro
- Prova On-line: ainda não informado
- Entrevista Coletiva: ainda não informado
- Painel: ainda não informado
- Entrevista com o Gestor: ainda não informado
- Início do Estágio: 02 de janeiro de 2011

Fique atento ao seu email, pois as convocações iniciais deverão ser feitas por meio dele
Visite também o site para mais detalhes: http://www.globo.com/estag

Informações adicionais:
Quem pode participar?
Estudantes matriculados em cursos de nível superior, com previsão de formatura para dezembro de 2011 ou  dezembro de 2012, compatíveis com as áreas/vagas existentes, disponíveis para a cidade do Rio de Janeiro e São Paulo.

Existem vagas para que áreas?
Vagas em diversas áreas para estudantes dos mais variados cursos: Administração | Comunicação Social | Desenho Industrial | Estatística | Cursos das áreas de Tecnologia entre outros

Aproveite e dê uma olhada no restante do blog. Dicas importantes podem ser obtidas nos comentários dos outros posts antigos sobre os processos seletivos, principalmente nos posts de processos seletivos antigos, pois muitas duvidas foram respondida pelos comentários… Fique atento para não haver repetição de dúvidas…

Boa sorte a todos e estou a disposição para quaquer pergunta ;)


Leia também:

[Emerson Macedo] NodeJS no Dev In Sampa

Monday, August 23rd, 2010

Acabei de disponibilizar os slides da minha palestra sobre NodeJS no DevInSampa. A partir de hoje vou começar a blogar meus estudos sobre essa tecnologia e experiências que estou fazendo. Os assuntos abordados serão diversos, dentre eles performance, testes, deployment, desenvolvimento web, aplicações puro TCP e console.

Um obrigado especial a galera do devinsampa (Celestino Gomes, Luis Cipriani e Éverton Ribeiro) e  que organizou muito bem o evento.

Nodejs – A performance que eu sempre quis ter

Post Footer automatically generated by Add Post Footer Plugin for wordpress.

[Bernardo Heynemann] Dream Team – Part V – Delivery

Sunday, August 22nd, 2010

Introduction

In our last installment, we learned that the INews team decided to never let problems grow and instead solve them as soon as they appear. They also decided on having a formal way of solving problems, so that they (and the rest of the company) may benefit in the future.

This time we accompany them as they discuss a topic that is very near to my heart: Delivery.

Release or not Release, that’s the question

John – Morning all! We had a very productive day yesterday, now didn’t we?

All – Yep.

Susan – I’m sooooo sleepy, John! (*chuckles*) Yesterday I went home thinking about some values that I hold dear. I’m not sure this is the time to discuss it, but I really enjoy delivering business value. I’m filled with joy when I realize that my work is helping our coworkers in being more productive RIGHT NOW. How do you guys stand on this?

John – Well, when you study Lean Manufacturing, you learn all about delivering, since they consider anything that is not being used by a customer or adding value to a product to be waste. So, if you are a factory worker, your sole purpose is to drive the product as fast as possible to a client. Please note that as fast as possible takes into account every single quality factor that the customer expects.

Christian – I have a lot of experience in delivering, but we call that releases in my projects. I release as often as I can so I can gather feedback from the community. It is also a very good idea to release as much as you can to minimize the amount of work that goes into a release.

Jake – I don’t have much experience in this area, but something tells me that releasing often makes a lot of sense. I was just wondering how the big guys do it: JQuery, Django, Apache and other projects like that. How do they release?

Christian – I’m not sure how they do their releases, but I love apache’s concept of a release: “Releases are, by definition, anything that is published beyond the group that owns it. In our case, that means any publication outside the group of people on the product dev list. If the general public is being instructed to download a package, then that package has been released.” [1]

John - Yeah, couldn’t agree more. You should release as much as makes sense. Unreleased code sitting in our laptops does no good to our clients.

Jane - Well, when I design a user experience for a product, I have to think a little ahead about how our users are going to interact with it. Imagining their experience is in no way a substitute for learning how they are actually using it, so I too consider it to be crucial to have customers using our product as fast as we can, even if we have to cut a little bit on the feature side.

Joseph - Funny thing, I just purchased Continuous Delivery, a book that was just released (no pun intended). This is one of my favorite subjects. I do believe in continuous delivery. As soon as we mark features as complete, we have them in production. Lean Manufacturing introduces a measure called cycle time, which means the total time between a customer requesting something and the customer getting to use it. What I understand we just agreed, is that we will work diligently to reduce our cycle time as much as we can.

John - That sounds about right!

Me – Once more with time to spare! Let’s play some foosball.

Conclusion

Sometimes we are working in something really cool in our projects. Sometimes we are just fixing stuff. The point here is not what we are doing. It’s who’s benefiting from it.

If you are building software I assume that someone is going to use what you are building. If that’s the case, until that customer starts benefiting, your code is waste.

Cycle time is a very interesting measure, in that it measures your turn-around time to new features, as much as your responsiveness to issues that you or your customers find in the software.

From Wikipedia:

Cycle time variation is a proven metric and philosophy for continuous improvement with the aim of driving down the deviations in the time it takes to produce successive units on a production line.[1] It supports organizations’ application of lean manufacturing or lean production by eliminating wasteful expenditure of resources. It is distinguished from some of the more common applications by its different focus of creating a structure for progressively reducing the sources of internal variation that leads to workarounds and disruption causing these wastes to accumulate in the first place. Although it is often used as an indicator of lean progress, its use promotes a structured approach to reducing disruption that impacts efficiency, quality, and value.[2]

In my humble opinion, the best thing about cycle time is that it is a TEAM metric and not an individual one. That means that if the team collaborate to improve work and reduce waste everyone benefits from it.

[Bruno Mentges de Carvalho] Linked Open Data – a próxima web

Saturday, August 21st, 2010

Tim Berners Lee, para quem não sabe, foi quem teve a brilhante idéia de criar a internet. A visão que ele tinha na época era que ele poderia colocar todos os documentos acessíveis e ligados, pelo que chamamos hoje de links. Ao ter essa idéia, ele percebeu que poderia tomar uma dimensão incrível, e isso iria beneficiar muito a humanidade, já que na época todo o conhecimento estava em documentos isolados e de difícil acesso (livros, papéis, documentos eletrônicos em servidores locais, etc).

Com essa visão, ele mandou um memorando pro seu chefe contando o que tinha imaginado. Demorou um tempo até que acreditassem na idéia dele: 18 meses. Dezoito meses depois ele conseguiu ser alocado para desenvolver esse projeto. Ele desenvolveu a base do que hoje temos aqui: o protocolo HTTP, as páginas web, o HTML, etc.

Recentemente Tim Berners Lee escreveu um paper sobre uma nova visão: Linked Data. Na visão dele, documentos a gente pode ler, acessar e tudo mais, porém chegou a hora de publicarmos não só nossos documentos mas nossos dados. Ele cita uma apresentação onde o Hans Rosling combinou dados reunidos de vários países e desmistificou alguns mitos sobre a economia no terceiro mundo. Essa apresentação você pode ver aqui: http://www.ted.com/talks/hans_rosling_shows_the_best_stats_you_ve_ever_seen.html

O dado em si, sozinho, não tem muito valor mas combinado, pode ter um valor incrível. Imagine que seu governo publique todos os dados sobre as construções de pontes no país. Alguém poderia combinar esses dados e descobrir que uma obra em algum estado foi superfaturada, pois outras obras de mesmas características foram 10 vezes mais baratas.

Para os cientistas esses dados são ainda mais importantes, diz Tim Berners Lee. Eles poderiam cruzar dados antes isolados em centros de pesquisas diferentes, e chegar a novas descobertas e criar coisas incríveis, como por exemplo a Cura do Câncer.

Linked Open Data não é somente dados, são relacionamentos. Não é somente dizer o quanto eu peso e tenho de altura, mas saber que eu nasci no Rio de Janeiro, que é uma cidade do Brasil. E eu poderia clicar ali e ver os dados da cidade, sua população, e clicar denovo e ver os dados do país, e descobrir quem foram os presidentes, e clicar neles e assim por diante. É ligar os dados.

Linked Open Data é um dos pilares da Web Semântica. Dar significado as coisas, saber as relações. Meu time na globo.com é responsável por Busca e Semântica e eu sou apaixonado por essa idéia. Acredito que essa idéia será responsável pelo próximo grande salto da humanidade.

Assista ao TED talk do Tim Berners Lee, você não irá se arrepender:

[Renan Oliveira] Afinal, o que é Web Semântica ?

Friday, August 20th, 2010

Pessoal,

Esse é o meu primeiro post,  acho justo me apresentar sou Renan Oliveira, Analista de Sistemas/Developer no time de Busca & Semântica da globo.com, mais informações sobre mim vocês podem ver no sobre. Vou focar o blog na área de tecnologia e principalmente no que mais estudo, ferramentas de Busca e Web Semântica na sua amplitude (ontologia, sparql…).

Vamos ao que interessa. Para responder a pergunta do Post, vou seguir um caminho das pedras.

Qual a proposta da Web Semântica?

É estender os princípios da web dos documentos para os dados. Os dados podem ser acessados usando a arquitetura Web (URI, por ex.), e estar relacionados uns com os outros da mesma forma que os documentos já são. Isso também significa criar uma plataforma comum que permita o compartilhamento e a reutilização dos dados por meio das fronteiras das aplicações, empresas e comunidades, podendo ser processados automaticamente tanto por ferramentas quanto manualmente, também revelando novos relacionamentos possíveis entre porções de dados. Fonte: http://www.w3.org/2001/sw/SW-FAQ#swgoals

Segundo Berners-Lee et alii (2001), a web semântica será uma extensão porém apresentará estrutura que possibilitará a compreensão e o gerenciamento dos conteúdos armazenados na web independente da forma em que estes se apresentem, seja texto, som, imagem e gráficos à partir da valoração semântica desses conteúdos, e através de agentes que serão programas coletores de conteúdo advindos de fontes diversas capazes de processar as informações e permutar resultados com outros programas da web atual.

Isso é, o dados começa a um significado real e não apenas uma abstração compreendida pelo computador.

Se eu quiser fazer uma busca

“Roberto Carlos no maracanã acerta a trave”

na web ela irá ler os dados da frase de forma separada, sem ter um significado associado a ele,  ele não conseguirá saber se foi o cantor Roberto Carlos, se foi em jogo de futebol ou em show no estádio do maracanã, como podemos resolver isso.

Anotando na hora da criação de um conteúdo que ele se Referencia ao jogador Roberto Carlos, ao Estádio do Maracanã e que acertar a trave foi durante um jogo de futebol.

Quem utiliza?

Isso parece ser muito bom, mas que verdadeiramente usa isso, é tão novo que ninguém usa?

Para citar dois, gigantes, veículos de comunicação que utilizam:

BBC - Talvez seja quem use com maior capacidade na área de conteúdo, no link da bbc você encontra todos os posts sobre o desenvolvimento da WS na bbc, para resumir eles utilizam a Linked Open Data, que  será um tópico no futuro do blog, para construir páginas de entretenimento (musica e programas) aproveitando os dados como descrição, discografia, etc.  imagine o quanto de trabalho foi economizado e quanto esse dado ganhou relevância após o uso já que essa informação foi pega de uma fonte segura.

New York Times – Eles publicaram mais de 10.000 publicações na Linked Open Data, disponibilizando um histórico de matérias anotadas semanticamente para futuras consultas, ainda disponibilizaram uma API e agregaram conhecimento a DBPEDIA, que também será um tópico no futuro.

O tópico é extenso propus apenas começar a conversa, com o passar do tempo irei mostrado novidades da área, tecnologias que utilizamos, ontologias, consultas SPARQL, Virtuoso OpenLink e há muito à descobrir.

Links interessantes:

http://semanticweb.org/wiki/Main_Page

http://www.w3.org/2001/sw/SW-FAQ

http://www.semanticweb.com/

Abraços, Renan Oliveira.

[Bruno Mentges de Carvalho] Padronizando o versionamento do seu software com Semantic Versioning

Wednesday, August 18th, 2010

Um dos grandes problemas quando trabalhamos com múltiplos times de desenvolvimento e existem softwares que dependem entre si é saber quando uma versão continua compatível com a anterior. Muito se discute sobre como devemos versionar nosso software visando evitar o problema chamado Dependency Hell (Inferno das Dependências). Esse problema comumente aparece ou com dependency lock, ou seja, seu software não pode mais andar pra frente sem antes fazer um release de todas as dependências, ou com version promiscuity que é quando você assume compatibilidade com versões futuras sem ter certeza.

Foi aí que surgiu uma especificação formal para resolver esses problemas que se chama Semantic Versioning, ou, em português, Versionamento Semântico e essa especificação se encontra aqui: http://semver.org/ (em inglês). Não é nada novo, devo avisar, mas é uma forma de especificar o significado dos números que você usa para versionar seu software. O modelo é simples, o conhecido X.Y.Z onde X é a Major Version, Y é a Minor Version e Z é a Patch Version, exemplo: Meu Software versão 2.5.1.

Para efeito de continuidade, vou traduzir aqui as regras que são poucas mas bem interessantes:

  1. Software que usa Semantic Versioning DEVE declarar a public API. Essa API pode ser declarada no código ou existir em documentação. Quando for feita, ela deverá ser precisa e compreensiva.
  2. Um número de versão normal DEVE ter a forma de X.Y.Z, onde X,Y e Z são inteiros. X é o major version, y é o minor version e Z é o patch version. Cada elemento DEVE aumentar numericamente. Por exemplo: 1.9.0 < 1.10.0 < 1.11.0.
  3. Um número de versão especial PODE ser denominado ao adicionar uma string abritrária logo após o patch version. Essa string DEVE conter somente alfanuméricos mais o símbolo menos [0-9A-Za-z-] e DEVE começar com um caracter alpha [A-Za-z]. Versões especiais devem satisfazer e ter menor precedência que a versão normal associada. Precedência DEVE ser determinada pela ordenação lexicográfica ASCII. Exemplo: 1.0.0beta1 < 1.0.0beta2 < 1.0.0
  4. Uma vez que foi lançada uma versão, o conteúdo daquela versão NÃO DEVE ser modificada. Qualquer modificação deve ser lançada como uma nova versão.
  5. Major version que começe com 0 (0.y.z) é para desenvolvimento inicial. Qualquer coisa pode mudar a qualquer momento. A public API não pode ser considerada estável.
  6. A Versão 1.0.0 define a public API. A maneira com que o número de versão aumenta é agora dependente dessa API e em como ela muda.
  7. Patch version Z (x.y.Z | x > 0) DEVE ser incrementada se somente bug fixes que são compatíveis com versões anteriores são introduzidos. Um bug fix é definido como uma mudança interna que corrige um comportamento incorreto.
  8. Minor Version Y (x.Y.z | x > 0) DEVE ser incrementada se novas funcionalidades que são compatíveis com versões anteriores são introduzidas à public API. Ela PODE ser incrementada se muitas novas funcionalidades ou melhorias forem introduzidas no código privado. Ela PODE incluir patches.
  9. Major version X (X.y.z | X > 0) DEVE ser incrementada se qualquer mudança que quebre a compatibilidade com versões anteriores são introduzidas na public API. Ela PODE incluir mudanças minor e de patch.

É isso. São essas as regras. Mas qual a importância disso se nada disso é novo ? A importância é que se todos seguem essa especificação, todos terão o mesmo entendimento do que significam os números de sua versão e se planejar ao ter que fazer upgrade. Se só o que seu software adicionou foram melhorias e novas funcionalidades que não quebram nenhum comportamento com as versões antigas, eu sei que posso fazer um release tranquilo sem precisar alterar nada do meu lado.

Tem um FAQ legal na url da especificação que traz dúvidas comuns. Lá também orienta quem quer começar agora a usar mesmo tendo um sistema legado cheio de tags. Vale dar uma conferida e tentar espalhar essa especificação. Nós aqui do meu time de desenvolvimento já começamos a usar.