<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="../part2stratml.xsl"?><StrategicPlan><Name>About Poplus</Name><Description>Organisations all over the world are holding governments to account, challenging corruption, and demanding the right to transparency, and they are using digital technologies to do so.  Why should every organisation have to write their software from scratch? By sharing code, we can make things quicker and easier, freeing up time for the important things.  We call the resulting software Poplus Components. They are open source and are available for anyone to use for free.</Description><OtherInformation>Poplus is just getting started. We have goals to hold more events, build more shared technologies, and to share more stories of success and failure. But the real answer is that we are going where you want us to go. So why not get involved, and help plot our journey?</OtherInformation><StrategicPlanCore><Organization><Name>Poplus</Name><Acronym>PPLS</Acronym><Identifier>_67f4970e-0773-11e6-85a0-8f1bf26a1bf3</Identifier><Description>Poplus is an open federation with members all over the world. Your code and skills can really help make a difference.</Description><Stakeholder><Name/><Description/></Stakeholder></Organization><Vision><Description>Time and expense are saved for people and organisations everywhere.</Description><Identifier>_67f498c6-0773-11e6-85a0-8f1bf26a1bf3</Identifier></Vision><Mission><Description>To create standardised, internationalised, interoperable, open-source Components, to make it easier to build websites that empower citizens, no matter where you are based.</Description><Identifier>_67f49984-0773-11e6-85a0-8f1bf26a1bf3</Identifier></Mission><Value><Name>Collaborative Civic Coding</Name><Description>Poplus' founding principle is that collaborative civic coding can help save time and expense for people and organisations everywhere.</Description></Value><Value><Name>Sharing</Name><Description>And that sharing stories and lessons will help us all to be as effective as possible.</Description></Value><Value><Name>Effectiveness</Name><Description/></Value><Value><Name>Functionality</Name><Description>Civic websites often need the same basic functionalities, no matter what kind of legislature or form of government they operate within. </Description></Value><Value><Name>Re-Use</Name><Description>At Poplus we have been trying to build technologies that can save us all time and money by re-using each others work.</Description></Value><Value><Name>Standardization</Name><Description/></Value><Value><Name>Internationalization</Name><Description/></Value><Value><Name>Interoperability</Name><Description/></Value><Value><Name>Componentization</Name><Description>Definition of a Poplus component --  One of the most important things that happened at PoplusCon was an agreement about what characteristics a piece of code has to have before it can be called a Poplus Component.  This page represents a v.01 spec, as agreed by about twenty people from various organisations who were in the room at the time. If you’d like to debate it or improve it, please join the mailing list and tell us what should be different in the next version.  Seven things that make a Poplus Component -- If your code fits every one of the points below, congratulations! It's a Component and eligible for the Poplus seal of approval:  * My code helps Civic/Democratic websites * It solves a Single Problem * It is Composable with other Poplus Components * It's Platform Agnostic * It's Country Agnostic * It's Free/Open Source software * It has a stable, documented API  What do these mean?</Description></Value><Value><Name>Empowerment</Name><Description>Civic/Democratic --  Components work on websites that empower people in their civic or democratic lives --   Civic or democratic websites include sites that:  * Help ordinary people understand what is happening in their parliaments or governing bodies * Enable citizens to contact the people and organisations that affect their lives * Give people the power to effect changes in their own communities * Highlight corruption and allow people to do something about it * Facilitate transparency and enable the sharing of information * Typically, such sites are non-commercial, non-partisan and open to all.  Your Component may work well on sites that don't fit these guidelines, but it must also work on sites that do.</Description></Value><Value><Name>Focus</Name><Description>Solves a Single Problem --  Each Component does just one thing --  Your Component should solve one problem for people who are running civic or democratic websites. If it does more than one thing, you should split it into different Components.  For example, there are Components which model bills. There are ones which model people, ones for votes, and ones for speeches. There are Components which allow people to contact politicians, others which let them send requests for information.  Each of these Components can work with the others, or independently.  Your Component might solve obvious problems, like storing names and positions of politicians. It should do so thoughtfully, and ideally it should be based on experience: your own experience, or the experiences of those who will use it.  So, it might help with tiny issues that most people would never think about - like that fact that politicians sometimes change their names. Thanks to your Component, people never need to think about it!</Description></Value><Value><Name>Compsability</Name><Description>Composable --  Components work with other Components --   This is one of the key elements of a Component (and it's where the name Component comes from) - it must work with any other Components. Components are like building blocks: you can put them together to create something bigger.  Standalone sites, or platforms for constructing them (e.g. Alaveteli) are very worthy pieces of software, but they are not Components.</Description></Value><Value><Name>Technology Independence</Name><Description>Platform Agnostic --  People should be able to use your Poplus Component on any website, no matter what platform they are using.  Your Component can be written in any programming language or framework - that's because interaction should be over APIs (see below), so the underlying code isn't so important to the person implementing it. Write your Component in whatever language you are most comfortable with.  Ideally, your Component will be offered as a cloud or SAAS version: that makes it really easy for people to use it. At the same time, it should be relatively easy to install, configure and deploy, because many users will eventually want to run their own locally hosted version.  Docker is one simple way of making this easier.</Description></Value><Value><Name>International Independence</Name><Description>Country Agnostic --  Components work everywhere --   Poplus was created so that organisations everywhere could share and collaborate on code. We exist so that people don't have to keep 'reinventing the wheel', or writing new code when they could use code that already exists.  So, as much as possible, it should be possible to deploy your Component anywhere in the world. That means making the minimum number of assumptions about political models and structures; it means that the interface and data should work in other languages (think Arabic and Russian, not just English and Spanish) and preferably in multiple languages simultaneously.  We recognise that it isn't easy to model every system in the world out of the box. If you can't manage all the above, strive for this: it should be simpler to adapt the Component for an entirely different country than to start again from scratch.  In many cases it will be worthwhile to work with groups in other countries on a suitable data standard before ever starting to code. The Poplus community can help you make those links.</Description></Value><Value><Name>Open Source</Name><Description>Free/Open Source --  Your Component should embrace the spirit of Open Source --   When we talk about Open Source, we don't just mean that your Component should bear an Open Source licence (although, that part is essential).  Developing a Component means being open in every way. So your code should be on GitHub or an equivalent open source repository, with a public issue tracker that anyone can contribute to.  You should commit to maintaining your Component responsibly and responsively, and if you find that you are no longer able to do this, you should be prepared to hand it over to someone who can.</Description></Value><Value><Name>Stability</Name><Description>Stable, documented --  API users should be able to rely on Components --   So that Components can work together, all functionality should be exposed over APIs. These APIs should be very-well documented, so that anyone can use them, and so that future contributors can work on them.  We recommend a REST-like HTTP API. If you don't know what that means, your developers should (or give us a shout on our mailing list).  As other sites and Components will be relying on this, it is essential that the API is stable. New endpoints can be added, but existing ones should not disappear, or change meaning, without a version change, or going through a suitable deprecation cycle.</Description></Value><Value><Name>Documentation</Name><Description/></Value><Goal><Name>Poplus Components</Name><Description>Make available open source civics software code for anyone to use for free.</Description><Identifier>_67f49a2e-0773-11e6-85a0-8f1bf26a1bf3</Identifier><SequenceIndicator/><Stakeholder StakeholderTypeType="Organization"><Name>South Africa</Name><Description>Using Poplus Components, mixed with your own code, it becomes much less time consuming to build and then maintain a variety of apps and sites. For example, this Parliamentary Monitoring site in South Africa uses two Poplus Components - SayIt and MapIt.</Description></Stakeholder><OtherInformation>Poplus Components are independent pieces of software developed to solve a range of common problems encountered when building civic and democratic websites. These common problems include tasks like:</OtherInformation><Objective><Name>Cuttlefish</Name><Description>Set up transactional email servers.</Description><Identifier>_67f49b28-0773-11e6-85a0-8f1bf26a1bf3</Identifier><SequenceIndicator>1</SequenceIndicator><Stakeholder StakeholderTypeType="Generic_Group"><Name/><Description/></Stakeholder><OtherInformation>A lovely, easy-to-set-up transactional email server. Sending email can be painful. Do your emails get delivered? Are you considered a spammer? What about all those bounces? Let's make sending email fun again!</OtherInformation></Objective><Objective><Name>Represent Boundaries</Name><Description>Find the areas that cover your users' locations.</Description><Identifier>_67f49bf0-0773-11e6-85a0-8f1bf26a1bf3</Identifier><SequenceIndicator>2</SequenceIndicator><Stakeholder StakeholderTypeType="Generic_Group"><Name/><Description/></Stakeholder><OtherInformation>A web API to geographic areas, like electoral districts. Easily find the areas that cover your users' locations to display location-based information, like profiles of electoral candidates.</OtherInformation></Objective><Objective><Name>SayIt</Name><Description>Store and retrieve written transcripts and written statements.</Description><Identifier>_67f49cb8-0773-11e6-85a0-8f1bf26a1bf3</Identifier><SequenceIndicator>3</SequenceIndicator><Stakeholder StakeholderTypeType="Generic_Group"><Name>Politicians</Name><Description/></Stakeholder><Stakeholder StakeholderTypeType="Generic_Group"><Name>Public Figures</Name><Description/></Stakeholder><OtherInformation>A web service which makes it easy to store and retrieve written transcripts and written statements made by politicians and other public figures.</OtherInformation></Objective><Objective><Name>MapIt</Name><Description>Discover administrative areas covering particular points.</Description><Identifier>_67f49d8a-0773-11e6-85a0-8f1bf26a1bf3</Identifier><SequenceIndicator>4</SequenceIndicator><Stakeholder StakeholderTypeType="Generic_Group"><Name/><Description/></Stakeholder><OtherInformation>A web service which makes it easy to find out which administrative area (i.e county, city, region) covers a particular point. Mature and stable.</OtherInformation></Objective><Objective><Name>WriteIt</Name><Description>Deliver messages to public persons.</Description><Identifier>_67f49e5c-0773-11e6-85a0-8f1bf26a1bf3</Identifier><SequenceIndicator>5</SequenceIndicator><Stakeholder StakeholderTypeType="Generic_Group"><Name>Public Persons</Name><Description/></Stakeholder><OtherInformation>Public person messaging tool. Avoid the hassle of mail servers, creating special gmail accounts for your website. If you want your user to send messages you're in the right place. Just write it, we deliver it...</OtherInformation></Objective><Objective><Name>BillIt</Name><Description>Manage documents.</Description><Identifier>_67f49f2e-0773-11e6-85a0-8f1bf26a1bf3</Identifier><SequenceIndicator>6</SequenceIndicator><Stakeholder StakeholderTypeType="Generic_Group"><Name/><Description/></Stakeholder><OtherInformation>Flexible Document storage tool. Bills, contracts, papers it doesn't matter Billit will keep them tidy, labeled, accesible, findable. Conceived as a bill tracker, born as a document manager.</OtherInformation></Objective></Goal></StrategicPlanCore><AdministrativeInformation><PublicationDate>2016-04-20</PublicationDate><Source>http://poplus.org/</Source><Submitter><GivenName>Owen</GivenName><Surname>Ambur</Surname><PhoneNumber/><EmailAddress>Owen.Ambur@verizon.net</EmailAddress></Submitter></AdministrativeInformation></StrategicPlan>
