First impressions of an outsider free software developer

35 views
Skip to first unread message

Raphael Hertzog

unread,
Feb 10, 2015, 9:51:30 AM2/10/15
to agora-...@googlegroups.com
Hello everybody,

I'm a free software developer (long time Debian developer) and I recently
discovered Agora Voting while looking for a good "open source" voting
software. And by good I mean something that is really developed following
the rules of free software (transparently, welcoming external help,
easy to get started, etc.) and that supports "ranking based votes".

For the context, we use condorcet based voting in Debian for our official
votes (and we need something better in the spirit of liquid democrary),
and I'm also a member of a French party (http://www.nouvelledonne.fr)
where we need tools to put into practice the principles of
"direct democracy" that we endorse.

So I was really excited to find out about agora-ciudadana. But after a quick
discussion on IRC, I discovered that this has been discontinued in favor
of a rewrite for a v3. I also learnt that the project is now backed by
a new company.

This is a nice next step in the growth of your project but I have the
feeling that while you are heads down working on the rewrite, you're
forgetting what can make your project a successful free software project.

I have thus a simple question. Are you interested in building an
international developer/contributor community around your project ?

If yes, then let me share my point of view on things that are actually
causing me griefs with agora voting. Don't take those badly, I express
them in the hope that you will fix some of them for the benefit of
everybody (your company included). I don't list things that are fine
(like usage of public git, mailing list, public presence at FOSDEM,
etc.) but just what worries me.

I list first what I consider the most important:

- the public presentation on https://agoravoting.com/ is too sparse:
1/ you should give some details on what "algorithms" you implement
with appropriate references since you mention that the solutions have
been published by "voting process experts" and "academics"
(even just links to articles you published on your blog would be
great!)
2/ there's no link to the github repositories, there's no "get involved"
or "community" pages
3/ there's no list of the features, there's no high level overview of
the different components
4/ even the link to your blog is missing

- an English-only developer/contributor mailing list is needed, where
real development happens, right now code gets committed but I don't see
any public discussion/coordination

- the rewrite worries me in the sense that I have the feeling that it's
now harder to contribute than it was before. Lacking any public data
about the need for the rewrite, I have the feeling that this rewrite
will be a regression because:
1/ from one main language (Python) and one main framework (Django), we go
to at least 3 languages which are radically different (in particular
Scala)
2/ there will be regressions in terms of features (apparently STV-Meeks is
gone in favor of Borda)
3/ even with ansible rules, it's much more complicated to deploy when
you have to use tools from 3 different worlds (javascript, python,
java/scala)
4/ modularity is nice to have, but you can have it in a single project
with clean interfaces, with plugin mechanisms and with all default
plugins written in the same language.

- a public roadmap would be nice, so that we can see what's already done,
what's planned but still missing, etc.

FWIW if you were still using a single codebase that can be deployed in a
single machine without needing any sort of virtualization, I would have
already deployed it on my machine to try it out. Right now I must yet
motivate myself to make the effort to follow your installation rules in
agora-dev-box.

Thank you for having listened to me.

Regards,
--
Raphaël Hertzog ◈ Writer/Consultant ◈ Debian Developer

Discover the Debian Administrator's Handbook:
http://debian-handbook.info/get/

Daniel Garcia

unread,
Feb 10, 2015, 2:34:10 PM2/10/15
to agora-...@googlegroups.com
Hi,

On Tue, Feb 10, 2015 at 03:51:23PM +0100, Raphael Hertzog wrote:
> Hello everybody,
>
[...]
>
> I have thus a simple question. Are you interested in building an
> international developer/contributor community around your project ?

Yes, we're interested.

> If yes, then let me share my point of view on things that are actually
> causing me griefs with agora voting. Don't take those badly, I express
> them in the hope that you will fix some of them for the benefit of
> everybody (your company included). I don't list things that are fine
> (like usage of public git, mailing list, public presence at FOSDEM,
> etc.) but just what worries me.
>
> I list first what I consider the most important:
>
> - the public presentation on https://agoravoting.com/ is too sparse:
> 1/ you should give some details on what "algorithms" you implement
> with appropriate references since you mention that the solutions have
> been published by "voting process experts" and "academics"
> (even just links to articles you published on your blog would be
> great!)
> 2/ there's no link to the github repositories, there's no "get involved"
> or "community" pages
> 3/ there's no list of the features, there's no high level overview of
> the different components
> 4/ even the link to your blog is missing

