Paid software development tasks for Open Ethnographer for Drupal (call closed)

Let’s make the Edgeryders website a research powerhouse! We have 20+ paid software development tasks available, immediately “up for grabs” for the Edgeryders community. You got that right, paid work :slight_smile:

Context: We are currently working on a tool that will make a powerhouse for collaborative online ethnographic research, and will also result in tight semantic web integration. The tool is called Open Ethnographer, will be open source software, and is funded by a grant from Rockefeller Foundation.

Alongside developing this to a release, we want to provide paid work to developers in the Edgeryders community along the way. And of course, offload some of the work because else I’d be the (l)on(e)ly developer :wink:

So, starting immediately we have paid tasks available for software developers in the Edgeryders community. Here’s what is available so far – more tasks will emerge over the development in December and January, and then added here. Depending on the task, you will need to know JavaScript and / or PHP (Drupal knowlegde is a plus), and of course HTML & CSS. Required languages are indicated in square brackets below. Not all have (linked) fully detailed descriptions or budgets yet; but just tell in the comments what task you want details for and I will provide the details for these right away.

Strikethrough indicates that a task is completed, or discarded.

  1. Add config options to hide parts of the eComma UI. [PHP]
  2. Find out if CATMA includes code management / hierarchy building features.
  3. Exchange the markup creation JavaScript code with Annotator. [JavaScript, PHP]
  4. Install Annotator into and document how to do it. [Drupal config]
  5. Implement that tagging refers to a revision. [PHP] This way, an edit will no longer cause a loss of all notifications as it happens with eComma currently. But as discussed in the comments below, quasi-random word IDs already serve that purpose, and better. For exporting a date-specific version of coding work, revisions of the text are of no use either, instead we'd need a coding creation date field.
  6. Integrate eComma into the Drupal theme as a static right-column element. [PHP, CSS, HTML] It should be possible to fold this element into a compact toolbar (which would then be a non-static element, allowing to see other right-column elements then).
  7. Implement storing annotations relative to content, not content display. [PHP, JavaScript]
  8. Implement tagging in Annotator with realtime tag filtering. [JavaScript]
  9. Implement AJAX-based code creation within Annotator. [PHP] This should happen in the annotator_view sidebar, so it obviously depends on the task to integrate this first. Also, links should be added that point to the Drupal taxonomy interface for more advanced operations (merge, delete etc.). This is now replaced with on-the-fly tag creation in the Annotator tagging UI (increasing the budget of the corresponding task above).
  10. Implement tag selection by selecting a known tag in a hierarchy. [JavaScript] Might be possible with an existing Annotator plugin. However, it is more or less decided that we do not want hierarchies, and that tag selection by instant search is enough as a single fast and consistent tag selection option.
  11. Implement basic exporting of codings. [PHP]
  12. Implement the "view annotation" feature with annotator_view. [PHP, JavaScript]
  13. Implement RDFa output of all public codings in live content. [PHP]
  14. Ability to fork a public tag of another user. [PHP]
  15. Implement a feature to select which content to include in an export. [PHP] Basic exporting is already covered in a previous task.
  16. Implement merging and deleting tags. [PHP]
  17. Implement a quotation manager. [PHP]
  18. Modify Annotator to use quasi-random word ID tags for stand-off annotation. [PHP]
  19. Fix that CKEditor's "Remove markup" button removes word IDs. [PHP]
  20. Implement private tags. [PHP]
  21. Implement showing / hiding others' public tags in viewed text. [PHP, JavaScript] [optional; undecided]

And several tasks for usability enhancement related to the use of Open Ethnographer inside

  1. Improve the CKEditor styles to improve content creation for study participants. [PHP] This means developing a better set of paragraph and character styles for the "Styles" menu shown inside CKEditor, and then rendering them inside CKEditor and in the final content the same way.
  2. Fix cut&paste changes to formatting inside CKEditor. [Drupal config] To improve content creation for study participants.
  3. Improve the look of content created by study participants by limiting their use of HTML. [Drupal config] Study participants should only be able to use formatting provided via the CKEditor styles menu. Admins would be able to additionally use "Full HTML" mode, which would not have these limitations.
  4. Prevent empty lines at the end of content. [Drupal config] This is meant to improve the look of content created by study participants. It should be implemented by adding an automatic content filter that will delete empty lines at the end of content, or just not show them when rendering the content (which is the more usual way how Drupal handles changes to content – namely, making them only effective for viewing, not saving them).
  5. Improve the user experience of study participants by overhauling the main navigation structure. [Drupal config, CSS] This includes introducing a two-level drop-down main menu, and integrating an (optional, already existing) group menu cleanly with the main menu.
  6. Improve the user experience of study participants by redesigning some of the major hub pages of the website. [Drupal config, CSS] This would include the blog index page and about four other ones. [optional]

