What can I do for Mozilla
whatcanidoformozilla.org
whatcanidoformozilla.org
Only yesterday, I was browsing this page: https://www.mozilla.org/en-US/contribute/ (How to get involved with Mozilla). I'm a non-English web designer so I thought "Maybe I could help with something". I find this page more helpful than http://www.whatcanidoformozilla.org/ because it covers a lot of areas. Even if you're just a Firefox user with no web development/design knowledge, you can help spread the word, or translate stuff, or become a software tester.
Maybe "What can I do for Mozilla" could include these aspects and turn the website into a step-by-step wizard that would ask questions such as "What are you?" with these following options: developer/designer/writer/publisher/user for example.
<link title="Bird's Eye View" href="plain.css" type="text/css" rel="alternate stylesheet">
Amazing! I've been writing CSS for the last 6 years (as my job mainly), and I've never heard of alternate stylesheets. I wonder how many of them I've missed.The only time I provided different styles for the same web page was by adding a class to the body tag, and modifying it using JavaScript.
https://chrome.google.com/webstore/detail/style-chooser/daod...
I know a ton of developers (whom you might call backend developers) that can do great design work with little effort. Especially with tools like SCSS and/or compass/bourbon.
Having somebody who has only just learnt how to code contributing to a massive codebase is in nobody's best interests. All this will do is increase the workload of the developers who have to review the potentially crap code and, on top of that, it removes a potential contributor from an area where they could contribute far more valuable resources in a domain in which they actually have experience.
Suggesting that the op picks up an additional skill in their spare time is fine, but not at the expense of being able to contribute in an area where they already clearly have experience.
You have managed to insult both programmers and designers with this statement. Yes, there are people who program and design. Yes, to some people its easy to go from one thing to the other. But neither skill is nowhere near each other.
We are also hoping to do a design contest soon for people to play with the data and come up with new useful visualizations.
I'm a full time JS/canvas dev, but I greatly enjoy helping others and writing tutorials, so I've spent my spare time doing just that. (At my peak I had answered more than 10% of all canvas questions ever asked on StackOverflow. I'm putting that in my resume under "poor time management".)
I had to stop SO/tut writing last June because of a book deal, but I'm very nearly done, and sites like this inspire me to return to "contributing" to the web. In a lot of ways, I can't wait.
I had considered taking some time off my job to do nothing but make JS tutorials, and try to make some "Bob Ross"-style learn to program with JS videos, update the MDN, and hold office hours in StackOverflow chat.
My "dream job" would be doing something like that full-time, maybe for a year, but I can't really afford to quit work for more-or-less charitable web stuff just yet. Someday though, probably in a couple years, I'll have the money to "buy" the time.
Nice touch.
I wish open source projects would openly solicit help with things like 1) Writing tests 2) Writing documentation and tutorials 3) Bug finding and reporting 4) Bug report maintenance and management 5) Porting to new platforms
Not everybody is capable or willing to work on the stuff that devs find glamorous...and a project has no chance of real success without the things I mentioned.
My attempt at providing helpful links for your requests (and ignoring the problem of whatcanidoformozilla.org not having this stuff):
1. There's probably better resources for QA for the browser and other Mozilla projects, but the WebQA is awesome at working with contributors and getting them to help on real projects (I've worked on website releases where 100% of our QA and bug verification was done by contributors): https://quality.mozilla.org/teams/web-qa/
2. MDN is the biggest place contribution like this happens: https://developer.mozilla.org/en-US/docs/Project:How_to_Help
3. This seems like a decent resource, specifically the bug reporting guidelines: https://developer.mozilla.org/en-US/docs/Mozilla/QA
4. I'm not sure about this one; A lot of triage happens by the teams working on a specific project, as managing these bugs requires a lot of domain knowledge. Closest link I could find was how to contribute to Bugzilla itself: http://www.bugzilla.org/contribute/
5. This looks like an outdated page (updated February 1st, 2012!) but it has some info on ports. I would recommend joining the #developers channel on the Mozilla IRC and asking around. In general the larger IRC channels will help point you in the right direction.
Languages:
- C
- C++
- C++ (Firefox)
- Java
- JavaScript
- PHP
- Python
- Rust
C So you think OOP is for hipsters?
That's cool, we all get nostalgic sometimes. You could work on:
- NSS: The network security pieces of Firefox
https://developer.mozilla.org/en-US/docs/Getting_Started_With_NSS
C++ So you like long compile times and incomprehensible error messages?
That's cool, we do too. You could work on:
- Gecko: The engine that drives Firefox
See: C++ (Firefox)
- Boot2Gecko: The operating system for Android phones built on web technologies
https://wiki.mozilla.org/B2G/Hacking
- Thunderbird: The open source email client
http://developer.mozilla.org/En/Simple_Thunderbird_build
- Seamonkey: The open source web productivity suite
http://www.seamonkey-project.org
- v8monkey: Implementing the v8 API on top of Spidermonkey
http://github.com/zpao/v8monkey
- emscripten: Creating a LLVM-to-JS system to allow porting native code to the web
https://github.com/kripken/emscripten/
- SVG Project: Help with the implementation and testing of Mozilla's
Scalable Vector Graphics engine (https://developer.mozilla.org/en-US/docs/SVG)
https://wiki.mozilla.org/SVG:Contribute
- Windows 8 Integration: The Metro-style enabled desktop browser for Windows 8
https://wiki.mozilla.org/Firefox/Windows_8_Integration
See 3.3 Platform Integration Windows 8 Development
- MathML: Display and represent math formulas on the web
https://wiki.mozilla.org/MathML:Home_Page
C++ (Firefox) That's cool, but not very specific. You could work on:
- General Firefox work: I don't really care about the details
http://developer.mozilla.org/En/Introduction
- Graphics: Lots of work with OpenGL, DirectX, and Skia making things draw quickly
https://wiki.mozilla.org/Platform/GFX/Contribute
- Accessibility:
Make the web more accessible for users using
assistive technologies (eg. screenreaders)
https://wiki.mozilla.org/Accessibility/Contribute
- Networking: Tcp, http, ssl/tls, spdy, and more
http://wiki.mozilla.org/Networking
- Spidermonkey:
The JavaScript engine: if you like compilers, interpreters, JITs, and more
https://wiki.mozilla.org/JavaScript:New_to_SpiderMonkey
JavaScript So you're a dynamic individual who thinks that, underneath,
everything is an object? That's cool, we like to dream as well.
You could work on:
- Firefox: Did you know that all of the UI is written in JS?
See: JavaScript (Firefox)
- Mobile Firefox:
It's the Gecko engine, with an Android-specific UI. No Android device required.
https://wiki.mozilla.org/Mobile/Get_Involved
- pdf.js: A PDF viewer written entirely in JavaScript
https://wiki.mozilla.org/PDF.js
- Shumway: a Flash player written entirely in JavaScript
https://github.com/mozilla/shumway/wiki
- The addon SDK: The foundation upon which all new kick-ass addons are built
https://wiki.mozilla.org/Jetpack
- Gaia: the default UI for the web-based mobile operating system Boot2Gecko
https://wiki.mozilla.org/Gaia
- DXR: The intelligent source code indexing system
http://github.com/mozilla/dxr
- Thunderbird: The open source email client
http://developer.mozilla.org/En/Simple_Thunderbird_build
- Seamonkey: The open source web productivity suite
http://www.seamonkey-project.org
- Web development: We have many large, complicated projects that use JavaScript
https://blog.mozilla.com/webdev/get-involved/
- Popcorn: Create interactive media pages that seamlessly integrate video,
audio, and traditional web technologies
http://www.benmoskowitz.com/?p=527
- Windows 8 Integration:
The front end for the Metro-style enabled desktop browser for Windows 8
https://wiki.mozilla.org/Firefox/Windows_8_Integration
See 3.2 Front End Windows 8 Development
- Persona: Implement a new way to safely and easily sign into websites
https://wiki.mozilla.org/Persona
JavaScript (Firefox) Good choice - there are a lot of different areas if you'd like to specialize.
You could work on:
- Firefox in general - I don't really care:
http://developer.mozilla.org/En/Introduction
- Developer tools:
Implement a suite of tools similar to Firebug directly in the browser
https://wiki.mozilla.org/DevTools/GetInvolved
- Sync: Help users take their personal browsing data on the road
https://wiki.mozilla.org/Services/Sync#Get_Involved
Java So you're a believer in AbstractMethodFactoryBeans?
That's cool, we all have our vices. You could work on:
- Mobile Firefox:
It's the Gecko engine, with an Android-specific UI. No Android device required.
https://wiki.mozilla.org/Mobile/Get_Involved
- Rhino: It's Spidermonkey in Java. Is this actually still a thing?
https://developer.mozilla.org/en-US/docs/Rhino
PHP So you like your variable names to include dollar signs?
That's cool, everyone misses Perl once in a while. You can work on:
- WordPress: The code that runs our blogs (http://blog.mozilla.org)
https://wiki.mozilla.org/Webdev/GetInvolved/WordPress
- Marketplace: The PHP client for Marketplace (https://marketplace.firefox.com)
https://github.com/mozilla/Marketplace.PHP
- The Mediawiki-Bugzilla plugin:
The Bugzilla plugin for Mozilla's MediaWiki https://wiki.mozilla.org
https://github.com/mozilla/mediawiki-bugzilla
Python So you enjoy the paradigm of backtrace-driven development?
That's cool, everyone gets a bit tired of static typing once in a while.
You can work on:
- Firefox: Lots of code is generated by python scripts
http://developer.mozilla.org/En/Introduction
- Web development: We have many large, complicated projects written in Python
https://blog.mozilla.com/webdev/get-involved/
- DXR: The intelligent source code indexing system
http://github.com/mozilla/dxr
- Tools & Automation:
Various projects to facilitate easier automated testing of products
https://wiki.mozilla.org/Auto-tools/New_Contributor
Rust The new systems programming language created by Mozilla.
- Rust: http://www.rust-lang.orgDidn't realise NSS was part of the Mozilla project, might start having a read of the bugtracker and see what there is :D
um, okay.
edit: oh, nvm, they're just making fun of all the languages
I'm almost certain we know about it after the last time it hit Hacker News, and given the amount of people contributing to it (https://github.com/jdm/asknot/commits/master) there's at least some level of effort in making it better, but it probably doesn't have priority over official entry points for contribution, like http://www.mozilla.org/en-US/contribute/
i also think that maybe it must have something to young folks entering in the world of technology.. they maybe dont even know any specific computer language..
Something more passion focused.. like "how about to build the nextgen mobile os?" then point to boot2gecko..
Then map some sort of profile.. like if the guy is more focused in system programming, or more visual programming.. or more artistic focused..
After profiling the user will be more easy to point him to the projects he is more likelly to contribute..
anyway, very cool and inspiring initiative.
My biggest issue right now is when do I work on it? Is it just in my spare time? Are people able to work on Linux in their spare time?
I'm not really sure how it all works to be honest. And if I commit/push an update, how does it eventually end up in Firefox?
The problem as I see it is I can click through a few buttons and then I get to the last "Tell me More" and it points me to a wiki page, with lots of missing sections, half paragraphs, unfinished bullet points etc. Then there is a link to a bugtracker, on a different domain, with no introduction text, then contributing to the source code is on a different site, with yet another profile to fill in (Once you have gone through the Wiki, Bug Tracker ++ !)
Actually I guess my main problem is lack of concise, consistent "Getting Started" documentation (Not just Mozilla, nearly every project - in fact Mozilla is far better than many!). Yes, I could read through pages and pages of wiki but, let's be honest, it's ugly and in some cases badly organized - it just gets the job done (let's somebody who is interested in getting involved in that project find some information they need to bootstrap themselves), rather than lure in new developers.
I know many, many excellent developers who would love to try their hand at open source, but simply are not going to spend the hours/days necessary to trek through wiki articles to find what they need, especially on projects they barely know about (Mozilla's Build and Automation tools for example - not public facing, but many many devs have an interest in this area and would love to work on something like that)
In an attempt not to just complain, I will offer a few ideas, please steal, iterate and implement!
A Dashboard - What are people working on, talking about, planning to do now? What are their blockers? I see so many projects with a Project Website, Wiki, Development Wiki, Bug Tracker, Source Code, Road Map, Discussion Forums etc. All with different branding, not linked together and without actually finding the default page you become lost.
Digging further, who are these people, what parts have they worked on? Who can I ask about a certain section of code (git annotate?)
Bring developers, testers, writers, artists, support etc. together in one place. When a new feature is being planned, be able to co-ordinate, form a mini strike team and go!
Build a style and a community. I see far too many default Bugzilla themes in open source projects. Which is great and fine when you are small and starting out and need to keep track, for someone new wondering around your docs suddenly faced with a blank bugzilla theme with zero branding information anywhere.
To summarize: Bigger projects need to do the follow to their on boarding new contributors documentation:
Have It. Brand It. Simplify It.
(And yes I know, the problem is time and money! But one can dream...)
(PS, If there are any projects that would like a C++ programmer with a passion for documentation, give me a shout!)
I love getting pull requests!