That's the company page but there's a community page (that should be linked
by the first one) http://agoravoting.org/ . But the community page is a bit
outdated now, we're a few people and there's a lot of thigs to do. But
you're right, this is a really important part.

We're working to get an stable release, I'm sure that when we get the
stable version we will work hard in the doc and web pages to make it easy
to use and contribute, but now all of us are focused on hard functionality.

> - an English-only developer/contributor mailing list is needed, where
> real development happens, right now code gets committed but I don't see
> any public discussion/coordination

As we're few people, we talk in the irc or internally, and much (almost
all) of the development is done by the AgoraVoting company so the
comunication and what to do is discused internally.

I think we should change this and make our discussions public, use the
mailinig list, we should make the roadmap public and try to take every
project decision a public discusion or proposal.

> - the rewrite worries me in the sense that I have the feeling that it's
> now harder to contribute than it was before. Lacking any public data
> about the need for the rewrite, I have the feeling that this rewrite
> will be a regression because:
> 1/ from one main language (Python) and one main framework (Django), we go
> to at least 3 languages which are radically different (in particular
> Scala)
> 2/ there will be regressions in terms of features (apparently STV-Meeks is
> gone in favor of Borda)
> 3/ even with ansible rules, it's much more complicated to deploy when
> you have to use tools from 3 different worlds (javascript, python,
> java/scala)
> 4/ modularity is nice to have, but you can have it in a single project
> with clean interfaces, with plugin mechanisms and with all default
> plugins written in the same language.

We decided to change from a "single" application to a multiple apps talking
to each other using http+json to be more flexible. So now we can replace
each part of the project by an external tool. Instead of an app doing
everything we tried to get smallers apps doing only one thing.

An small overview:

* authapi: The authentication part, written in python3+django. The authapi
doesn't know nothing about elections, we tried to get it independent.
Here we manage users, AuthEvents and user permissions.
* agora_elections: The ballot box, written in scala. This project only
registers elections and votes in this elections. And makes calls to the
authorities to make the encryption part, election creation and tally.
* agora-core-view: The web interface. javascript with angularjs. This is
the web interface to connect authapi and agora_elections. This interface
is complete static and client side.
* election-orchestra: Authorities should have this software installed to
synchronize and work together and this is needed to keep the secret of
the vote.

Currently we need to deploy all with virtual machines because to keep the
security we need at least two authorities and authorities should be
installed in different servers. This is an inherent problem of the security
process we're following to keep the vote secrecy.

In agora-ciudadana votes were stored in the database so votes were not
really secret.

> - a public roadmap would be nice, so that we can see what's already done,
> what's planned but still missing, etc.

Yes, we should do that. I'll try to update the community page to get it
updated and to public the roadmap.

Regards.

--
Daniel Garcia Moreno
It's not magic, it's wadobo!
http://wadobo.com

Raphael Hertzog

unread,
Feb 10, 2015, 7:42:25 PM2/10/15
to agora-...@googlegroups.com
Hi,

Le mardi 10 février 2015, Daniel Garcia a écrit :
> That's the company page but there's a community page (that should be linked
> by the first one) http://agoravoting.org/ . But the community page is a bit
> outdated now, we're a few people and there's a lot of thigs to do. But
> you're right, this is a really important part.

Ah nice! I tried to access that website to verify if there was something
and it didn't work for me. You fixed it recently, right?

> We're working to get an stable release, I'm sure that when we get the
> stable version we will work hard in the doc and web pages to make it easy
> to use and contribute, but now all of us are focused on hard functionality.

Great, I'm looking forward to it!

> As we're few people, we talk in the irc or internally, and much (almost
> all) of the development is done by the AgoraVoting company so the
> comunication and what to do is discused internally.
>
> I think we should change this and make our discussions public, use the
> mailinig list, we should make the roadmap public and try to take every
> project decision a public discusion or proposal.

Yes, that would be nice. I know it's an hurdle when you all work in the
same office but it's important if you want to build a vibrant community.

