45 | Failed to parse stack trace. Stack trace information
46 | unavailable.
47 |
48 |
49 |
50 |
51 | );
52 | }
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/.taskcluster.yml:
--------------------------------------------------------------------------------
1 | version: 1
2 | reporting: checks-v1
3 | policy:
4 | pullRequests: public
5 | tasks:
6 | $let:
7 | head_rev:
8 | $if: 'tasks_for == "github-pull-request"'
9 | then: ${event.pull_request.head.sha}
10 | else: ${event.after}
11 | repository:
12 | $if: 'tasks_for == "github-pull-request"'
13 | then: ${event.pull_request.head.repo.html_url}
14 | else: ${event.repository.html_url}
15 | in:
16 | $map:
17 | - name: yarn test
18 | image: node:16.18.1
19 | command: >-
20 | yarn --frozen-lockfile &&
21 | yarn test
22 | - name: yarn build
23 | image: node:16.18.1
24 | command: >-
25 | yarn --frozen-lockfile &&
26 | BUGZILLA_ENDPOINT=fake GITHUB_PERSONAL_API_TOKEN=fake yarn build
27 | - name: yarn lint
28 | image: node:16.18.1
29 | command: >-
30 | yarn --frozen-lockfile &&
31 | yarn lint
32 | each(opts):
33 | provisionerId: 'proj-misc'
34 | workerType: 'ci'
35 | created: {$fromNow: ''}
36 | deadline: {$fromNow: '1 hour'}
37 | payload:
38 | maxRunTime: 3600
39 | image: "${opts.image}"
40 | env:
41 | CI: "true"
42 | command:
43 | - /bin/bash
44 | - '--login'
45 | - '-c'
46 | - >-
47 | git clone ${repository} repo &&
48 | cd repo &&
49 | git config advice.detachedHead false &&
50 | git checkout ${head_rev} &&
51 | ${opts.command}
52 | metadata:
53 | name: "${opts.name}"
54 | description: Codetribute CI
55 | owner: nobody@mozilla.com
56 | source: https://github.com/mozilla-frontend-infra/codetribute
57 |
--------------------------------------------------------------------------------
/src/components/FontStager/index.css:
--------------------------------------------------------------------------------
1 | @font-face {
2 | font-family: Roboto400;
3 | src:
4 | url('~typeface-roboto/files/roboto-latin-400.woff2') format('woff2'),
5 | url('~typeface-roboto/files/roboto-latin-400.woff') format('woff');
6 | font-weight: 400;
7 | font-style: normal;
8 | }
9 | @font-face {
10 | font-family: Roboto300;
11 | src:
12 | url('~typeface-roboto/files/roboto-latin-300.woff2') format('woff2'),
13 | url('~typeface-roboto/files/roboto-latin-300.woff') format('woff');
14 | font-weight: 300;
15 | font-style: normal;
16 | }
17 | @font-face {
18 | font-family: Roboto500;
19 | src:
20 | url('~typeface-roboto/files/roboto-latin-500.woff2') format('woff2'),
21 | url('~typeface-roboto/files/roboto-latin-500.woff') format('woff');
22 | font-weight: 500;
23 | font-style: normal;
24 | }
25 |
26 | /*
27 | The purpose of defining class stages is to
28 | re-render once a stage has been met. We start
29 | with the minimal default stage of sans-serif,
30 | and progressively re-render.
31 | */
32 | html, body {
33 | font-family: sans-serif;
34 | font-weight: 400;
35 | -webkit-font-smoothing: antialiased;
36 | color: rgba(255, 255, 255, 0.7);
37 | }
38 |
39 | /*
40 | The defined stages now modify the display of
41 | elements once they are loaded.
42 | */
43 |
44 | /*
45 | During primary stage we only load the Roboto font.
46 | Once it's loaded, update the body to use it.
47 | */
48 | .font-stage-primary html,
49 | .font-stage-primary body {
50 | font-family: Roboto400, sans-serif;
51 | }
52 |
53 | /* Prevent the secondary fonts from being tree-shaken away */
54 | .font-stage-secondary .roboto300 {
55 | font-family: Roboto300, sans-serif;
56 | }
57 | .font-stage-secondary .roboto500 {
58 | font-family: Roboto500, sans-serif;
59 | }
60 |
--------------------------------------------------------------------------------
/src/components/Sidebar/JavaIcon.jsx:
--------------------------------------------------------------------------------
1 | import React, { PureComponent } from 'react';
2 |
3 | export default class JavaIcon extends PureComponent {
4 | render() {
5 | const { className, fill, size } = this.props;
6 |
7 | return (
8 |
15 | );
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/src/data/mdn.yaml:
--------------------------------------------------------------------------------
1 | name: MDN Web Docs
2 | summary: Get involved with the [MDN Community](https://developer.mozilla.org/en-US/docs/MDN/Getting_started)
3 | introduction: |
4 | ## About MDN Web Docs
5 |
6 | MDN Web Docs is an evolving learning platform for Web technologies and software that power the Web, including HTML, CSS, JavaScript and the various web standards and APIs.
7 |
8 | ## Who Works on MDN?
9 |
10 | We are an open community of developers and writers building resources for a better Web, regardless of brand, browser, or platform.
11 | Anyone can contribute and each person who does makes us stronger.
12 |
13 | ## How Do I Get Started?
14 |
15 | You can just go ahead and pick one of the beginner-friendly tasks listed below.
16 | All the tasks listed below have mentors assigned to them and besides that, there is an extremely friendly and supportive community of contributors always willing to help.
17 | If you would like to know more about MDN and how to help out in general, check out our [Getting Started](https://developer.mozilla.org/en-US/docs/MDN/Getting_started) page.
18 |
19 | ## How Do I Get Help?
20 |
21 | The best place to get help are the [MDN Discourse channel](https://discourse.mozilla.org/c/mdn) or the `#mdn:mozilla.org` [Matrix](https://wiki.mozilla.org/Matrix) channel.
22 |
23 | products:
24 | - Developer Documentation: ['Accessibility', 'Add-ons', 'API: CSSOM', 'API: Device API', 'API: DOM', 'API: File API', 'API: HTML', 'API: IndexedDB', 'API: Miscellaneous', 'API: SVG', 'API: Web Animations', 'API: Web Audio', 'API: Web Sockets', 'API: Web Workers', 'API: WebRTC', 'Apps', 'CSS', 'Developer Tools', 'Emscripten', 'Games', 'General', 'HTML', 'JavaScript', 'Learning Area', 'Localization', 'Macros/Templates', 'Marketplace', 'MathML', 'MDN Meta Docs', 'Mozilla Platform', 'Protocols', 'Security', 'SVG']
25 |
--------------------------------------------------------------------------------
/src/data/firefox-ios.yml:
--------------------------------------------------------------------------------
1 | name: Firefox for iOS
2 | summary: Firefox mobile experience developed for the iOS platform.
3 | icon: cellphone
4 | introduction: |
5 | ## About Firefox for iOS
6 |
7 | Firefox for iOS is the Firefox mobile experience brought to iPhones and iPads, written in Swift.
8 |
9 | ## How Do I Get Started?
10 |
11 | Check out our list of [good first issues](https://github.com/mozilla-mobile/firefox-ios/issues?q=is%3Aissue+is%3Aopen+label%3A%22Contributor+OK+%F0%9F%A4%9D%22) on Github.
12 | Pick one that interests you and then follow [these instructions](https://github.com/mozilla-mobile/firefox-ios#building-the-code) to build the project.
13 |
14 |
15 | ### How Do I Write the Code?
16 |
17 | All of the code is in the [Github repository](https://github.com/mozilla-mobile/firefox-ios).
18 | To get started, fork that repository on GitHub, then clone the resulting forked repository to your computer.
19 | Before you change anything, run the tests to make sure everything is working.
20 | The repository's README file will describe how to set up and run tests.
21 | From there, follow the Github pull-request process: make your changes on a topic branch, and then create a pull request from that branch.
22 | The Internet is full of guides for this process, and of course we are happy to help as well.
23 |
24 | ## How Do I Get Help?
25 |
26 | The best place to talk about a bug or issue is in the comments.
27 | Don't be afraid to ask questions or describe how you are solving the problem.
28 | That way, anyone watching the bug can answer your questions or offer useful advice.
29 |
30 | We are also available on [matrix.io](https://chat.mozilla.org/#/room/#firefox-ios:mozilla.org) in the `#firefox-ios` channel in the mozilla.org community.
31 | That's a great place to get quick help or work through issues.
32 |
33 | repositories:
34 | - mozilla-mobile/firefox-ios : 'Contributor OK'
35 |
--------------------------------------------------------------------------------
/public/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
12 |
13 |
17 |
18 |
27 | Codetribute
28 |
29 |
30 |
31 |
32 |
42 |
43 |
44 |
--------------------------------------------------------------------------------
/src/data/pontoon.yaml:
--------------------------------------------------------------------------------
1 | name: Pontoon
2 | summary: Mozilla's Localization Platform
3 | introduction: |
4 | ## About Pontoon
5 |
6 | Pontoon is a localization platform used and developed by the Mozilla’s localization community.
7 | It is critical to shipping Firefox, mozilla.org, and many other Mozilla products to millions of users, all around the world.
8 | It is written in Javascript and Python and has lots of opportunities to help out.
9 |
10 | You can learn a bit about Pontoon in its [documentation](https://mozilla-pontoon.readthedocs.io/).
11 |
12 | ## Who Works on Pontoon?
13 |
14 | The team assigned to work on Pontoon at Mozilla is listed on
15 | [our people page](https://mozilla-pontoon.readthedocs.io/en/latest/dev/first-contribution.html#communicate-with-us).
16 | We also receive invaluable help from community members.
17 | You will likely see the names of team members listed as mentors in the bugs on this site.
18 | We are always excited to meet new Mozillians!
19 |
20 | ## How Do I Get Started?
21 |
22 | To help you get started with contributing, we wrote
23 | [The Guide to your First Contribution to Pontoon](https://mozilla-pontoon.readthedocs.io/en/latest/dev/first-contribution.html).
24 | It contains all the information you need to know to install Pontoon, populate its database, run tests, and send your contribution.
25 |
26 | ## How Do I Get Help?
27 |
28 | The best place to talk about a bug is in the comments.
29 | Don't be afraid to ask questions or describe how you are solving the problem.
30 | That way, anyone watching the bug can answer your questions or offer useful advice.
31 | Each bug has a mentor, and that person will usually be the one to reply.
32 |
33 | We are also available on [chat.mozilla.org](https://chat.mozilla.org/#/room/#pontoon:mozilla.org) in the `#pontoon` channel.
34 | That's a great place to get quick help or work through issues together.
35 |
36 | products:
37 | - Webtools: ['Pontoon']
38 |
--------------------------------------------------------------------------------
/src/components/Sidebar/GoIcon.jsx:
--------------------------------------------------------------------------------
1 | import React, { PureComponent } from 'react';
2 |
3 | export default class GoIcon extends PureComponent {
4 | render() {
5 | const { className, fill, size } = this.props;
6 |
7 | return (
8 |
22 | );
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/config/getHttpsConfig.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | const fs = require('fs');
4 | const path = require('path');
5 | const crypto = require('crypto');
6 | const chalk = require('react-dev-utils/chalk');
7 | const paths = require('./paths');
8 |
9 | // Ensure the certificate and key provided are valid and if not
10 | // throw an easy to debug error
11 | function validateKeyAndCerts({ cert, key, keyFile, crtFile }) {
12 | let encrypted;
13 | try {
14 | // publicEncrypt will throw an error with an invalid cert
15 | encrypted = crypto.publicEncrypt(cert, Buffer.from('test'));
16 | } catch (err) {
17 | throw new Error(
18 | `The certificate "${chalk.yellow(crtFile)}" is invalid.\n${err.message}`
19 | );
20 | }
21 |
22 | try {
23 | // privateDecrypt will throw an error with an invalid key
24 | crypto.privateDecrypt(key, encrypted);
25 | } catch (err) {
26 | throw new Error(
27 | `The certificate key "${chalk.yellow(keyFile)}" is invalid.\n${
28 | err.message
29 | }`
30 | );
31 | }
32 | }
33 |
34 | // Read file and throw an error if it doesn't exist
35 | function readEnvFile(file, type) {
36 | if (!fs.existsSync(file)) {
37 | throw new Error(
38 | `You specified ${chalk.cyan(
39 | type
40 | )} in your env, but the file "${chalk.yellow(file)}" can't be found.`
41 | );
42 | }
43 | return fs.readFileSync(file);
44 | }
45 |
46 | // Get the https config
47 | // Return cert files if provided in env, otherwise just true or false
48 | function getHttpsConfig() {
49 | const { SSL_CRT_FILE, SSL_KEY_FILE, HTTPS } = process.env;
50 | const isHttps = HTTPS === 'true';
51 |
52 | if (isHttps && SSL_CRT_FILE && SSL_KEY_FILE) {
53 | const crtFile = path.resolve(paths.appPath, SSL_CRT_FILE);
54 | const keyFile = path.resolve(paths.appPath, SSL_KEY_FILE);
55 | const config = {
56 | cert: readEnvFile(crtFile, 'SSL_CRT_FILE'),
57 | key: readEnvFile(keyFile, 'SSL_KEY_FILE'),
58 | };
59 |
60 | validateKeyAndCerts({ ...config, keyFile, crtFile });
61 | return config;
62 | }
63 | return isHttps;
64 | }
65 |
66 | module.exports = getHttpsConfig;
67 |
--------------------------------------------------------------------------------
/src/components/SearchBox/index.jsx:
--------------------------------------------------------------------------------
1 | import React, { Component } from 'react';
2 | import { withStyles } from '@material-ui/core/styles';
3 | import { fade } from '@material-ui/core/styles/colorManipulator';
4 | import MagnifyIcon from 'mdi-react/MagnifyIcon';
5 |
6 | export default
7 | @withStyles((theme) => ({
8 | root: {
9 | marginLeft: 15,
10 | marginRight: 15,
11 | marginTop: 25,
12 | background: theme.palette.common.white,
13 | borderRadius: 2,
14 | '&:hover': {
15 | background: fade(theme.palette.common.white, 0.9),
16 | },
17 | },
18 | search: {
19 | width: theme.spacing(6),
20 | height: '100%',
21 | paddingTop: 5,
22 | paddingLeft: 5,
23 | position: 'absolute',
24 | pointerEvents: 'none',
25 | alignItems: 'center',
26 | justifyContent: 'center',
27 | verticalAlign: 'text-bottom',
28 | '& svg': {
29 | fill: fade(theme.palette.common.black, 0.9),
30 | },
31 | },
32 | input: {
33 | width: `calc(100% - ${theme.spacing(6)}px)`,
34 | font: 'inherit',
35 | paddingTop: theme.spacing(1),
36 | paddingRight: theme.spacing(1),
37 | paddingBottom: theme.spacing(1),
38 | paddingLeft: theme.spacing(6),
39 | border: 0,
40 | display: 'block',
41 | whiteSpace: 'normal',
42 | background: 'none',
43 | margin: 0, // Reset for Safari
44 | color: fade(theme.palette.common.black, 0.5),
45 | '&:focus': {
46 | color: fade(theme.palette.common.black, 0.9),
47 | outline: 0,
48 | },
49 | },
50 | }))
51 | class Search extends Component {
52 | render() {
53 | const { classes, value, onChange, ...props } = this.props;
54 |
55 | return (
56 |
66 | );
67 | }
68 | }
69 | export default DataTable;
70 |
--------------------------------------------------------------------------------
/src/data/fenix.yaml:
--------------------------------------------------------------------------------
1 | name: Firefox for Android
2 | summary: Firefox for Android (internal code name "Fenix") is a browser for Android, based on Mozilla's GeckoView and Android Components.
3 | icon: target
4 | introduction: |
5 | ## About Fenix
6 |
7 | Firefox for Android (internal code name "Fenix") is a browser for Android, based on Mozilla's GeckoView and Android Components.
8 |
9 | ## How Do I Get Started?
10 |
11 | You will need a Bugzilla account. Some Fenix bugs also require a GitHub account to submit the PR. Comment in the bug to say that you are working on it, and ask any questions
12 | that you have at that time.
13 | Look at the other comments, look at the documentation and source code, and try to figure out as much as you can first.
14 | This helps you learn more about Fenix and understand better the bug you're fixing or feature you're adding.
15 |
16 | ### How Do I Write the Code?
17 |
18 | - First, follow the instructions in the [Firefox Contributors’ Quick Reference](https://firefox-source-docs.mozilla.org/contributing/contribution_quickref.html) to build the Firefox Android code on your own computer and test it in an Android emulator or device.
19 | - Start by looking for Bugzilla bugs marked with the `good-first-bug` keyword.
20 | - Comment on the bug if you would like to work on it.
21 | - When you open a pull request, please also attach a screenshot if there are UI changes, so UX can also do a visual review.
22 | - The first line of your commit messages should being with `Bug # - `, so your PR is auto-linked to the bug.
23 |
24 | ## How Do I Get Help?
25 |
26 | The best place to talk about a bug is in the comments.
27 | Don't be afraid to ask questions or describe how you are solving the problem.
28 | That way, anyone watching the bug can answer your questions or offer useful advice.
29 | Each bug has a mentor, and that person will usually be the one to reply.
30 |
31 | Join the [`#fenix:mozilla.org` channel](https://chat.mozilla.org/?#/room/#fenix:mozilla.org) on [Matrix](https://wiki.mozilla.org/Matrix) and get in contact with us. We're available Monday-Friday, during GMT and PST working hours.
32 | That's a great place to get quick help or work through bugs with Git or Kotlin.
33 |
34 | products:
35 | - Fenix
36 | - GeckoView
37 |
--------------------------------------------------------------------------------
/src/images/projectIcons/rust.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/components/ProjectIntroductionCard/index.jsx:
--------------------------------------------------------------------------------
1 | import React, { Component } from 'react';
2 | import classNames from 'classnames';
3 | import { withStyles } from '@material-ui/core/styles';
4 | import Card from '@material-ui/core/Card';
5 | import CardActions from '@material-ui/core/CardActions';
6 | import CardContent from '@material-ui/core/CardContent';
7 | import Typography from '@material-ui/core/Typography';
8 | import Collapse from '@material-ui/core/Collapse';
9 | import Button from '@material-ui/core/Button';
10 | import Markdown from 'react-markdown';
11 |
12 | export default
13 | @withStyles(
14 | (theme) => ({
15 | cardAction: {
16 | position: 'absolute',
17 | bottom: 0,
18 | },
19 | fadeout: {
20 | background: 'linear-gradient(to bottom, transparent 0%, white 42%)',
21 | right: 0,
22 | left: 0,
23 | bottom: 0,
24 | height: theme.spacing(13),
25 | position: 'absolute',
26 | },
27 | card: {
28 | position: 'relative',
29 | },
30 | }),
31 | { withTheme: true }
32 | )
33 | class ProjectIntroductionCard extends Component {
34 | state = { open: false };
35 |
36 | handleButtonClick = () => {
37 | this.setState({
38 | open: !this.state.open,
39 | });
40 | };
41 |
42 | linkRenderer = (props) => (
43 |
44 | {props.children}
45 |
46 | );
47 |
48 | render() {
49 | const { classes, introduction, theme } = this.props;
50 | const { open } = this.state;
51 | const collapsedHeight = `${theme.spacing(28)}px`;
52 |
53 | return (
54 |
55 |
56 | {!open && }
57 |
58 |
59 | {introduction}
60 |
61 |
62 |
66 |
69 |
70 |
71 |
72 | );
73 | }
74 | }
75 |
--------------------------------------------------------------------------------
/src/data/treeherder.yaml:
--------------------------------------------------------------------------------
1 | name: Treeherder
2 | summary: Dashboard for tracking Continous Integration builds and tests, performance data and intermittent test failures
3 | icon: pine-tree
4 | introduction: |
5 | ## About Treeherder
6 | Treeherder is a reporting dashboard for code submitted to Mozilla projects (such as the mozilla-central repository) that
7 | allows users to see the results of automatic builds and their respective tests. Treeherder also provides a set of APIs
8 | that can be used by other projects. It hosts smaller dashboards such as Perfherder, used for tracking performance data,
9 | and Intermittent Failures View, which is used to track intermittent test failures. The website can be found
10 | [here](https://treeherder.mozilla.org/).
11 |
12 | ## Who Works on Treeherder?
13 | Treeherder is composed of a small team that is distributed across the UK and the west coast of the US.
14 |
15 | ## How Do I Get Started?
16 | Select a bug in Bugzilla (we do not keep track of issues in Github, only in Bugzilla) that you'd like to work on.
17 | You may need to [create a new account](https://bugzilla.mozilla.org/createaccount.cgi). Comment in the bug or issue
18 | stating that you'd like to work on it. Please do as much research on your own first, including looking at existing
19 | bug comments and source code, before asking questions. Then follow the instructions in the Getting Started section
20 | of the [Treeherder docs](https://treeherder.readthedocs.io/index.html) to clone the Github repo and set up your local
21 | development environment.
22 |
23 | ### How Do I Write the Code?
24 |
25 | Once you have created your patch, submit a pull request with a commit message containing the bug number that you were
26 | assigned along with a description and summary of the change (example, Bug 123456 - Add breadcrumb component to clarify where users are in the app).
27 | This ensures an attachment with your patch is added to the bug in Bugzilla and your changes are clearly outlined in the Git log.
28 | Your code will need to be reviewed by one of the team members before it is merged.
29 |
30 | ## How Do I Get Help?
31 |
32 | You can ask for help in the [Matrix](https://wiki.mozilla.org/Matrix) channel `#treeherder:mozilla.org` or ask a question in the bug you'd like to work on.
33 |
34 | products:
35 | - Tree Management
36 | repositories:
37 | - mozilla/treeherder: ['good first issue', 'help wanted']
38 |
--------------------------------------------------------------------------------
/src/data/webplatform.yaml:
--------------------------------------------------------------------------------
1 | name: Firefox - Platform (Web)
2 | summary: Web Platform consists of Networking, Layout, DOM & CSS Technology, Input Handling, and Media.
3 | icon: layers
4 | products:
5 | - Core: [
6 | 'Audio/Video',
7 | 'Audio/Video: cubeb',
8 | 'Audio/Video: GMP',
9 | 'Audio/Video: MediaStreamGraph',
10 | 'Audio/Video: Playback',
11 | 'Audio/Video: Recording',
12 | 'CSS Parsing and Computation',
13 | 'CSS Transitions and Animations',
14 | 'DOM: Animation',
15 | 'DOM: Bindings (WebIDL)',
16 | 'DOM: Content Processes',
17 | 'DOM: Core & HTML',
18 | 'DOM: CSS Object Model',
19 | 'DOM: Device Interfaces',
20 | 'DOM: Drag & Drop',
21 | 'DOM: Editor',
22 | 'DOM: Events',
23 | 'DOM: File',
24 | 'DOM: Forms',
25 | 'DOM: HTML Parser',
26 | 'DOM: Navigation',
27 | 'DOM: Networking',
28 | 'DOM: Push Notifications',
29 | 'DOM: Security',
30 | 'DOM: Selection',
31 | 'DOM: Serializers',
32 | 'DOM: Service Workers',
33 | 'DOM: UI Events & Focus Handling',
34 | 'DOM: Web Authentication',
35 | 'DOM: Web Crypto',
36 | 'DOM: Web Payments',
37 | 'DOM: Window and Location',
38 | 'DOM: Workers',
39 | 'DOM: postMessage',
40 | 'Find Backend',
41 | 'General',
42 | 'Gecko Profiler',
43 | 'Keyboard: Navigation',
44 | 'Layout',
45 | 'Layout: Block and Inline',
46 | 'Layout: Columns',
47 | 'Layout: Flexbox',
48 | 'Layout: Floats',
49 | 'Layout: Form Controls',
50 | 'Layout: Generated Content, Lists, and Counters',
51 | 'Layout: Grid',
52 | 'Layout: Images, Video, and HTML Frames',
53 | 'Layout: Positioned',
54 | 'Layout: Ruby',
55 | 'Layout: Scrolling and Overflow',
56 | 'Layout: Tables',
57 | 'Layout: Text and Fonts',
58 | 'MathML',
59 | 'Networking',
60 | 'Networking: Cache',
61 | 'Networking: Cookies',
62 | 'Networking: DNS',
63 | 'Networking: File',
64 | 'Networking: Proxy',
65 | 'Networking: HTTP',
66 | 'Networking: JAR',
67 | 'Networking: WebSockets',
68 | 'Performance',
69 | 'Privacy: Anti-Tracking',
70 | 'Storage: IndexedDB',
71 | 'Storage: Cache API',
72 | 'Storage: QuotaManager',
73 | 'Storage: localStorage & sessionStorage',
74 | 'Storage: StorageManager',
75 | 'SVG',
76 | 'Web Audio',
77 | 'Web Painting', # XXX Should maybe be in gfx.yaml? It's half-layout / half-graphics...
78 | 'Web Replay',
79 | 'Web Speech',
80 | 'WebRTC',
81 | 'WebRTC: Audio/Video',
82 | 'WebRTC: Networking',
83 | 'WebRTC: Signaling',
84 | 'WebVR',
85 | 'XML',
86 | 'XSLT'
87 | ]
88 |
--------------------------------------------------------------------------------
/src/data/spidermonkey.yaml:
--------------------------------------------------------------------------------
1 | name: SpiderMonkey
2 | summary: Get involved with SpiderMoney the JavaScript Engine team
3 | introduction: |
4 | ## About SpiderMonkey
5 |
6 | SpiderMonkey, Mozilla's JavaScript engine, is the component responsible for taking JavaScript code written by programmers, and executing it efficiently.
7 |
8 | SpiderMonkey is broken into a number of pieces:
9 |
10 | * **The core JavaScript engine**: Defines the most basic pieces of JavaScript, like the interpreter, data types, the parser etc.
11 | * **The JavaScript standard library**: These are all the extra pieces of JavaScript that make it the language people know as JavaScript.
12 | * **The JIT compilers**: SpiderMonkey has two JIT compilers, Baseline and IonMonkey which work in concert to provide fast execution of JavaScript quickly.
13 |
14 | ## How do I get Started
15 |
16 | To help you get started, you will want to:
17 |
18 | * Have a checkout of the Firefox source code
19 | * Make sure you can build and test [SpiderMonkey](https://firefox-source-docs.mozilla.org/js/build.html)
20 | * Understand [the basics of using Mercurial](https://mozilla-version-control-tools.readthedocs.io/en/latest/hgmozilla/firefoxworkflow.html)
21 | * Understand [how to submit a patch](https://docs.firefox-dev.tools/contributing/making-prs.html)
22 | * Read [this walkthrough](https://moz-conduit.readthedocs.io/en/latest/walkthrough.html) about how development works in Firefox.
23 |
24 | If you are working on a bug (in Bugzilla), you may need to [create a new account](https://bugzilla.mozilla.org/createaccount.cgi).
25 |
26 | Comment in the bug or issue to say that you are working on it, and ask any questions that you have at that time. People who work on SpiderMonkey are available on [Matrix](https://chat.mozilla.org) in the `#spidermonkey` channel, which can be a good way to get help. Please feel free to say 'Hi'
27 |
28 | We really appreciate it if you've done some of your own research:
29 | Look the other comments, look at the documentation and source code, and try to figure out as much as you can first. Don't worry if it isn't all clear though. SpiderMonkey is a complicated piece of software.
30 |
31 | ### Other Useful Links:
32 |
33 | * [New to SpiderMonkey](https://wiki.mozilla.org/JavaScript:New_to_SpiderMonkey)
34 |
35 |
36 | products:
37 | - Core: ['JavaScript Engine', 'JavaScript Engine: JIT', 'JavaScript: GC', 'JavaScript: Internationalization API', 'JavaScript: Standard Library', 'js-ctypes', 'XPConnect']
38 |
--------------------------------------------------------------------------------
/src/components/ProjectCard/index.jsx:
--------------------------------------------------------------------------------
1 | import React, { Component } from 'react';
2 | import { withStyles } from '@material-ui/core/styles';
3 | import { Link } from 'react-router-dom';
4 | import Card from '@material-ui/core/Card';
5 | import CardContent from '@material-ui/core/CardContent';
6 | import Typography from '@material-ui/core/Typography';
7 | import Markdown from 'react-markdown';
8 | import ProjectIcon from '../ProjectIcon';
9 |
10 | export default
11 | @withStyles((theme) => ({
12 | card: {
13 | textAlign: 'center',
14 | position: 'relative',
15 | width: '100%',
16 | height: '100%',
17 | boxShadow: '0 1px 4px 0 rgba(0, 0, 0, 0.25)',
18 | minHeight: 250,
19 | '&:hover, &:focus': {
20 | transform: 'scale(1.05)',
21 | boxShadow: `0 1px 4px 0 ${theme.palette.primary.light}`,
22 | },
23 | },
24 | textAlign: {
25 | textAlign: 'center',
26 | },
27 | projectSummary: {
28 | fontWeight: 300,
29 | padding: theme.spacing(2),
30 | },
31 | projectIcon: {
32 | color: theme.palette.secondary.dark,
33 | },
34 | link: {
35 | textDecoration: 'none',
36 | },
37 | }))
38 | class ProjectCard extends Component {
39 | handleSummaryClick = (event) => {
40 | if (event.target.href) {
41 | event.stopPropagation();
42 | }
43 | };
44 |
45 | linkRenderer = (props) => (
46 |
47 | {props.children}
48 |
49 | );
50 |
51 | render() {
52 | const {
53 | classes,
54 | project: { icon, name, summary, fileName },
55 | } = this.props;
56 |
57 | return (
58 |
59 |
60 |
61 |
62 |
63 | {name}
64 |
65 | {summary && (
66 |
72 | {summary}
73 |
74 | )}
75 |
76 |
77 |
78 | );
79 | }
80 | }
81 |
--------------------------------------------------------------------------------
/src/components/ErrorPanel/index.jsx:
--------------------------------------------------------------------------------
1 | import React, { Component } from 'react';
2 | import classNames from 'classnames';
3 | import Markdown from 'react-markdown';
4 | import { withStyles } from '@material-ui/core/styles';
5 | import Accordion from '@material-ui/core/Accordion';
6 | import AccordionDetails from '@material-ui/core/AccordionDetails';
7 | import AccordionSummary from '@material-ui/core/AccordionSummary';
8 | import Paper from '@material-ui/core/Paper';
9 | import ChevronDownIcon from 'mdi-react/ChevronDownIcon';
10 | import ErrorBox from './ErrorBox';
11 |
12 | export default
13 | @withStyles((theme) => ({
14 | paper: {
15 | padding: `0 ${theme.spacing(2)}px`,
16 | display: 'flex',
17 | justifyContent: 'space-between',
18 | },
19 | pad: {
20 | paddingTop: 9,
21 | paddingBottom: 9,
22 | },
23 | error: {
24 | backgroundColor: theme.palette.error.main,
25 | borderColor: theme.palette.error.light,
26 | marginBottom: theme.spacing(1),
27 | '& svg': {
28 | fill: theme.palette.common.white,
29 | },
30 | },
31 | disabled: {
32 | opacity: 1,
33 | },
34 | heading: {
35 | fontSize: theme.typography.pxToRem(15),
36 | fontWeight: theme.typography.fontWeightRegular,
37 | },
38 | errorText: {
39 | color: theme.palette.common.white,
40 | },
41 | }))
42 | /**
43 | * Render an error in a panel. Will be expandable display stack traces
44 | * when in development
45 | */
46 | class ErrorPanel extends Component {
47 | render() {
48 | const { classes, error } = this.props;
49 | const showStack =
50 | process.env.NODE_ENV === 'development' && error instanceof Error;
51 | const markdown = (
52 |
56 | {typeof error === 'string' ? error : error.message}
57 |
58 | );
59 |
60 | if (!showStack) {
61 | return (
62 |
63 | {markdown}
64 |
65 | );
66 | }
67 |
68 | return (
69 |
70 | }>
73 | {markdown}
74 |
75 |
76 |
77 |
78 |
79 | );
80 | }
81 | }
82 |
--------------------------------------------------------------------------------
/src/logo.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/data/firefox-focus.yaml:
--------------------------------------------------------------------------------
1 | name: Firefox Focus
2 | summary: Firefox Focus is a privacy-focused browser from Mozilla, available for the Apple iPhone, iPad, iPod touch mobile devices and Android smartphones and tablets.
3 | introduction: |
4 | ## About Firefox Focus
5 |
6 | Firefox Focus is a privacy-focused browser from Mozilla, available for the Apple iPhone, iPad, iPod touch mobile devices and Android smartphones and tablets.
7 |
8 | ## How Do I Get Started?
9 |
10 | You will need a Github account. Comment in the bug or issue to say that you are working on it, and ask any questions
11 | that you have at that time. But do your research!
12 | Look the other comments, look at the documentation and source code, and try to figure out as much as you can first.
13 | This helps you learn more about Focus and understand better the bug you're fixing or feature you're adding.
14 |
15 | ### How Do I Write the Code?
16 |
17 | - Start by looking for issues marked with the `good first issue` label
18 | - You can find more challenging issues marked with the `help wanted` label
19 | - Join the `#focus-android:mozilla.org` or `#focus-ios:mozilla.org` channels on [Matrix](https://wiki.mozilla.org/Matrix) and get in contact with us. We're available Monday-Friday, during GMT and PST working hours.
20 | - Comment on the issue if you would like to work on it.
21 | - If you want to work on a new feature then always file an issue first so that all teams (product, ux, engineering) can comment on it and so that it can be assigned to a milestone. Pull requests for unsolicited features are unlikely to get merged.
22 | - When you open a pull request, please also include a screenshot if there are UI changes, so UX can also do a visual review.
23 | - Include a `Closes #` as part of your first commit message so it's auto-linked to the issue.
24 |
25 | ## How Do I Get Help?
26 |
27 | The best place to talk about an issue is in the comments.
28 | Don't be afraid to ask questions or describe how you are solving the problem.
29 | That way, anyone watching the bug can answer your questions or offer useful advice.
30 | Each issue has a mentor, and that person will usually be the one to reply.
31 |
32 | We are also available in the the `#focus-android:mozilla.org` or `#focus-ios:mozilla.org` channels on [Matrix](https://wiki.mozilla.org/Matrix).
33 | That's a great place to get quick help or work through issues with Git, Swift, or Java.
34 | repositories:
35 | - mozilla-mobile/focus-android: ['good first issue', 'help wanted']
36 | - mozilla-mobile/focus-ios: ['good first issue', 'help wanted']
37 |
--------------------------------------------------------------------------------
/src/images/projectIcons/servo.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/config/paths.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | const path = require('path');
4 | const fs = require('fs');
5 | const getPublicUrlOrPath = require('react-dev-utils/getPublicUrlOrPath');
6 |
7 | // Make sure any symlinks in the project folder are resolved:
8 | // https://github.com/facebook/create-react-app/issues/637
9 | const appDirectory = fs.realpathSync(process.cwd());
10 | const resolveApp = relativePath => path.resolve(appDirectory, relativePath);
11 |
12 | // We use `PUBLIC_URL` environment variable or "homepage" field to infer
13 | // "public path" at which the app is served.
14 | // webpack needs to know it to put the right