Here’s a rough draft how I plan to replace the whole Drupal based implementation of edgeryders.eu within the tech budget limits of the World Bank project. Most of this does not belong into the Technical Proposal, but will be helpful for us as background reference when writing it. The following already includes @Nadia 's proposal of splitting into a content collection platform (“challenge and responses” as now) and a Matrix based realtime communication platform for all company and project team members.
The good thing is, we know how we want the platform to be: the functionality should be like the current Drupal platform: challenges and responses format, forum with posts and comments, @mentions, daily digest e-mails; and in addition we want a realtime collaboration software like Matrix. After all the years of experimentation (and Drupal was quite flexible for that), it’s time to simplify and get compact, proper software do the job. Now it’s 2017, and unlike 2012, there is a lot of modern and compact open source software around now.
So I propose to split the current Edgeryders platform into several parts, as follows:
- edgeryders.eu: A custom Ruby software with a single login, providing multiple pieces of custom functionality:
- Static pages. Some static pages about the company and its projects (including Reef). Only editable for admin users. Technically part of the custom Ruby software. Using a Rails engine for blogs, which allows full HTML. Using Bootstrap markup and layout, incl. a quick reference on the screen when editing a post.
- Forum ("Challenges and responses"): the community space where all the content collection and public-facing content discussion takes place. A custom, highly compact (!) forum-type software application that is highly optimized for low bandwidth / site loading speed, and access from developing regions. That includes very good foreign script support (Devanagari, Arabic etc.).
- Reef: A separate part of the custom Ruby application, with features for space management, event announcements and other custom tasks for The Reef. There could be other, similar pieces of software on that same domain for other spaces, like the one that will belong to the MENA youth platform.
- PayCoupons: People's PayCoupons username, offers, hourly rates and GTCs would be listed both on their Matrix profile and edgeryders.eu custom software profile, in a dedicated linked field. Also, the forums software would have PayCoupons links after every mention of a username, and ways to tip people for good / helpful posts, using small amounts of PayCoupons.
- Github repository: all software related tasks of the custom forums software are handled here.
- riot.edgeryders.eu: Riot web client for the Matrix protocol, see https://riot.im/ . It is one of multiple clients that people can use to collaborate via Matrix, so there is no need to include it on the main domain. On the main domain, there will simply be a site explaining what Matrix is, how to join, and linnking to several options including riot.edgeryders.eu. Used for all Edgeryders collaboration needs around projects. Everyone who wants to be part of the Edgeryders codebase would take part here. Includes all collaboration with team members, community managers etc.. No login integration with the Ruby software needed, as Matrix is an instant messaging protocol, so the idea is that everyone has their own username, independent of any particular website. The custom forum application would link to that username for instant messaging etc.. We would do no (!) custom changes to the Riot or Synapse codebases.
- synapse.edgeryders.eu: Matrix (http://matrix.org/) server installation, using the Synapse reference server ( https://github.com/matrix-org/synapse ). Not linked anywhere, as it is just the server, providing the "rooms", while people always connect via clients.
- edgesense.edgeryders.eu: Stand-alone Edgesense installation, using the data of the forum software. No login integration with the forum software, as it has only very few users and these would simply stay logged in permanently.
- ethnography.edgeryders.eu (optional / later): A stand-alone software for tagging the edgeryders.eu content. Can work on the same database, and its data may be used by the edgeryders.eu forum software installation for showing related content etc.. This software can be based on Annotator.js, with the extensions developed for it for the Open Ethnographer Drupal software.
Implementation proposals for the custom software application:
- Essentially: it will be a custom application in Ruby, developed by my brother Daniel and administered and managed by me. Daniel has in total has 8 years experience in Ruby and is very fast at implementing features with that framework. He only does Ruby – not like me who does a bit of everything (and is correspondingly slow). I don't know another developer whom I'd trust to replicate ederyders.eu until the launch phase in October, but together with Daniel I can get it done. We have worked together extensively on PayCoupons, so we have a lot of routine working together …
- I am sick and tired of Drupal-style overly complex and "super configurable" software where everything takes about 4x longer than planned. In the future we'll have super compact code instead. There will not be the current flexibility for admins to change things around by configuring them, but our desired feature set is quite well-known now. We can have Ruby courses though, so everyone interested will be able to make small changes to the website in code. Content changes are all still possible in the admin interface, of course.
- The forum base software would be either Thredded (10,500 lines Ruby code only, MIT licence) or Discourse (full fledged forum, 140,000 lines Ruby code).
- Boards of the forum will be called "Challenges", messages will be called "Stories" (as in "Add my story").
- The editor should be ProseMirror (MIT licence). It outputs natively to Markdown, but allows rich text editing as well. When editing in source, there should be a live preview using a second editor widget, just as on Stack Exchange. It is basically as capable as our current editor, while allowing faster editing for markdown skilled users (esp. on mobile devices), and avoiding all the crazy security considerations around "Full HTML" in editors. More editors that can output in markdown format: see here.
- Another custom component will export all (!) content into a public JSON file, for an external Edgesense installation to consume.
- A simple text box with a hiearchical link list in Markdown will do to define the contents of the main menu.
- All (!) existing public content of edgeryders.eu will be migrated to challenges and responses in the new custom forum application. That may happen only after the end of the OpenCare project, however.
Edit: The current project journalling and task functionality of Drupal will be lost. If you want a realtime message style collaboration solution like Matrix, that’s what you get I proposed (task based) Taiga.io before but it got turned down – that’s fine, as for software issues I’ll simply use the Github issue tracker then. You’ll have to find your own ways to manage tasks, as there will not be structured support for it. For example, a simple Google Spreadsheet could do for team internal task management.
The existing journal and task contents would be migrated to Google Docs and Spreadsheets documents, as that is where all our other project knowledge resides. Wiki documents would be partially migrated to static pages on edgeryders.eu (in case of the website manual etc.), and otherwise also to Google Docs.