> We decided to change from a "single" application to a multiple apps talking
> to each other using http+json to be more flexible. So now we can replace
> each part of the project by an external tool. Instead of an app doing
> everything we tried to get smallers apps doing only one thing.

I understand this, but what where the concrete problems you faced where
the former implementation was not modular enough? I hope you are not doing
for hypothetical problems but for real cases that you encountered. :)

> Currently we need to deploy all with virtual machines because to keep the
> security we need at least two authorities and authorities should be
> installed in different servers. This is an inherent problem of the security
> process we're following to keep the vote secrecy.

Talking of modularity, not everybody needs secret votes with that level of
secrecy. There are many organizations where having votes stored in the
database is acceptable.

I guess that in your new scheme we would need to implement an alternative
"agora_elections" that would work without the authorities and that would
store the ballots locally, right?

If we can get such an alternative implementation in Python/Django, I'll be
happy because we're back to having a lightweight solution that would be
enough for many organizations.

> Yes, we should do that. I'll try to update the community page to get it
> updated and to public the roadmap.

Thanks!

Cheers,

Janusz Lewandowski

unread,
Feb 11, 2015, 10:22:23 AM2/11/15
to agora-...@googlegroups.com
Hi,

+1 for Raphael.

I'm considering adopting the Agora Voting in Polish Direct Democracy party (http://db.org.pl/).
If we decide to do so, we will of course contribute back our improvements.

We've explicitely decided that all our online voting will be public, so we don't need secret votes,
only public ones.

Is v3 going to be similar to v2 (as in - the whole system, with groups support, comments etc),
or only a voting system, like the thing Podemos is currently using for voting?

Cheers,
Janusz Lewandowski

Eduardo Robles Elvira

unread,
Feb 11, 2015, 11:21:44 AM2/11/15
to agora-...@googlegroups.com
Hello people:

v3 is not going to have comments or groups: Agora Voting is now
centered only in one thing: secure evoting. It's going to be flexible
and powerful, but only centered in that arena. Unix philosophy: do
only one thing, but do it right.

Not all hope is completely lost for you, though. Agora Voting is very
modular, so you might still develop your own tools using and
contributing to some of our modules, maybe. Depends on your use-case I
guess.

Regards,
--
Eduardo Robles Elvira @edulix skype: edulix2
http://agoravoting.org @agoravoting +34 634 571 634
> --
> You received this message because you are subscribed to the Google Groups
> "Ágora Voting" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to agora-voting...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.

Raphael Hertzog

unread,
Feb 11, 2015, 12:05:49 PM2/11/15
to agora-...@googlegroups.com
Le mercredi 11 février 2015, Eduardo Robles Elvira a écrit :
> v3 is not going to have comments or groups: Agora Voting is now
> centered only in one thing: secure evoting. It's going to be flexible
> and powerful, but only centered in that arena. Unix philosophy: do
> only one thing, but do it right.

Will users of the web interface be able to create "votes"?

What is configurable for a vote?

> Not all hope is completely lost for you, though. Agora Voting is very
> modular, so you might still develop your own tools using and
> contributing to some of our modules, maybe. Depends on your use-case I
> guess.

Well, my use cases are relatively easy:

- I want party admins to be able to setup secure secret votes for internal
elections, etc.

- I want various teams within the party to be able to setup public
votes to gather the opinion of the members at large (or even of
the general public)

- I want various "groups" within the party to be able to setup internal
votes (i.e. restricted to the members who are part of the team).

In each case, I would like those setting up the votes to be able to define
a few parameters:
- is the vote secret (ensured with encryption), private (no encryption)
or public?
- is delegated voting authorized or not?
- who can vote?

Xavi Arias Seguí

unread,
Feb 11, 2015, 12:06:06 PM2/11/15
to agora-...@googlegroups.com, edu...@agoravoting.com
Hi guys,

Since months ago I've tried to get involved, not as a developer but as a user taking advantage of the Rest API, and all I got is frustration. I was tried to invest time progressively, according to how supporting the community was.

