You are on page 1of 5

29/04/2015

VersionamentoSemntico2.0.0

english</>[en] franais</lang/fr>[fr] pycc</lang/ru>[ru] espaol</lang/es>[es]


italiano</lang/it>[it] portugusbrasileiro</lang/ptBR>[ptBR] </lang/zhTW/>[zh
TW] </lang/zhCN/>[zhCN] slovensky</lang/sk>[sk] slovenina</lang/sl>[sl]
</lang/ar>[ar] </lang/ja>[ja]
v2.0.0</lang/ptBR/spec/v2.0.0.html>

v2.0.0rc.1</lang/ptBR/spec/v2.0.0rc.1.html>

VersionamentoSemntico2.0.0
Sumrio
DadoumnmerodeversoMAJOR.MINOR.PATCH,incrementea:
1. versoMaior(MAJOR):quandofizermudanasincompatveisnaAPI,
2. versoMenor(MINOR):quandoadicionarfuncionalidadesmantendocompatibilidade,e
3. versodeCorreo(PATCH):quandocorrigirfalhasmantendocompatibilidade.
Rtulosadicionaisparaprlanamento(prerelease)emetadadosdeconstruo(build)estodisponveiscomo
extensoaoformatoMAJOR.MINOR.PATCH.

Introduo
Nomundodegerenciamentodesoftwareexistealgoterrvelconhecidocomoinfernodasdependncias
("dependencyhell").Quantomaisosistemacresce,emaispacotessoadicionadosaele,maiorsera
possibilidadede,umdia,vocencontrarsenestepoodedesespero.
Emsistemascommuitasdependncias,lanarnovospacotesdeversespodesetornarrapidamenteum
pesadelo.Seasespecificaesdasdependnciassomuitoamarradasvoccorreoriscodeumbloqueiode
verso(Afaltadecapacidadedeatualizarumpacotesemterdeliberarnovasversesdecadapacote
dependente).Seasdependnciassovagamenteespecificadas,vocirinevitavelmentesermordidopela
'promiscuidadedaverso'(assumindocompatibilidadecomfuturasversesmaisdoquerazovel).Oinferno
dasdependnciasondevocestquandoumbloqueiodeversoe/oupromiscuidadedeversoteimpede
deseguiremfrentecomseuprojetodemaneirafcilesegura.
Comoumasoluoparaesteproblemaproponhoumconjuntosimplesderegraserequisitosqueditamcomo
osnmerosdasversessoatribudoseincrementados.
Essasregrassobaseadasem,masnonecessariamentelimitadassbemdifundidasprticascomumente
emusotantoemsoftwarefechadoscomoopensource.Paraqueestesistemafuncione,primeirovocprecisa
declararumaAPIpblica.Istopodeconsistirdedocumentaoouserdeterminadapeloprpriocdigo.De
qualquermaneira,importantequeestaAPIsejaclaraeprecisa.DepoisdeidentificadaaAPIpblica,voc
comunicaasmudanascomincrementosespecficosparaoseunmerodeverso.Considereoformatode
versoX.Y.Z(Maior.Menor.Correo).Correodefalhas(bugfixes)quenoafetamaAPI,incrementaa
versodeCorreo,adies/alteraescompatveiscomasversesanterioresdaAPIincrementaaverso
Menor,ealteraesincompatveiscomasversesanterioresdaAPIincrementaaversoMaior.
Euchamoessesistemade"VersionamentoSemntico".Sobesteesquema,osnmerosdeversoeaforma
comoelesmudam,transmiteosignificadodocdigosubjacenteeoquefoimodificadodeumaversoparaa
prxima.

http://semver.org/lang/ptBR/

1/5

29/04/2015

VersionamentoSemntico2.0.0

