Pallet Multiuser Configuration


The last time we talked about Pallet we described using a pallet.clj file in concert with Leiningen to bring up remote servers, configure web applications, and deploy new version of web applications. We glossed over the details required for sharing deploys amongst a group of developers, i.e. allowing multiple developers to deploy to the same web server. These details were obviously prerequisites for a workable infrastructure system. Accordingly, below we describe how we are currently handling multi-user deploys and how we would prefer to handle them.

Current approach to multi-user deploys

There are two main changes we made to accommodate multi-user deploys:

  1. Set a specific admin user when creating the server and starting the web app process
  2. Ensure deploys are performed as this user

To handle the first, pallet.crate.automated-admin-user provides the automated-admin-user function, which is passed to a plan-fn in the bootstrap phase and takes a username argument. Similarly the app-deploy/server-spec takes a {:user "[username]"} key-value pair to set the user which will run the web application.

To handle the second requirement, deploying to the server as a specific user, there are a number of options. The sub-optimal route we have chosen for now is to use the global .pallet/config.clj file to set the pallet admin username and the paths to ssh keys. We also played around with a script to su into an account named after the admin user and deploy as that user. The benefit of this is that a developer does not rely on any files outside of the repo. However we think this benefit is outweighed by the detriment of having an unnecessary user on the developer’s system and the potential security vulnerabilities.

Preferred approach to multi-user deploys

Ideally, we would like a way to make a change to our pallet.clj script that sets the admin user used in deploys. We tried binding the *admin-user* dynamic var, and passing the :user key to various operations, but to no avail. If any Pallet users, like real-life users, have insight into configuring the admin user, please let us know!

Introducing the Ona Community mailing list


While our chefs are working hard away on the upcoming version of Ona, we wanted to introduce a new resource for our growing community of users: the Ona Community mailing list. All are welcome!

Already, we’re seeing Ona being used in a number of creative ways to make a difference. We hope this community becomes a place where you can share your experiences, recipes for success!, and learn from others. We also greatly value your input. Hearing first hand what is working and what isn’t - provides invaluable feedback to our team of designers and engineers working hard to bring you a world class service.

We will still maintain the email service for urgent support issues, but we might share the support request on the mailing list if we feel it would be useful for other users. If you’re interested in having access to dedicated support for your project, please email for more information on our paid plans.

Upcoming: The Next Ona


The Next Ona graphic

The primary focus of our product team over the past few months has been working to overhaul the Ona platform. While the existing data collection tool is useful, we’re improving it on three fronts:

  • Revamping the user interface with a new design language
  • Adding new functionality to support user management, organization accounts, and improved access and permissions controls
  • Bolstering the code to be more stable and secure so that we can guarantee uptime and reliability and improve performance

Our plan is to release a revamped version of Ona by August in January 2015. Sign up for our mailing list below to receive notifications of new Ona releases.

Our Stories From Libya


View of the Mediterranean Sea from Tripoli

On February 20th 2014, Libya elected an assembly to draft a constitution intended to advance the country’s transition to democracy and break a political stalemate more than two years after an uprising toppled Muammar Gaddafi. Ona worked with the Libyan High National Election Commission and the United Nations Development Program to build a data infrastructure platform which ensured that each vote was counted accurately and securely. Tally-Ho, an open-source system was built in just 4 weeks and used to tally hundreds of thousands of votes from in-country polling stations and overseas voting stations around the world.

For the sixteen days our team members were in Libya, they were mostly head down, buried in their laptops. It was imperative that no time was wasted because Libya was ready to vote after two years of political stalemate. They were ready to vote with the platform we were building. The work was exciting. The intense work load was expected. What was not expected were the experiences that Libya would offer.

 Continue reading Our Stories From Libya...

Tally-Ho: Robust Open-Source Election Software


Tally-Ho main graphic
Forms from the field were received at the In Take Section

Early in 2014, the Libyan government held a national election to select 60 representatives tasked with drafting a foundational constitution for the country. This was an enormous effort for a shaky new democracy in a country twice the size of Texas, 90% of which is sparsely populated desert with limited resources and power. To overcome these obstacles, Ona worked with the United Nations Development Program (UNDP) and the Libyan High National Election Commission (HNEC) on a voting process involving paper votes that were digitized and aggregated during the tallying.

With input from UNDP and HNEC, Ona designed and built Tally-Ho, a robust, open-source tallying application used for supporting accurate, secure and timely elections. The application was successfully used to enter thousands of results from polling stations around the country and around the world, aggregating results and producing final counts in just 7 days.

 Continue reading Tally-Ho: Robust Open-Source Election Software...