During this time, I've found a couple of (very little) bugs even though I'm not a Python programmer but Java developer. When trying to communicate them by IRC and email, most of the time I felt like annoying, and despite the bugs were corrected (thanks to danigm) I didn't get any response, not even a simple "thanks for getting interested". Actually, in one reported issue I got a response kind of saying "it must be your problem, not ours".

The feeling I got is that no one in this project, especially Eduardo who acts like "I'm the boss here", wants people to get involved internationally as a FS project, with the pretext that "we are so busy and we don't have the time to explain". So it's kind of sad, specially when the people involved are highly qualified and doing a great job IMHO.

Now you got this response saying an important change in the direction of the project, but this isn't reported anywhere, no discussion, no roadmap, ... allright, it's your project and you want to keep it, good luck with it.

Cheers

Eduardo Robles Elvira

unread,
Feb 11, 2015, 12:30:41 PM2/11/15
to agora-...@googlegroups.com
On Wed, Feb 11, 2015 at 6:06 PM, Xavi Arias Seguí
<xavi.ari...@gmail.com> wrote:
> Hi guys,
>
> Since months ago I've tried to get involved, not as a developer but as a
> user taking advantage of the Rest API, and all I got is frustration. I was
> tried to invest time progressively, according to how supporting the
> community was.
>
> During this time, I've found a couple of (very little) bugs even though I'm
> not a Python programmer but Java developer. When trying to communicate them
> by IRC and email, most of the time I felt like annoying, and despite the
> bugs were corrected (thanks to danigm) I didn't get any response, not even a
> simple "thanks for getting interested". Actually, in one reported issue I
> got a response kind of saying "it must be your problem, not ours".
>
> The feeling I got is that no one in this project, especially Eduardo who
> acts like "I'm the boss here", wants people to get involved internationally
> as a FS project, with the pretext that "we are so busy and we don't have the
> time to explain". So it's kind of sad, specially when the people involved
> are highly qualified and doing a great job IMHO.
>
> Now you got this response saying an important change in the direction of the
> project, but this isn't reported anywhere, no discussion, no roadmap, ...
> allright, it's your project and you want to keep it, good luck with it.
>
> Cheers

Hello Xavi:

I'm sorry you feel that way. You reported some bugs, and those bugs
got fixed. Some others issues, you should have tried to persist if you
thought we were not right in our assessment.

Communication have been lacking, but that's not because we wanted it
to be that way. We have few people, few resources. We have been
working our ass like crazy since last summer. This doesn't mean that
we have done any communication: we have done some hackathons, we went
to FOSDEM and EVOTE2014, we have written posts in the blog about these
and other topics. We have really tried to do what we could
communication-wise in the time we had. We are always connected to the
IRC and we answer when we can, here and there. BTW, thanks you all for
raising these issues, we will try to improve based on your feedback as
a whole (and hopefully we can keep the conversation productive =)
Communication, documentation and community is getting to have a big
push now that we have more people/resources and now that we are soon
releasing v3.

Regarding the decision of focusing on secure evoting: the decision was
made by the core developers, even though it might have not been
communicated correctly. We plan to add support for plugins, and the
API is there for anyone to use. Most importantly, if you want, you can
actually continue supporting v2 yourself. We just dont have the time
or will for that.

Raphael Hertzog

unread,
Feb 12, 2015, 10:04:25 AM2/12/15
to agora-...@googlegroups.com
Hi,

Le mercredi 11 février 2015, Eduardo Robles Elvira a écrit :
> Regarding the decision of focusing on secure evoting: the decision was
> made by the core developers, even though it might have not been
> communicated correctly. We plan to add support for plugins, and the
> API is there for anyone to use. Most importantly, if you want, you can
> actually continue supporting v2 yourself. We just dont have the time
> or will for that.

Can you respond to my other mail and tell me whether it's possible
to implement the features for my use cases by building stuff
around agoravoting v3?

If not, are you open to extending the API of agoravoting v3 to make it
possible?

Eduardo Robles Elvira

unread,
Feb 12, 2015, 10:20:37 AM2/12/15
to agora-...@googlegroups.com
Hello Raphael:

> Can you respond to my other mail and tell me whether it's possible
> to implement the features for my use cases by building stuff
> around agoravoting v3?
>
> If not, are you open to extending the API of agoravoting v3 to make it
> possible?

