Outreach programs/Possible projects

Programming
If you're a programmer, we have lots of things for you to do. (To do: copy some relevant ideas from http://socialcoding4good.org/organizations/wikimedia )

Write an extension for pulling files from a git repository
This is a project suggested by the good folks at the W3C. We'd like to write an extension that would accomplish most of the features offered by large pastebin websites, with the added bonus of being able to add code to a wiki page without copying and pasting! This would be really great, especially for MediaWiki.org (this website), where a lot of code examples are copied from existing git repositories. It might also be useful to include an (optional) feature that allowed creating and hosting git repositories on the wiki, but that might be more complicated, or perhaps a different project altogether. But the extension itself would be plenty.

Things you might need to know (but of course aren't required to): Git, PHP, JavaScript, HTML, wiki syntax.

This project idea contributed by MarkTraceur (talk) 22:29, 13 November 2012 (UTC) (a mentor)

This project idea is all dried up! MarkTraceur has done all he can to accommodate the enthusiastic applicants, but unless you've already talked to him about a microtask, please stop sending inquiries about this one, there are simply no more ideas left. Thanks!

Add and polish features in Extension:EtherEditor
This is a project to enable real-time collaborative editing in MediaWiki. It's actually pretty mature now, but it could use some fixing up, especially since it's lain dormant for a few months while User:MarkTraceur was working on other projects! In particular, hunting bugs on the bug tracker and polishing the UI would be very useful, and a great way to learn how to work with MediaWiki extensions.

Things you might need to know (but of course aren't required to): PHP, JavaScript, jQuery, node.js, Etherpad, wiki syntax.

This project idea contributed by MarkTraceur (talk) 22:29, 13 November 2012 (UTC) (a mentor)

Work on backlogged bugs in Extension:UploadWizard
The UploadWizard project is an extension to MediaWiki that focuses on enabling users to more easily upload between 3 and 50 photos at a time. The project is primarily deployed on Commons, and is written mostly in JavaScript.

Things we could work on: Making the interface (even) more friendly, fixing bugs, adding integration with other media-sharing platforms (Flickr was just added, but MediaGoblin or raw URL might be useful), and much much more.

Things you might need to know (but of course aren't required to): JavaScript, jQuery

This project idea contributed by MarkTraceur (talk) 22:29, 13 November 2012 (UTC) (a mentor)

Create a VisualEditor module
VisualEditor is a key part of Wikimedia Engineering's work in 2012/13, creating a rich visual editor for all users of MediaWiki so they don't have to know wikitext or HTML. Your creation of a module to bring additional functions to the in-progress would help more potential users make better or richer content. If you have a favourite editor feature that you want VisualEditor to have - video insertion, syntax highlighting for wikitext fly-outs, pulling in arbitrary Wikidata content, whatever! - you could help make it even more useful for everyone.

Things you might need to know (but of course aren't required to): JavaScript, jQuery, HTML5.

This project idea contributed by Jdforrester (WMF) (talk) 23:59, 13 November 2012 (UTC) (a mentor).

Work on outstanding Parsoid bugs and/or add features
Parsoid is an attempt at bringing some sanity to the world of Wikitext. Whenever you edit a wiki page, on this site for example, a PHP script runs through the page multiple times to come up with the new HTML that it generates. The Parsoid project is a single-pass design, which hopefully makes for a much speedier, and reliable, parser.

But we definitely need your help. Learn more about the complexities of Wikitext parsing, and help push forward the new VisualEditor project, by adding things to the new C++ parser, and making things generally work better.

Things you might need to know, but aren't required to: C++, HTML5, node.js, wiki syntax, parser design.

Contact MarkTraceur (talk) 00:15, 15 November 2012 (UTC) for more information, or just check out the project page.

Implementing volunteer testing tracking framework
Wikimedia frequently deploys changes to software. It is always useful to test features as early and thoroughly before deployment. Currently Wikimedia doesn't have a proper process to communicate with volunteer testers and invite them to test features. Sometimes the wikitech-ambassadors list is used, sometimes new features run in beta and volunteers are invited to write up their experiences on a talk page somewhere, but very frequently features are not announced at all. The situation is complicated by the fact that the different Wikimedia sites work in almost 300 languages with different fonts, different string lenghts, different templates, different extensions, different CSS etc.

One way to solve this is to develop some tools and procedures to communicate with prospective volunteer testers and to collect feedback from them, both positive and negative. It can be a simple form that says: feature x, languages XX, OK/FAIL. See an example from Fedora here: QA-L10N:nautilus test day. In Fedora, the technical side of things is actually just a MediaWiki table. We could just use that, or we could do something even better: maybe a MediaWiki extension, or maybe even some non-MediaWiki-based technology.

In any case, an easy-to-understand workflow would be very important, even if the technical tools are good, and writing these tools and procedures would be a very useful contribution to the MediaWiki developers' and users' community. --Amir E. Aharoni (talk) 19:36, 14 November 2012 (UTC)

[generic] Create an extension
Creating extensions to MediaWiki is a great way to make it better. It contributes something new and cool to the community, and the Wikimedia sites (including Wikipedia!) might even decide to deploy your software, if it's really neat.

If you have some great idea for a feature that MediaWiki doesn't have, an extension is almost surely the way to work on it. This is a very open-ended project idea. First get an opinion of MediaWiki developers to make sure that the idea makes sense.

If you need ideas, extension requests can be found here and here.

Things you might need to know, depending on the extension you want to write: PHP, JavaScript, jQuery, wiki syntax.

This project idea contributed by MarkTraceur (talk) 22:29, 13 November 2012 (UTC) (a mentor)

[generic] Write useful Lua modules
We're in the process of moving towards a future where complex programming tasks usually dealt with by complex templates are handled in Lua, a friendly scripting language. To that end, it would be great to have someone who spent a lot of time writing useful scripts in Lua and testing them, either on local wikis or on MediaWiki.org.

Things you might need to know, but aren't required to: Lua, advanced wiki syntax (for translating old templates)

This project idea contributed by MarkTraceur (talk) 20:55, 14 November 2012 (UTC) (a mentor)

Extension:OEmbedProvider
Finish Extension:OEmbedProvider, as proposed here. See also Bug 43436 - Implement Twitter Cards

Browser Test Automation
The goal would be to create decent test coverage for a feature or an extension. For more information about browser automation please see Groups/Proposals/Browser testing page.

Good example would be Extension:MobileFrontend extension. It already has a few tests in tests/acceptance folder and three Jenkins jobs: the same tests run on Android, iPhone and iPad. There is also a Mobile tests section at QA/Browser_testing/Test_backlog page.

Please note that MobileFrontend is just an example. Any other feature or extension could be the target.

This project idea contributed by Zeljko.filipin(WMF) (talk) 11:00, 30 January 2013 (UTC) (a mentor)

An easy way to share wiki content on social media services
Wikipedia, as well as other wikis based on MediaWiki, provide an easy way to accumulate and document knowledge, but it is difficult to share it on social media. According to https://strategy.wikimedia.org/wiki/Product_Whitepaper 84% of Wikimedia users were Facebook users as well in 2010, with the portion incresing from previous years. The situation is probably similar with other social media sites. It only makes sense to have an effective "bridge" between MediaWiki and popular social media site. More details here.

Some previous work you can use as a base, improve, or learn from:

Extension:WidgetsFramework - experimental extension

Extension:AddThis

Extension:Facebook - just Facebook

Extension:WikiShare - unstable version, seems like it's not worked on any more

Write an extension to support XML Sitemaps without using command line
Sitemaps are files that make it more efficient for search engine robots (like googlebot) to crawl a website (so long as the bot supports the sitemap protocol.) Manual:GenerateSitemap.php describes the common way of generating XML Sitemaps. Write an extension, which allows users to generate Sitemaps on a given schedule without using command line.

Improve Extension:CSS
The CSS extension relies on basic blacklisting functionality in MediaWiki core to prevent XSS. It would be great if a proper CSS parser was integrated and a set of whitelists implemented to offer various levels of capability/protection trade-offs.

For example, some wikis may want all CSS selectors prefixed with "#mw-content-text" and properties like "position", etc. disabled to limit the effect of styles to the article content. Other sites may want everything except XSS-able properties/values.

Additionally, the current implementation uses data URIs and falls back to JavaScript when the browser doesn't support them. It would be a great improvement if the MediaWikiPerformAction (or similar) hook was used to serve CSS content instead. This would allow the CSS to be more cleanly cached and reduce or eliminate the need for JavaScript and special CSS escaping.

Necessary Skills/Interests: PHP, CSS, JavaScript, web application security

Mentor: Rusty Burchfield is willing to mentor an intern on this project.

Add support for x3d 3D files to MediaWiki
A lot of users are requesting the ability to upload 3D files [in the x3d format to Wikimedia Commons. But for that creation of a sanitizer and integration of a rendering system is needed. See [[bugzilla:1790]].

This project idea contributed by Tpt (talk) 16:38, 12 February 2013 (UTC)

Level up Wikimedia Commons experience proposals
Sébastien Santoro (Dereckson) can mentor these projects idea.

Weekly development summary
It would be great for someone to write a weekly summary of the important patchsets that have been committed or merged into our source control system, either to send to our developers' mailing list or possibly for use in the weekly Signpost newspaper. You would learn to navigate our bugtracker, our mailing list, and our source control viewer and gain an understanding of what's important to the developer and user community. For an example of the kind of activity this would cover, see the GNOME commit digest and the KDE commit digest.

You need to be able to write English prose.

Mentor: Guillaume Paumier.

Feature videos
The best way to get certain kinds of documentation, and to teach newer developers how MediaWiki works, is to interview senior developers about important and hard-to-understand components, and turn those interviews into videos.

You need to be able to write English prose, to communicate easily with spoken English, and to run video editing software on your computer.

Mentor: Sumana Harihareswara.

System administration
You're amazing if you want to help run our huge infrastructure. We have some ideas.

Debianize, puppetize, and deploy Etherpad Lite
Etherpad Lite is a complete overhaul of the old Etherpad system of yore. While great, and free software, Etherpad "Classic" is about 10 times as heavy as Etherpad Lite. We would really love to use the new version as our primary way of collaborating in real-time, but there are a bunch of things that need to be done first. We need to make sure a Debian package is available, so we can run it on our servers. We also need to make sure that we can do proper load balancing on it, which can be complicated with Etherpad Lite. Then, we need to write a Puppet manifest and actually do some deploys of it, to make sure everything goes all right.

Things you might need to know: Puppet, Debian packaging, command line.

This project was suggested by MarkTraceur (talk) 01:42, 14 November 2012 (UTC) (a mentor)

Marketing
Sumana Harihareswara can mentor this project idea.

Find the vendors
The independent consultants and other companies that benefit from customizing and reselling MediaWiki would benefit from cross-pollination, referrals, upstreaming their patches, and recruiting. Can you find those vendors, find out what they need from "upstream" (the developers of MediaWiki core and extensions), and start translating those requests into continuing collaboration?

Things you might need to know: English prose, web research skills.

Success stories
Update Mediawiki Testimonials, interview users about their success stories and make them visibly on mediawiki.org to promote MediaWiki as a product and attract more users, volunteers, etc. Start a “Feature story” campaign with weekly(?) success stories and user cases presented at a visible location. Organize user presentations, where one individual developer/company can present how they use/adapt MediaWiki, to help the community to share and learn from each other.

Things you might need to know: English prose, planning and organization skills

Help develop design documents for Flow
Flow is a "game changing" project that is currently in the initial design phases.

You will be tasked with taking high-level wire-frame documents and providing mid-level interaction designs and visual treatment mockups.

This project will mentor several skills in a broad context.

Mentor: Brandon Harris

Other
If there are projects that don't fall into any category, this is where they should go. Feel free to add new categories, but if you can't think of a name for a category that would fit your project proposal, put it here!

Documenting noteworthy local templates, gadgets and styles in various projects
In addition to MediaWiki and its extensions, Wikimedia sites run a huge amount of other code: locally developed templates, gadgets and styles. Some of the tools that were developed in the English Wikipedia became full-fledged extensions, for example Wikilove. But there's still a lot of code that runs in some projects, that could be useful to other projects, but is hard to install them elsewhere, because it's hard to port and install them. Some examples: The same goes for templates: some templates are so common and useful on some Wikipedias that users expect them on other MediaWiki installations, too (I can think, for example, of en:Template:Cite web, en:Template:Infobox, en:Template:Lang and a bunch of others). The prevalence of such templates may hint at the features that the users need.
 * The English Wikipedia's Citation toolbar.
 * The Russian Wikipedia's typography improvement tool ("Wikificator").
 * The Portuguese Wikipedia's spelling switcher (could be useful for some languages with different orthographies, such as English, Catalan and others).

Documenting such tools doesn't require the knowledge of a lot of languages. It just requires the ability to talk to local editors, to spot interesting differences in the reading and editing interface, and to find frequently used MediaWiki:*.js pages. --Amir E. Aharoni (talk) 19:22, 14 November 2012 (UTC)

Triaging bug reports
Wikimedia receives many reports about code mistakes (so-called "bugs") and enhancement/feature requests in the public database located at https://bugzilla.wikimedia.org. Some need to be put into the right baskets so developers can find them and some miss enough information or are not in a good shape to be useful. This process is called Triaging. Triaging helps users/reporters, developers, maintainers, and release management to save time and keep an overview which problems are important. You would work with Wikimedia's bugwrangler.

Some helpful characteristics (these are no strict requirements though) probably include: Common sense and structured approach to problems (finding and asking the right questions), likes to test/reproduce weird things in dark dusty corners of software applications, loves details without being pedantic, is well-organized when it comes to sorting and prioritizing large amounts of (bug)mail, is interested in the organization of large projects (many stakeholders, many subprojects), basic understanding of code concepts in general.

For more information, please read the Bug management documentation on our wiki (especially the Triage Guide), "Why everyone needs a bugmaster" and give triaging reports in Wikimedia a try! --Malyacko (talk) 13:34, 20 November 2012 (UTC)

Consolidate the Git / Gerrit documentation
With the move from SVN to Git our related documentation has just exploded. See Git, Gerrit, Special:PrefixIndex/Git and Bug 36437 - A strict and correct Git workflow document is needed to get an idea of the mess. What we need is a single landing page pointing to the essential resources and a sensible list of comprehensive and correct pages describing what contributors need to know. This work requires familiarity with Git and Gerrit, although you don't need to be an expert. It's actually more useful to be a tester of the docs and processes yourself. Of course good knowledge of written English is required. We are looking for the right mentor, but in the meantime you can contact Quim Gil.--Qgil (talk) 17:44, 27 November 2012 (UTC)

The definitive landing place for new contributors
Getting involved in the MediaWiki community is not simple, and the problem starts with the unclear landing places. There is mediawiki.org homepage, Developer hub, Wikimedia developer hub, How to become a MediaWiki hacker and probably more. All in all they focus a lot on MediaWiki core and extensions development, when there is a lot more programmers can do these days, and plenty more than other types of contributors (testers, sysadmins, writers, promoters...) can help on. The project would focus on an engaging landing page, updating and improving current relevant pages and creating new pages if needed. We are looking for the right mentor, but in the meantime you can contact Quim Gil.--Qgil (talk) 18:09, 27 November 2012 (UTC)

Improving the skinning experience
Research how to make the development of skins for MediaWiki easier. Many users complain about the lack of modern skins for MediaWiki and about having a hard time with skin development and maintenance. Often sys admins keep old versions of MediaWiki due to incompatibility of their skins, which introduces security issues and prevents them from using new features. However, little effort was done to research the exact problem points. The project could include improving skinning documentation,organizing training sprints/sessions, talking to users to identify problems, researching skinning practices in other open source platforms and suggesting an action plan to improve the skinning experience.

Extension pages management
Extensions on mw.org are not very well organized and finding the right extension is often difficult. The community needs better management of extension pages with categorization, ratings on code quality, security, usefulness, ease of use, etc. Good extensions should be given more visibility. “Featured extensions” similar to featured articles could be introduced.The compatibility of extensions with different MW versions should be clearly displayed and possibly compatibility testing should be automated. In terms of implementation, some suggest using SMW for the organization of the data and Article Feedback for rating. Developers should be able to add a PayPal account link to fund the maintenance of their extensions. Note: This project should probably be implemented by someone with a lot of experience with MediaWiki, maybe a core developer. An intern could work on pre-implementation work such as collection of requirements and detailed design/specification.