Experimental project
This is a sandbox project, which contains experimental code for developer use only.
This sandbox will contain a drupal module to interface a Drupal site with the joind.in website.
For what do we need this?
From joind.in's about page:
Joind.in is the replacement for all those paper submission forms that get left on the floor at the end of an event. The site gives details of events past, present and future, the sessions, timetable and speakers at each, and allows all attendees to register and leave feedback - for the sessions and for the event itself.
But we can do all this in Drupal. There's even a Conference Organising Distribution that will do this. For what do we need this?
- Data in Joind.in is persistent. I've been to Drupal events and found that six months later when I've wanted to remind myself what talks were given, who gave a particular talk, or see the feedback that the site itself has been torn down. On Joind.in, I can see all data for listed events going back to 2008. I can find every talk I've ever seen at a PHP conference at Joind.in.
- Because Joind.in stores data on many many events, it is possible to track speaker profiles across multiple talks and events, giving attendees a better insight into those presenting at your event, allowing them to make a more informed choice and increasing the profile of your speakers.
- This doesn't have to be an either/or decision. Joind.in has a comprehensive http://joind.in/api which supports writing data back to it. So either the Drupal site or Joind.in could be the master of the data. (writes in both directions could get messy). Reflecting the data on both sites means that should one site be unavailable the information is still "out there". But you get to have your data on your snazzy (do people still use that word?) Drupal site, but aggregated with all the other content hosted on joind.in.
My primary aim is to produce a module that will support data replication between a Drupal site and Joind.in for potentially multiple talks. It will provide entities to represents the data elements provided by the joind.in API, such as events and speakers. It will not mandate that you use them, and provide the functionality to designate existing entity types as representing joind.in data elements so that as little as possible of your Drupal site's architecture is determined by your decision to use this module. This will make it easy to add the module to existing sites that already contain content types for talks (for example).
The module will initially be written for Drupal 7. There is no current intention to backport to Drupal 6.
The long term aim is that the joind.in module will become part of COD. But it will be easier to have that discussion with the relevant people when the module is written and proved.
Current Status
This sandbox currently provides two modules:
- joindin, contains classes to represent elements returned by the joindin api, and the ability to call that API
- joindin_content_types, contains two custom node types representing a joindin event and a joindin talk, and utility functions to populate these with data from the joind.in site
The only current dependency is the link module though this will change as more data returned from joind.in is added to the fields on the event and talk node types, e.g. date field.
After installing both modules, new node types will be available to represent talks and events held in Joind.in. There is no GUI at the moment to push/pull data to Joind.in, but there are PHP functions to retrieve events and talks than can be run via drush ev. For example,
drush ev 'joindin_content_types_create_event_by_id(1381, true, true);'
will get PHPNW 2013 and all its talks and comments from Joind.in, and create event and talk nodes, and populate them with comments from the event.
Outstanding Tasks
- Convert API to use Guzzle - top priority because this will effect consumers of the API
- Add support for views backend
- Add Oauth support
- Write data back to Joindin
- Refresh data from joind.in (currently just pulls data to create new talks & events)
- Periodic polling of data on joindin to pick up updates
- Add support for site builders to optionally use their own content types for talks and events rather than having to use those provided by joindin_content_types
- Add more fields to talk/event node types so that all data returned from the API is stored
- Admin screen
- Dump entire event schedule to joind.in
Joind.In Resources
The current Joind.in website is http://joind.in/
A replacement website is in progress that consumes the same API as the Drupal module and all external sources at http://m.joind.in/.
The Joind.in project is an open source PHP project and is held at https://github.com/joindin, including a vagrant build to generate a local development version of the site.
There is a very active community around the project with the following mailing lists: https://groups.google.com/forum/#!forum/joindin-announce, https://groups.google.com/forum/#!forum/joindin-developers, https://groups.google.com/forum/#!forum/joindin-features.
Also the #joind.in channel on freenode is well populated during European/American daytimes.
When testing functionality that writes changes back to joind.in it is mandatory to use a test site rather than writing test data to the production joind.in site!
Project information
- Project categories: Site structure
- Created by eli-t on , updated


