Professional Documents
Culture Documents
VersionamentoSemntico2.0.0
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