Collaborating “as a crowd” on a paid software development project like this is new in Edgeryders (I think), so consider the first tasks – and their budgets mentioned in the tasks – a bit experimental and tell me what works and what has to be improved.

Here’s how to collaborate:

  • Assign to yourself. If you want to work on a task, just add a comment and fill the field to assign it to yourself. (Tasks are first come, first served, but there are enough …)
  • Start working right away. We have a tight project plan, so if you want to collaborate, start right away. And if you assign yourself a task, make sure you can work it off in a matter of days so we can proceed with dependent tasks.
  • Delivery. Delivery should be as a Github pull request from a feature branch in your fork to edgeryders/openethnographer. This repository uses Git subtrees, and we have instructions for its usage. Then simply put a link to the pull request into a comment on the task here on All other communication about your code (pull request additions, issue tracker issues etc.) will then happen on Github.
  • Payment. Payment happens after your code was tested and integrated by @matthias and after you have sent an invoice to Edgeryders. You can aggregate several tasks before sending an invoice (and it makes our administration side easier as well.)
  • Bugs? If there are bugs after payment that prohibit basic functioning, you will have to fix them within the budget. You don't have to worry about any small bugs though (edge cases, nice-to-have features etc.). If you find bugs in Open Ethnographer, create a new issue on Github.
  • Questions? I (@matthias) will be available on short notice for all questions regarding development environment setup and what the task exactly means. See my contact information.

Photo credits: by Alosh Bennett, CC-BY 2.0, Flickr Image 2231572509

1 Like

Collaborative development starts now, could need a PR push :slight_smile:

This post will include new tasks for Edgeryders’ developers when there are more available within the development process. So this is the piece of content to share now :slight_smile: Can I ask you @noemi and @nadia to help me with sharing this around in the community so we reach our developer talents?

1 Like

Ok Pinging community members with skills or connections


@kei,@marc, @cjd, @igel , @guaka , @ton, @tomek, @leo,@pierpaolo, @piersoft, @elf_Pavlik, @jamesL and others.

Though this might be of interest to you or people you know. Maybe help spread the word around about this?

1 Like

Nice plan, Matthias. I’m going to have a good poke around before I commit to anything, though.

1 Like

oh, something that might not be obvious to everyone…we’re presumably using the drupal 7 version of eComma, since that’s what the edgeryders website uses

1 Like


… I should hope so :-/

Right that

We use eComma for Drupal 7, on Drupal 7.

Glad you want to join :slight_smile: You can also get a preview of what tasks will be available in the future, and register interest in some of those.

Second try: inviting Edgeryders with dev skills and connections

I am sorry for the frustrations caused by Nadia’s first set of mentions above – you were not able to access this post due to a bug that I assumed I fixed, but it had a second half …

So, again: @kei, @marc, @cjd, @igel , @guaka , @ton, @tomek, @leo, @pierpaolo, @piersoft, @elf_pavlik, @jamesL, @paolo_mainardi, @paolomainardi and others: Welcome to pick a paid development task in the Open Ethnographer project (just see the post above). And to share this opportunity with your developer friends.

And Auli!

Waah, we totally forgot to mention @auli :slight_smile:

setup notes

Couple of notes on the install process:

  • be sure to check out the 7.x branch from github
  • you need to use msyql as your db; won't work with postgresql
  • eComma depends on tagadelic. I needed to downgrade to version 7.x-1.x-dev, not 7.x-2.x-dev, due to bug. That bug manifests as a 500 on the node view page (/node/nodeid). Fixed by the patch Matthias mentions below
  • On editing field settings, I get various errors like "Notice: Undefined index: instance in ecomma_form_alter() (line 351 of /home/src/eComma/ecomma.module).". I think this prevents the display of whatever setting I'm supposed to tweak in step 7 of the ecomma instructions, "Enable ecomma commentary features for that text area field in the settings". Workaround was to manually enable eComma for a field in the database: "insert into ecom_ecomma_field_enabled (field_name, content_type_name, ecomma_enabled) values (''your_field_name", "your_content_type", TRUE);"
