<!DOCTYPE html><htmllang="en"><head><metacharSet="utf-8"/><metahttp-equiv="X-UA-Compatible"content="IE=edge"/><title>Development · Pluto</title><metaname="viewport"content="width=device-width"/><metaname="generator"content="Docusaurus"/><metaname="description"content="Development is split in feature driven milestones. Each milestone's goal is to ship an identified set of features in a short (few weeks) time."/><metaname="docsearch:language"content="en"/><metaproperty="og:title"content="Development · Pluto"/><metaproperty="og:type"content="website"/><metaproperty="og:url"content="https://status-im.github.io/pluto/index.html"/><metaproperty="og:description"content="Development is split in feature driven milestones. Each milestone's goal is to ship an identified set of features in a short (few weeks) time."/><metaname="twitter:card"content="summary"/><linkrel="shortcut icon"href="/pluto/img/favicon.png"/><linkrel="stylesheet"href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/default.min.css"/><scripttype="text/javascript"src="https://buttons.github.io/buttons.js"></script><scripttype="text/javascript"src="/pluto/js/pluto.js"></script><linkrel="stylesheet"href="/pluto/css/prism.css"/><linkrel="stylesheet"href="/pluto/css/main.css"/></head><bodyclass="sideNavVisible separateOnPageNav"><divclass="fixedHeaderContainer"><divclass="headerWrapper wrapper"><header><ahref="/pluto/"><imgclass="logo"src="/pluto/img/logo_white.png"alt="Pluto"/><h2class="headerTitleWithLogo">Pluto</h2></a><divclass="navigationWrapper navigationSlider"><navclass="slidingNav"><ulclass="nav-site nav-site-internal"><liclass="siteNavGroupActive"><ahref="/pluto/docs/Manifesto.html"target="_self">Docs</a></li><liclass=""><ahref="/pluto/examples.html"target="_self">Examples</a></li><liclass=""><ahref="/pluto/try.html"target="_self">Try</a></li></ul></nav></div></header></div></div><divclass="navPusher"><divclass="docMainWrapper wrapper"><divclass="container docsNavContainer"id="docsNav"><navclass="toc"><divclass="toggleNav"><sectionclass="navWrapper wrapper"><divclass="navBreadcrumb wrapper"><divclass="navToggle"id="navToggler"><i></i></div><h2><i>›</i><span>Contributing</span></h2><divclass="tocToggler"id="tocToggler"><iclass="icon-toc"></i></div></div><divclass="navGroups"><divclass="navGroup"><h3class="navGroupCategoryTitle">Getting Started</h3><ul><liclass="navListItem"><aclass="navItem"href="/pluto/docs/Manifesto.html">Manifesto</a></li><liclass="navListItem"><aclass="navItem"href="/pluto/docs/Principles.html">Principles</a></li></ul></div><divclass="navGroup"><h3class="navGroupCategoryTitle">Concepts</h3><ul><liclass="navListItem"><aclass="navItem"href="/pluto/docs/concepts/Anatomy.html">Anatomy of an extension</a></li><liclass="navListItem"><aclass="navItem"href="/pluto/docs/concepts/Hook.html">Hook</a></li><liclass="navListItem"><aclass="navItem"href="/pluto/docs/concepts/View.html">View</a></li><liclass="navListItem"><aclass="navItem"href="/pluto/docs/concepts/Query.html">Query</a></li><liclass="navListItem"><aclass="navItem"href="/pluto/docs/concepts/Event.html">Event</a></li><liclass="navListItem"><aclass="navItem"href="/pluto/docs/concepts/Registry.html">Registry</a></li></ul></div><divclass="navGroup"><h3class="navGroupCategoryTitle">Build</h3><ul><liclass="navListItem"><aclass="navItem"href="/pluto/docs/build/Packaging.html">Packaging</a></li><liclass="navListItem"><aclass="navItem"href="/pluto/docs/build/Deployment.html">Deployment</a></li><liclass="navListItem"><aclass="navItem"href="/pluto/docs/build/FirstExtension.html">My first extension</a></li></ul></div><divclass="navGroup"><h3class="navGroupCategoryTitle">Contributing</h3><ul><liclass="navListItem navListItemActive"><aclass="navItem"href="/pluto/docs/Development.html">Development</a></li><liclass="navListItem"><aclass="navItem"href="/pluto/docs/Roadmap.html">Roadmap</a></li></ul></div></div></section></div><script>
</script></nav></div><divclass="container mainContainer docMainContainer"><divclass="wrapper"><divclass="post"><headerclass="postHeader"><h1class="postHeaderTitle">Development</h1></header><article><div><span><p>Development is split in feature driven milestones. Each milestone's goal is to ship an identified set of features in a short (few weeks) time.</p>
<p>High level scope of a milestone is agreed on by the whole team. Developers then create a set of atomic and detailed github issues. Based on those an estimated delivery date is defined.
Reasonable efforts are made to not modify the scope of a milestone once started.</p>
<p>Issues are closed regularly to get good sense of progress.
If finished early, development proceed to next milestone.</p>
<p>Once an issue assigned, a developer work on implementing and once ready pushes a PR. It's then its responsibility to make sure this PR gets merged quick. PRs are the only way to introduce new code in the codebase.
A <ahref="https://paulhammant.com/2013/04/05/what-is-trunk-based-development/">trunk based development</a> model is followed. A PR is reviewed with great care: ultimate goal is zero regression and master is considered production quality.</p>