Okra - Managing Objectives and Key Results

UPDATE 08/06

See post #11.



Hi Mozillians :) , my mentor Michael and I were discussing about a possible new tool to help managing Objectives and Key Results within the community ; right I mean [OKR](https://en.wikipedia.org/wiki/OKR).

Reps has a remo portal where we can list our actions and helps mentors and others monitoring what’s going on. Most of the time we are all aware about main projects but sometimes it’s hard to know what is going within specific regional communities. And the remo portal sometimes doesn’t help to know what are individual objectives for the next few months or how you succeed to fulfil them.

So yesterday, I spent very few hours to design a basic structure of a managing tool called “Okra”, here is the git repo. The aim of Okra (to quote myself) is “to help people managing their own time with more efficiency connecting with each other, still freely.” Indeed there is a bunch of OKR managing tools but they are not free and sometimes too much complicated for our simple need.

Okra Concept

Okra concept is to offer a “Galaxy Map” where people could see their interactions within a team or community as such as a Solar System. By clicking on a system or an individual, we get a profile with her/his defined OKR. It’s the “fancy part”.

http://okra.popzelife.me/media/galaxy-map.png

But the most important feature for sure is how to manage OKR. Objectives are divided into Quarters that all represent a year, within these quarters there are timelines. Timelines do not really divide the Quarter into equal time or either are linear. Actually they represent a main objective like “something awesome to do” (hey it’s how OKR works). And theses objectives are defined by Keys: more specific objectives or actions. It means within a Quarter you can add as many “Timelines” and “Keys” as you want or need. You can only have one timeline and many keys, or many timelines and one key within.

So to monitor how your Objectives are fulfil within Keys, I want to implement a feature where you add tasks to tick or how many time you need it to be done, eg: “56 / 80 translation made during three months”. Keys and Timelines need to be public but tasks within are privates to others. OKR only needs to be a general overview of someone goal within a community.

http://okra.popzelife.me/media/mockup-okr.png

And at the end of the Quarter by checking how many tasks you’ve done out of the number you entered at the beginning of the Quarter, it gives you a score. Imagine that you have 3 keys, you succeeded the Key 1 by 80% (it’s more than 65% you got a green tick), Key 2 is only done at 15% (it’s below 35%, you have a red cross) and Key 3 is half done at 55% (it’s between 35% and 65%, you got a orange circle). You score your month at 0.58 (well not really but it’s the example given on my image). Do not worry if you have such a middle score - OKRs need to be ambitious and a good score is something between 0.55 and 0.65. Below means either your OKRs were too difficult or you didn’t do enough ; upper means your OKRs were to easy and not enough ambitious. It’s even better to score a 0.35 with very ambitious OKR than a high score at all.

Wait I don’t like competition and comparing myself ?!

Well, if you think OKR is a way to track your work within the community it’s wrong. OKR are individuals and made for you. It only intents to help you better managing your OWN objectives and results within a community you love to volonteer for. Plus score doesn’t mean anything at all. There is something to debate here.

Okra should also answers some old underground issues where people think Reps weren’t enough aware of some regional community activities. Even with the Reps portal it’s sometime hard to track activities within the communities. Plus with a galaxy system, people could see what is the main goal of their communities. By the way community OKRs are meant to be a little bit different.

And for sure Okra is intended to be an optional tool.

Developing Okra

This tool is first aimed at the Mozillian community (not just the reps) but I also want small teams or anyone to be able to use Okra for free (I will see later how to succeed to provide a complete free tool easy to use). I engage myself to provide a working alpha tool before the next month (very ambitious but let’s consider it as an OKR sample). Still there is a lot of questions to debate.

  • So I would like to know your feeling about such a tool? Do you think about a better workaround?
  • If you think it’s interesting enough for the community?
  • Which technology, coding libraries, do you prefer to get an open source tool? Privacy issue…
  • How to provide a free tool accessible for everyone but at a low cost for web hosting? Considering previous point.

By the way, there are already some existing projects on github about OKR but too small or without a single readme. So I better prefer to start from scratch. Plus the first version of Okra is not intended to be that fancy for now.

I’m more confortable with C++ coding and know how to use Qt, to create an app. I could try to work with SDL to get a full open source app and faking Signal Slot system used by Qt (meaning it could take more than a single month to do). And I can manage a web page with server queries. Reminder git repo here.
For now, I would like to try a beta preview with C++ Qt and try after an export on Android. I will use my own website, server to get working online features.

Let’s debate, I’m all ears :wink:

Mozilla Metrics

Considering these topics: Meta Working Group: Improve the Reps Portal for recognition and Brainstorming - How should reporting look like?.

Mozilla metrics can be linked to Okra so an objective set in Okra has a type that correspond to an activity, area or initiative in Reps portal. Any people working on the same field could be linked and the Galaxy Map (feature) can be designed to show different interactions and linked between people according to the option set: per regions, per team, per alike activities… quite the same as how Reps Metrics works.
But with Okra we should also be able to see Mozillians connected to these reps activities, since the web app not only focus on Reps but all Mozillians. The web app can link a Mozillian to a Rep, not just because they belong to the same team in mozillians.org and reps.mozilla.org but because they have currently the same objectives.

Going further in the concept, achieving a key or a task and finishing a quarter should create an automatic report for Reps. A notification will be send to you, so you can accept to create this report/event on the reps portal (or not). Mozillians would have the same kind of reports but internally with Okra, and we can imagine at the certain amount of succeeded keys in a specific areas, we earn a badge: still alike Mozilla Open Badges.

A special API could communicate with the Reps Portal (and Mozillians one ?) to check if there are new area, activities and field of interest. I think the Reps Council should easily be able to add specific Mozilla events or special programs each new quarter or month to correspond to limited in time community needs (feature for Reps Next and MWG).

Project Updates

UPDATE 08/06
See post #11.

UPDATE 24/05
Git repo updated with 1 new branche:

  • mockup: web app mockup improved, live example [here]

UPDATE 21/05
Git repo updated with 3 new branches:

  • html-public: the framework for the user-interface (the web page)
  • sql-setting: adding the database with its tables
  • php-classes: the upcoming classes to interact between the server and the web page

Hi Quentin, thanks for starting this!

I think this is a great chance to do an experiment and come up with a minimum viable product to keep track of OKRs. I’d certainly use that :slightly_smiling:

If this is something that people want and use (this could be part of the hypothesis), we could even go so far to include it in mozillians.org for example. Do you think it would make sense to come up with a hypothesis and validate it once people could test the MVP?

Regarding technology, I don’t think it really matters which technology to use for the MVP. Nevertheless I think it would be great if this would be a web app :wink:

Looking forward to see what you come up with!

Cheers,
Michael

Thanks Michael for the reply.

I think web app is the best for now. Though I did one for a Hackathon few months ago, but it would still be my first true web app.

By first testing the most valuable product, and then see if we can include it in mozillians.org later, I feel okay. Whatever happens Okra could be an app useful for whoever outside of Mozilla community ; so it won’t be a waste of time.

So for now I need to set a PHP database and will come up later with an update of the git repo.

Many of this ideas was shared in the WGs about the functional area for reps, also for https://github.com/mozilla/Reps/issues/21, https://discourse.mozilla-community.org/t/meta-working-group-improve-the-reps-portal-for-recognition/7188, https://discourse.mozilla-community.org/t/meta-working-group-balance-involvement/7476, https://discourse.mozilla-community.org/t/meta-working-group-combination-of-specializations/7250/4.
Also one of the task of the new Identity WG task is to simplify the reporting view so this project can help so much on it.

So first to start to develop I suggest to you to read this links and be involved to WGs, these ideas are very appreciated but we are working on the WGs so this can be a problem to control everything about the RepsNext.
I think that this need to be part of RepsNext but as said from Michael it is better if can be integrated in Mozillians so we can track every volunteers not only the reps and can be useful for http://areweamillionyet.org/.

Actually Mozillians and reps portal are in Python and Django so before to start a development as a developer of web app I suggest to mockup with wireframe that tool and write all the proposals.
Maybe there are already different OS project that we can extend for our feelings to speed up everything.

PS: C++ and Qt are not the best solution for a project like this (and I love the Qt) but in case you need help for all the step like mockup or develop you have my help (I am the proposer for the new version of Reps portal so with me you find a support in everything for Okra).

Isn’t that a discussion in the Meta WG and open here on Discourse (https://discourse.mozilla-community.org/t/how-can-we-keep-reps-accountable/8619) with improving reporting as being one of the possible solutions there?

To be honest, I disagree. We are not at a state yet where we can come up with a solution for that question. What if there is something better to keep Reps accountable? I think we can talk about integration in Reps Portal/mozillians.org once we know that we want to go that way. Looking at this idea as “part of RepsNext” seems to early for me, and I really think we should enable experimentation as early as possible. If we don’t want to go that way, we still have a tool to do OKRs with, which can not only used by Mozillians if the want to, but also the rest of the world. I don’t think we’re losing anything here while having the possibility to gain a nice tool we could use in RepsNext if that’s the way we want to go.

Therefore I think having a prototype to work with and test a few things would be great. Personally, I’d still use that for my own OKRs for example.

I start to confusing with all the WGs, but yes this project can be the solution for the accountability in the RepsNext.

With integration in my case I was talking to integrate with the API of both to get a reference of the user inside this portal. Because without it is only a tool that are so many around.

Personally also for mozilla stuff I use Asana and Trello so I said to study to start with the project itself without start to suing and after few months we use a new tools with all the migration problems that can have.

Have this tool in the RepsNext can have the support and the training of all the reps and get the sprint that we need for the accountability and recognition.

I can start to write mockup, for development for me it is pretty easy do it that tool with WordPress if we need an early prototype only to discuss.
I can integrate with http://datask.mte90.net/ my plugin clone of OneAndDone (for a real version http://passopasso.mte90.net/ but is in Italian).
So we can create task and the people track the status of the task or share it with others.

Thank you Daniel, this is the kind of feedback that matters.

My first aim is to create a web app useable for everyone not only for Reps and Mozillians and make it compatible with a bunch of tools, creating API for Trello or Slack by example. I stick to PHP, Python and Django combined with HTML and CSS (+ JQuery for sure).
Actually Okra framework relies on a PHP server that hosts the users informations, along with a web page being the user-interface.

So I don’t see any drawback to keep in mind the Meta Working Group. You have my full support on this by the way. I can develop in parallel an API that relies on the RepsNext framework, so Okra won’t just be a tool like others, Okra will be a part of the Reps portal ; and also available for Mozillians.
Because I don’t think Okra should be dependant of MWG or RepsNext. I personally hope to create more than just a single web app and also develop later a mobile app.

To put it in a nutshell, if you think Okra can be a good addition to RepsNext, I will be very happy to help you develop an API for Reps portals. But I would like to keep Okra available for a possible Mozillians integration and many other APIs (might be ambitious, I take the challenge). Keeping in mind Okra in long terms won’t just be a Mozilla web app but also a web app available for everyone else wanting to manage her/his OKRs.

The only point that stops Okra to be an universal app not just for Mozillians is how I can succeed to create a free online service for people that don’t already have a web-server. But this is another matter and I have some clues we could discuss later when we’ll have a working tool.


UPDATE
Git repo updated with 3 new branches:

  • html-public: the framework for the user-interface (the web page)
  • sql-setting: adding the database with its tables
  • php-classes: the upcoming classes to interact between the server and the web page

The mockup of the app is (somewhat) finished. The live preview is here. You can click on the Quarter, and Timeline elements to hide and show them. The various buttons like Config, Next, Previous, Add and Edit don’t work. Same for Sign in and Log In. The preview is not that much responsive, below 1200px “Objective” text is collapsing with the “Score” and below 900px there are more things that keep collapsing. But most of the text and element were thought to be modular and editable through script (I hope so).

Preview

@Mte90 I never used Django before, maybe can you give me some piece of advices here ? Especially for a possible integration to the Mozilla web portal.


Edit: added Mozilla Metrics to the first post and to reply to this post.

I actually only studied Django and helped with few patches the reps portal but Mozillians and Reps have their rest api available if we need an integration.

For me continue with that mockups. the hard part will be define how to calculate performance and the backend interface.

There is this opensource tool https://github.com/foradian/fluxday for okr

@Mte90 gosh I never was aware of this tool even if I did some investigations before starting Okra project. Though I only search on Github for project name with “OKR” within. And search website never mentionned Fluxday. It seems to be a very efficient tool, I will test as soon as possible.


Anyway I’ll keep developing Okra. :wink: By the way, here is a report activity of the project:

  • I developed the whole front-end side of the web app with JQuery implemented and the different pages to browse in. Design is beta and just here for now as being functionnal - I mean I will certainly improve it later to fit mobile screen and better responsivness. There might be few pages missimg but really fast to implement with the CSS class already created.

  • There is a user panel, a login/signin page, a home page and a user page when logged in.

  • I also started to implement the back-end side of the web app. PHP is used to render the different parts of the HTML according to users actions. I didn’t used Django as I’m not used to it (I started to learn Django though - which seems to be an easy framework). I will see later for a Django implementation of the web-app, if needed.

  • The database is created and handles users account: creation with password and e-mail confirmation. Passwords use MD5 “encryption” which is a major security issue for me, but it’s temporary as I test the website locally and want to get something working asap. I will use the new PHP 5.5 API to hash passwords. (By example a HD5 or SHA1 hash can be bruteforce in 20 hours with a nowaday GPU, even less with the best GPU out now.)

  • All the PHP classes related to users interactions are created too. But I have issues with reseting password and deleting password from the user panel. Didn’t have time recently to check why.

I know need to implement the PHP classes to handle user lists (OKRs) and I’m going to use it along with some already existing JQuery plugin. The webapp is being tested locally for now :wink: I’m sorry I deleted the okra.html page on my website. I will update the link later in the month with a beta web-app to test.

Picture preview - some small improvement were made since the picture was taken.