1 Like

Thanks! Also there are some other notes that could help you

Thanks for the notes, will surely help us in the process. You might want to integrate them into the upcoming Open Ethnographer manual. It already contains some hints from me re. installing a certain patch. Maybe that fixes one of your remaining issues?

1 Like

In our manual now!

I’ve integrated your and eComma’s “official” setup notes into the Open Ethnographer manual now.

Still figuring out how to get eComma integrated into the Edgeryders website, with Panelizer and all, but I’m nearly there …

(2) and (9)

Tasks 2 and 9 seem to be alternative ways of solving the same problem. i.e. we only need one of them.

[also, the problem is limited…tags are not lost when the content changes, just misaligned]

True … let’s use the random word IDs then

True, the “(9) Implement that tagging refers to a revision.” would be just a poor surrogate for the same purpose as quasi-random word IDs. So let’s drop that point. What’s inferior about referring to revisions plus numeric word ranges is that after an edit, codings / taggings cannot be shown correctly in the latest version any more. But the latest version will be shown to website visitors by default, so they wouldn’t see any codings in edited content then. Which would be really unfortunate, as a great benefit of Open Ethnographer is its effortless side effect of giving semantic web integration (rendering tags as RDFa into posts …), semantic in-site search abilities etc…

One could dream up a mechanism to translate a mechanism to dream up translating old numeric word ranges when a new revision is created, but I guess the word IDs are a cleaner way then. Even though they create more messy HTML. (You’re welcome to disagree of course, and the software design is not set in stone so far.)

(18) would be good for a newcomer

18 is pretty straightforward. Let’s keep it as a good first task for anybody new who wants to join in.


Hello, my name is Pedro Dias, I have some experience in PHP, Mysql development, I have worked in some scripts like Joomla, Wordpress, Opencart and osCommerce. I feel a bit lost on how to collaborate with you on developing some of the tasks, if you want to give me some indications maybe I could be of some use :slight_smile: I have no experience in Drupal, for what I read is a CMS/Blog and you are working on a plugin eComma that is a module for collaborative annotation. I have heard of this project edgeryders, from a common friend and I find it a very interesting project

1 Like

Welcome Pedro

Hello Pedro, welcome to Edgeryders. @matthias would be the person to ask specifics: I can only confirm that Drupal is indeed an open source CMS based on PHP and MySQL. It is a huge project, with million of websites running it and tens of thousands of committers.

i see that @danohu, also working on this project, suggested Task 18 above as suitable for a newcomer. I suggest you read it, then if it looks good follow the instructions to assign it to yourself and execute it. How does that sound?

1 Like

Hi, Pedro.

To add to what @alberto said…we have instructions on how to set up drupal and eComma here.

If you follow those instructions, you’ll end up creating a content type in Drupal that has a tagging interface attached to it. Task 18 is about hiding extra whitespace at the bottom of that content type.

1 Like

More indications

Hello Pedro, and welcome from me too :slight_smile: With PHP / MySQL experience you can definitely join here! Drupal itself can be a bit daunting compared to less complex systems like WordPress, but not all tasks require extensive Drupal experience. I have filtered out those tasks for you that require no or only limited, specific Drupal knowledge. Means, things you can do after learning half an hour about the Drupal concepts involved, if any:

  • 5. Exchange the markup creation JavaScript code with Annotator.
  • 6. Implement exporting of selected codings to a CATMA file.
  • 15. Improve the CKEditor styles to improve content creation for study participants.
  • 16. Fix cut&paste changes to formatting inside CKEditor.
  • 17. Improve the look of content created by study participants by limiting their use of HTML.
  • 18. Prevent empty lines at the end of content.
  • 20. Implement live-syncing selected codings with a certain account at a CAQDAS software.

(Only numbers and titles, look up details in the original post above). I would propose you start by installing a “vanilla” Drupal system on your computer, then take on one of the tasks not related to eComma (15-18), and after that proceed by installing eComma, learning some more Drupal and doing other tasks. If you get stuck, we offer to help out via pair programming. Let us know how you want to proceed :slight_smile:

Thank you all

I will install the Drupal and the components I need in my virtual machine this weekend and give it a try, with the software installed I will get a better perspective of what and how to do it

1 Like