User:YuviPanda/Campaigns namespace proposal

From mediawiki.org

Proposal to give UploadCampaigns their own Campaign: namespace

Current System[edit]

Most people are not aware of UploadCampaigns at all, and if they are, unsure how exactly to use it. Discoverability is very low. Also there is no ability to 'show off' - display all pictures that turned up from a Campaign, upload/deletion/editing stats, etc. No place to discuss the campaign for people who are contributing / running the campaign exists either.

Proposed System[edit]

Create Campaign and Campaign_talk namespaces, where each campaign will have its own page.

Assuming a Campaign named, say, Campaign:Wikimania_2013_Hong_Kong, someone visiting that page will be shown:

  1. Information about the Campaign
  2. Tutorial (if any)
  3. Images uploaded via that Campaign so far
  4. Call to Action to upload a new Image to the Campaign (can point to current UploadWizard stuff)

Campaign_talk:Wikimania_2013_Hong_Kong will be a typical talk page where people can talk about the Campaign itself (images uploaded via it, related conversations, etc).

Editing the Campaign:Wikimania_2013_Hong_Kong will open up a an editor similar to the current UploadCampaign editor. Permissions to create and edit pages in Campaign: namespace is granted via the same rights in place now.

What do we get out of this?[edit]

Plenty!

  1. Campaigns get a lot more visibility
  2. Makes organizing local Photo Hunt competitions such as 'Wiki Takes Hong Kong' a lot easier
  3. Provides a central location for people to discuss about the campaign itself
  4. Functionality developed for getting 'Images uploaded via this Campaign' can be used in many different places (such as the Mobile app)
  5. Prominent Call to Action + display of current images will potentially increase contributions
  6. Ability to add custom metadata for use by other applications / clients (since all data is just JSON)
  7. Automatically fix bug 30645

OK, I'm sold. What do we need to do?[edit]

  1. Steal code from Extension:EventLogging to create the Campaign: namespace
  2. Modify current UploadWizard code to load Campaign info from data in the Campaign: namespace than from the database
  3. Implement a proper 'tracking category' mechanism to be able to identify images from a campaign
  4. Render paginated current contributions for the campaign on the Campaign: page whenever people visit
  5. Implement a 'call to action' (customizable) that just puts people into the appropriate step in UploadWizard

Implementation[edit]

Should be done in multiple incremental phases.

Phase 1[edit]

  1. Implement ContentHandler to handle storing JSON files in Campaign namespace
  2. Specify basic JSON validation based on current schema
  3. Make UploadWizard read Campaign data from appropriate page, than internal store

Phase 2[edit]

  1. Make specific properties queryable via API (name, state (open/closed))
  2. Establish JSON schema for specific parameters, and extensibility points

Phase 3[edit]

  1. Implement editing Campaign metadata via custom editing functionality

Phase 4[edit]

  1. Display currently uploaded pictures in reverse chronological order (with pagination)
  2. Provide 'Upload More' call to action that takes people to UploadWizard's screen to upload more pics to this campaign


Phase 1, 2 and 3 would be needed for Mobile Apps' Campaigns workflows.

See also[edit]

  • Extension:Campaigns despite the name, shares no code. It simply notices ?campaign=SomeCampaign in the query string to the Create account form, and if the user signs up it logs the campaign. It's complementary to upload campaigns, it should be used when inviting anonymous users to sign up (and after doing so send them to the Campaign:SomeCampaign page).