Yes, sorry I forgot about that email =) Let's try to answer:

On Wed, Feb 11, 2015 at 6:05 PM, Raphael Hertzog <rap...@ouaza.com> wrote:
> Le mercredi 11 février 2015, Eduardo Robles Elvira a écrit :
>> v3 is not going to have comments or groups: Agora Voting is now
>> centered only in one thing: secure evoting. It's going to be flexible
>> and powerful, but only centered in that arena. Unix philosophy: do
>> only one thing, but do it right.
>
> Will users of the web interface be able to create "votes"?

If by votes you mean elections, yes, of course =)

> What is configurable for a vote?

A lot of things: open/closed census, authentication method,
title/description, election layout. Then, for each question: title,
description, options, if options appear in random order, tally method
(we support plurality and borda 1/n right now, VUT is coming at the
end of the month and patches welcome), question layout, max and min
number of options selectable in the ballot, number of winners..

>> Not all hope is completely lost for you, though. Agora Voting is very
>> modular, so you might still develop your own tools using and
>> contributing to some of our modules, maybe. Depends on your use-case I
>> guess.
>
> Well, my use cases are relatively easy:
>
> - I want party admins to be able to setup secure secret votes for internal
> elections, etc.
>
> - I want various teams within the party to be able to setup public
> votes to gather the opinion of the members at large (or even of
> the general public)
>
> - I want various "groups" within the party to be able to setup internal
> votes (i.e. restricted to the members who are part of the team).

all this use cases in general are supported

> In each case, I would like those setting up the votes to be able to define
> a few parameters:
> - is delegated voting authorized or not?
vote delegation will not be implemented in v3.0. However, a plugin
system for optional features like this could be added after v3 is
released. Of course, it would need help from you, as we don't
currently have resources for that. And I really mean it when I say
*currently*. We have already thought about implementing
vote-delegation this way and there are some other people that might
want it and even some client of us might be interested in the near
future.

> - is the vote secret (ensured with encryption), private (no encryption)
> or public?
In v3 we have decided to go for secure secret votes. I know not
everyone will be happy with it, but we had to focus - there is simply
too many things we had to do. I'd like to be able to say that support
for private/public elections could simply be implemented as a plugin,
but I currently think that's too big to do it like that. If there's
anyone willing to explore that possibility and do the work, go for it,
but I think it'd be wise to first start with something else, like
delegated voting for example.

> - who can vote?
Yes, this is specified in the census method.

> Cheers,
> --
> Raphaël Hertzog ◈ Writer/Consultant ◈ Debian Developer
>
> Discover the Debian Administrator's Handbook:
> → http://debian-handbook.info/get/
>

Dario Castañé

unread,
Feb 16, 2015, 10:56:18 AM2/16/15
to agora-...@googlegroups.com, Eduardo Robles Elvira
El 12/02/2015 a las 16:20, Eduardo Robles Elvira escribió:
>> Can you respond to my other mail and tell me whether it's possible
>> to implement the features for my use cases by building stuff
>> around agoravoting v3?
>>
>> If not, are you open to extending the API of agoravoting v3 to make it
>> possible?
> On Wed, Feb 11, 2015 at 6:05 PM, Raphael Hertzog <rap...@ouaza.com> wrote:
>> Le mercredi 11 février 2015, Eduardo Robles Elvira a écrit :
>>> v3 is not going to have comments or groups: Agora Voting is now
>>> centered only in one thing: secure evoting. It's going to be flexible
>>> and powerful, but only centered in that arena. Unix philosophy: do
>>> only one thing, but do it right.
>> Will users of the web interface be able to create "votes"?
> If by votes you mean elections, yes, of course =)
>
Hi everybody,

I just want to inform you that I'm working in a web frontend for Agora
(v2): https://github.com/pirata-cat/mieli

I need to create this in order to satisfy two key requirements:

- Serve multiple organizations in one installation, with custom theme
for each of them.
- Create a modular platform to build grassroots apps in a simple way.

It will be v3 compatible when Agora is stable (although I guess you
didn't break too much the API ;)

Regards,
Dario Castañé
Reply all
Reply to author
Forward
0 new messages