EspecificaodeVersionamentoSemntico(SemVer)
Aspalavraschaves"DEVE","NODEVE","OBRIGATRIO","DEVER","NODEVER","PODEM","NO
PODEM","RECOMENDADO","PODE"e"OPCIONAL"nopresentedocumentodevemserinterpretadoscomo
descritona[RFC2119](http://tools.ietf.org/html/rfc2119).
1. SoftwareusandoVersionamentoSemnticoDEVEdeclararumaAPIpblica.EstaAPIpoderser
declaradanoprpriocdigoouexistirestritamentenadocumentao,desdequesejaprecisae
compreensiva.
2. UmnmerodeversonormalDEVEteroformatodeX.Y.Z,ondeX,Y,eZsointeirosnonegativos,e
NODEVEconterzerosesquerda.XaversoMaior,YaversoMenor,eZaversodeCorreo.
CadaelementoDEVEaumentarnumericamente.Porexemplo:1.9.0>1.10.0>1.11.0.
3. Umavezqueumpacoteversionadofoilanado(released),ocontedodestaversoNODEVEser
modificado.QualquermodificaoDEVEserlanadocomoumanovaverso.
4. Noinciododesenvolvimento,aversoMaiorDEVEserzero(0.y.z).Qualquercoisapodemudara
qualquermomento.AAPIpblicanodeveserconsideradaestvel.
5. Verso1.0.0defineaAPIcomopblica.Amaneiracomoonmerodeversoincrementadoapseste
lanamentodependentedaAPIpblicaecomoelamuda.
6. VersodeCorreoZ(x.y.Z|x>0)DEVEserincrementadoapenassemantivercompatibilidadee
introduzircorreodebugs.Umacorreodebugdefinidacomoumamudanainternaquecorrigeum
comportamentoincorreto.
7. VersoMenorY(x.Y.z|x>0)DEVEserincrementadaseumafuncionalidadenovaecompatvelfor
introduzidanaAPIpblica.DEVEserincrementadasequalquerfuncionalidadedaAPIpblicafordefinida
comodescontinuada.PODEserincrementadaseumanovafuncionalidadeoumelhoriasubstancialfor
introduzidadentrodocdigoprivado.PODEincluirmudanasanveldecorreo.AversodeCorreo
deveserredefinidapara0(zero)quandoaversoMenorforincrementada.
8. VersoMaiorX(X.y.z|X>0)DEVEserincrementadaseforemintroduzidasmudanasincompatveisna
APIpblica.PODEincluiralteraesanveldeversoMenoredeversodeCorreo.Versode
CorreoeVersoMenordevemserredefinidaspara0(zero)quandoaversoMaiorforincrementada.
9. UmaversodePrLanamento(prerelease)PODEseridentificadaadicionandoumhfen(dash)euma
sriedeidentificadoresseparadosporponto(dot)imediatamenteapsaversodeCorreo.Identificador
DEVEincluirapenascaracteresalfanumricosehfen[09AZaz].IdentificadorNODEVEservazio.
IndicadornumricoNODEVEincluirzerosesquerda.VersodePrLanamentotemprecedncia
inferiorversonormalaqueestassociada.UmaversodePrLanamento(prerelease)indicaquea
versoinstvelepodenosatisfazerosrequisitosdecompatibilidadepretendidos,comoindicadoporsua
versonormalassociada.Exemplos:1.0.0alpha,1.0.0alpha.1,1.0.00.3.7,1.0.0x.7.z.92.
10. Metadadosdeconstruo(Build)PODEseridentificadaporadicionarumsinaldeadio(+)eumasriede
identificadoresseparadosporpontoimediatamenteapsaCorreoouPrLanamento.Identificador
DEVEsercompostoapenasporcaracteresalfanumricosehfen[09AZaz].IdentificadorNODEVE
servazio.MetadadosdeconstruoPODEMserignoradosquandosedeterminaaversodeprecedncia.
Assim,duasversesquediferemapenasnosmetadadosdeconstruo,tmamesmaprecedncia.
Exemplos:1.0.0alpha+001,1.0.0+20130313144700,1.0.0beta+exp.sha.5114f85.
11. Aprecednciareferecomoasversessocomparadascomcadaoutraquandosolicitado.Aprecedncia
DEVEsercalculadaseparandoidentificadoresdeversoemMaior,Menor,CorreoePrlanamento,
nestaordem(Metadadosdeconstruonofiguramnaprecedncia).Aprecednciadeterminadapela
primeiradiferenaquandosecomparacadaidentificadordaesquerdaparadireita,comosesegue:Verses
Maior,MenoreCorreososemprecomparadasnumericamente.Example:1.0.0<2.0.0<2.1.0<2.1.1.
QuandoMaior,MenoreCorreosoiguais,aversodePrLanamentotemprecednciamenorquea
http://semver.org/lang/ptBR/

2/5

29/04/2015

VersionamentoSemntico2.0.0

versonormal.Example:1.0.0alpha<1.0.0.AprecednciaentreduasversesdePrlanamentocom
mesmaversoMaior,MenoreCorreoDEVEserdeterminadacomparandocadaidentificadorseparado
porpontodaesquerdaparadireitaatquesejaencontradadiferenadaseguinteforma:identificadores
consistindoapenasdgitossocomparadosnumericamenteeidentificadorescomletrasouhfenso
comparadoslexicalmentenaordemdeclassificaoASCII.Identificadoresnumricossempretmmenor
precednciadoqueosnonumricos.Umconjuntomaiordecamposdeprlanamentotemuma
precednciamaiordoqueumconjuntomenor,setodososidentificadoresanterioressoiguais.Example:
1.0.0alpha<1.0.0alpha.1<1.0.0alpha.beta<1.0.0beta<1.0.0beta.2<1.0.0beta.11<1.0.0rc.1<
1.0.0.

PorqueusarVersionamentoSemntico?
Estanoumaideianovaourevolucionria.Defato,vocprovavelmentejfazalgoprximoaisso.O
problemaque"prximo"nobomobastante.Semaadernciaaalgumtipodeespecificaoformal,os
nmerosdeversosoessencialmenteinteisparagerenciamentodedependncias.Dandoumnomee
definiesclarassideiasacima,ficafcilcomunicarsuasintenesaosusuriosdeseusoftware.Umavez
queestasintenesestoclaras,especificaesdedependnciasflexveis(masnotoflexveis)finalmente
podemserfeitas.
UmexemplosimplesvaidemonstrarcomooVersionamentoSemnticopodefazerdoinfernodedependncia
umacoisadopassado.Considereumabibliotecachamada"CaminhaoBombeiros".Elarequerumpacote
versionadodinamicamentechamado"Escada".QuandoCaminhaoBombeirosfoicriado,Escadaestavana
verso3.1.0.ComoCaminhaoBombeirosutilizaalgumasfuncionalidadesqueforaminicialmenteintroduzidas
naverso3.1.0,vocpodeespecificar,comsegurana,adependnciadaEscadacomomaiorouiguala3.1.0
pormmenorque4.0.0.Agora,quandoEscadaverso3.1.1e3.2.0estiveremdisponveis,vocpoderlana
losaoseusistemadegerenciamentodepacoteesaberqueelesserocompatveiscomossoftwares
dependentesexistentes.
Comoumdesenvolvedorresponsvelvocir,claro,querercertificarsequequalqueratualizaonopacote
funcionarcomoanunciado.Omundorealumlugarbagunadonohnadaquepossamosfazerquantoa
issosenosermosvigilantes.OquevocpodefazerdeixaroVersionamentoSemnticolheforneceruma
maneirasensatadelanareatualizarpacotessemprecisaratualizarparanovasversesdepacotes
dependentes,salvandolhetempoeaborrecimento.
Setudoistosoadesejvel,tudoquevocprecisarfazerparacomearausarVersionamentoSemntico
declararquevocoestausandoeento,seguirasregras.Adicioneumlinkparaestewebsitenoseu
READMEparaqueoutrossaibamasregrasepossambeneficiarsedelas.

FAQ
Comodevolidarcomrevisesnafase0.y.zdedesenvolvimentoinicial?
Acoisamaissimplesasefazercomearsuaversodedesenvolvimentoinicialem0.1.0e,ento,
incrementaraumaverso'menor'emcadalanamentosubsequente.

Comoeuseiquandolanaraverso1.0.0?
Seseusoftwareestsendousadoemproduo,elejdeveserprovavelmente1.0.0.SevocpossuiumaAPI
estvelaqualusuriospassaramadepender,deveser1.0.0.Sevocestsepreocupandobastantecom
compatibilidadecomversesanteriores,jdeveser1.0.0.

Istonodesencorajaodesenvolvimentogileiteraorpida?
AversoMaiorzerotemofocoexatamentenodesenvolvimentorpido.SevocestmudandoaAPItododia,
http://semver.org/lang/ptBR/

3/5

29/04/2015

VersionamentoSemntico2.0.0

provavelmentevocestnaverso0.y.zounumbranchseparadodedesenvolvimento,trabalhandonuma
prximaversoMaior.

SemesmoamenormudanaincompatvelcomaAPIpblicarequeraumentodaverso
maior,novouacabarnaverso42.0.0muitorapidamente?
Estaumaquestodedesenvolvimentoresponsveleconhecimentoantecipado.Mudanasincompatveis
nodevemserlevementeintroduzidasparaosoftwarequetemummontedecdigodependente.Ocustoque
deveserincorridoparaatualizarpodesersignificante.Tendoqueaumentaraversomaiorparalanar
mudanasincompatveis,significaquevocpensarnoimpactodassuasmudanas,eavaliararelaode
custo/benefcioenvolvida.

DocumentartodaaAPIpblicadmuitotrabalho!
suaresponsabilidadecomodesenvolvedorprofissionaldocumentarcorretamenteosoftwarequeserusado
poroutros.Gerenciaracomplexidadedesoftwareumapartemuitoimportanteparamanteroprojeto
eficiente,eistodifcildefazerseningumsabecomousloouquemtodossosegurosdechamar.A
longoprazo,VersionamentoSemnticoeainsistnciaemumaAPIpblicabemdefinidapodemdeixartudoe
todosfuncionandosuavemente.

Oqueeufaose,acidentalmente,liberarumamudanaincompatvelcomversesanteriores
comoumaversomenor(minorversion)?
Assimquevocperceberquequebrouaespecificaodeversionamentosemntico,conserteoproblemae
lanceumanovaversomenor,quecorrigeoproblemaerestauraacompatibilidade.Mesmosobesta
circunstncia,inaceitvelmodificarverseslanadas.Seforapropriado,documenteaversoofensivae
informeseususuriosdoproblemadeformaqueelesfiquemcientesdaversoemquesto.

OquedevofazerseeuatualizarminhasprpriasdependnciassemmodificaraAPIpblica?
Issoseriaconsideradocompatvel,umavezquenoafetaaAPIpblica.Softwarequedependeexplicitamente
damesmasdependnciasqueseupacote,devetersuaprpriaespecificaodedependnciaeoautor
notificarquaisquerconflitos.Paradeterminarseamudanaanveldecorreooumodificaodenvel
menordependentesevocatualizousuasdependnciasafimdecorrigirumbugouintroduzirnova
funcionalidade.Eunormalmenteesperariacdigoadicionalparaltimainstncia,casoemqueobviamente
umincrementononvelmenor.

EseeualtereiinadvertidamenteaAPIpblicadeformaincompatvelcomamudanano
nmerodeverso(ex.:ocdigoincorretamenteintroduzumagrandemudanaincompatvel
emliberaodeumpatch)
Useobomsenso.Sevoctemumpblicoenormequeserdrasticamenteimpactadopelamudanade
comportamentodevoltaparaoqueaAPIpblicapretendida,entopodesermelhorrealizarumlanamento
deumaversomaior,mesmoqueacorreopudesseserconsideradaestritamenteumaversode
correo.Lembrese,VersionamentoSemnticotratadetransmitiroconhecimentodasmudanasocorridasna
verso.Seestasmudanassoimportantesparaseususurios,utilizeonmerodaversoparainformlos.

Comodevolidarcomdescontinuaodefuncionalidades?
Descontinuarfuncionalidadesumprocessocomumnodesenvolvimentodesoftwareemuitasvezes
necessrioparahaverprogresso.QuandovocdescontinuapartesdesuaAPIpblica,vocdevefazerduas
coisas:(1)atualizarsuadocumentao,paraqueosusuriossaibamdasmudanas,(2)lanarumaverso
Menoranunciandoadescontinuao.AntesderemovercompletamenteafuncionalidadeemumaversoMaior
devehaveraomenosumaversoMenorquepossuiadescontinuoanunciada,fazendocomqueosusurios
realizemumatransiotranquilaparaanovaAPI.

OSemVertemumlimitedetamanhoparastringdeverso?
No,masuseobomsenso.Umastringdeversocom255caracteresporexemplo,provavelmenteum
exagero.Porm,sistemasespecficospodemdefinirseusprrioslimitesparaotamanhodastring.
http://semver.org/lang/ptBR/

4/5

29/04/2015

VersionamentoSemntico2.0.0

Sobre
AEspecificaodaSemnticadeVersionamentoautoriadeTomPrestonWerner<http://tom.preston
werner.com> ,criadordoGravatarsecofundadordoGitHub.
AtraduodestedocumentoparaPortugusBrasilfoiiniciadadeformacolaborativapelaWendTecnologia
<https://github.com/wendtecnologia> atravsdeWalkerdeAlencarOliveira<https://github.com/walkeralencar> eteve
aparticipaode:
WilliamG.Comnisky<https://github.com/wcomnisky>
RafaelSirotheau<https://github.com/rafasirotheau>
ArthurAlmeida<https://github.com/arthuralmeidap>
AlbertoGuimaresViana<https://github.com/albertogviana>
RafaelLcio<https://github.com/poste9>
JosielRocha
AlessandroLeite
VinciusAssef
SilasRibasMartins<https://github.com/silasrm>
Todacolaboraonatraduopodeseracompanhadanolink:http://pad.okfn.org/p/Fh9hjBPVu9
Casoqueiradeixarsuaopinio,porfavorabraumaissuenoGitHub
<https://github.com/wendtecnologia/semver/issues> .

Licena
CreativeCommonsCCBY3.0<http://creativecommons.org/licenses/by/3.0/>

http://semver.org/lang/ptBR/

5/5

You might also like