2022-06-29 17:48:12 +03:00
# Mozilla Protocol
2018-02-21 22:31:08 +03:00
2022-06-29 17:48:12 +03:00
Protocol is a design system for Mozilla and Firefox websites. It establishes a
common design language, provides reusable coded components, and outlines high
level guidelines for content and accessibility.
2018-02-21 22:31:08 +03:00
2018-05-30 16:10:53 +03:00
https://protocol.mozilla.org/
2018-03-21 04:05:07 +03:00
2022-06-29 17:48:12 +03:00
Protocol is still an evolving project. Currently, it’ s used primarily by the
Mozilla Marketing Websites team as the front-end for [www.mozilla.org ](https://www.mozilla.org ).
The long term goal is to provide a robust, unified design system that anyone at
Mozilla can use to build an on-brand website.
2020-08-28 17:32:04 +03:00
2022-06-29 17:48:12 +03:00
If you’ re interested in using Protocol on your project, let us know and we can
help you. You can find us in #protocol -design-system on Mozilla’ s Slack (for
Mozillians) or in #protocol -design-system on [Matrix ](https://chat.mozilla.org/ )
(open to the public). Also feel free to
[file an issue on GitHub ](https://github.com/mozilla/protocol/issues ).
2019-07-10 15:21:05 +03:00
2019-08-16 02:14:24 +03:00
![Current npm package version. ](https://img.shields.io/npm/v/@mozilla-protocol/core )
![Total downloads on npm. ](https://img.shields.io/npm/dt/@mozilla-protocol/core )
![Pull requests welcome! ](https://img.shields.io/badge/PRs-welcome-brightgreen )
2018-05-22 13:33:19 +03:00
## Getting Started
2022-06-29 17:48:12 +03:00
Protocol is built on the [Node.js ](https://nodejs.org/ ) platform and published
to [NPM ](https://www.npmjs.com/ ), so be sure to have both installed before
proceeding.
2018-05-22 13:33:19 +03:00
## Installation
2018-02-21 22:31:08 +03:00
2022-06-29 17:48:12 +03:00
To use Protocol in your website you can install the core package directly from
NPM:
2018-02-21 22:31:08 +03:00
2018-04-23 13:29:16 +03:00
```
npm install @mozilla -protocol/core --save
```
2018-02-21 22:31:08 +03:00
2022-06-29 17:48:12 +03:00
Alternatively, you can also [download the latest release ](https://github.com/mozilla/protocol/releases/latest )
from GitHub.
2018-02-21 22:31:08 +03:00
2018-05-25 03:07:43 +03:00
## Usage
2022-06-29 17:48:12 +03:00
Once installed, the relevant CSS, JavaScript, and asset files will be available
in your project under `./node_modules/@mozilla-protocol/core/` .
2018-05-25 03:07:43 +03:00
2022-06-29 17:48:12 +03:00
The core CSS file is bundled as `protocol.css` , which contains styling for things
such as basic elements and typography, as well as some global components like
navigation and a footer. Other component and layout CSS is bundled as
`protocol-components.css` for convenience.
2018-05-25 03:07:43 +03:00
2022-06-29 17:48:12 +03:00
However, these pre-compiled CSS files include the _entire_ pattern library, which
you may not need. We recommend compiling your own styles from the source Sass
files, also included in the published package. That allows you to configure Protocol
to include just the styles and components you need for each page of your website.
2018-05-25 03:07:43 +03:00
2022-06-29 17:48:12 +03:00
## Make it Run
2018-04-23 13:29:16 +03:00
2022-06-29 17:48:12 +03:00
To build Protocol from source and run the documentation site locally, you can
clone the repo from GitHub:
2018-04-23 13:29:16 +03:00
```
$ git clone https://github.com/mozilla/protocol.git
$ cd protocol
2022-06-29 17:48:12 +03:00
$ npm install
```
Running `npm install` will install dependencies. Then:
```
2023-05-06 00:13:33 +03:00
$ npm run webpack
2022-06-29 17:48:12 +03:00
```
This will compile the Sass and copy assets into a local folder in preparation to
run the server. It also starts a “watch” process that will watch those files and
automatically recompile when they change.
In another command line console (and still within the Protocol folder), run:
```
2018-04-23 13:29:16 +03:00
$ npm start
```
2022-06-29 17:48:12 +03:00
This will build the site locally and start the development server at
< http: / / localhost:3000 > .
## Building the website
To build the Protocol documentation site for deployment, run:
```
$ npm run build-docs
```
## Building the NPM package
We use a [Webpack ](https://webpack.js.org/ ) configuration for building the contents
of the NPM package ready for publishing. To build the package, run:
```
npm run build-package
```
This will install dependencies, lint CSS/JS files, and then build the package
content in the `./package/` directory.
## Running tests
To perform the package build process above and then run front-end JS tests against
the processed files:
```
npm test
```
## Publishing to NPM
Protocol is published to NPM under the `@mozilla-protocol/core` namespace/package
name. To publish a release to NPM, use the following steps:
1. Before you start make sure the project's [CHANGELOG.md ](https://github.com/mozilla/protocol/blob/main/CHANGELOG.md )
is up to date.
2. Update the package `version` number in [assets/package/package.json ](https://github.com/mozilla/protocol/blob/main/assets/package/package.json )
(use [Semantic Versioning ](https://semver.org/ ) to determine what the new version number
should be).
3. Update the package README [assets/package/README.md ](https://github.com/mozilla/protocol/blob/main/assets/package/README.md ).
2023-05-19 19:23:14 +03:00
4. Update the package `version` number in the root [package.json ](https://github.com/mozilla/protocol/blob/main/package.json ) file and then run `npm install` to update the `package-lock.json` file.
2022-06-29 17:48:12 +03:00
5. Submit a pull request with your changes (or commit directly to `main` if you
have permission). Once the changes have been merged to main:
6. Tag a new release. You can do this either using [Git tag ](https://git-scm.com/book/en/v2/Git-Basics-Tagging ),
or directly on the [GitHub website ](https://github.com/mozilla/protocol/releases/latest ).
2023-05-11 20:59:00 +03:00
7. Run `npm run build-package && npm test` to run the build script and front-end tests. The package contents
2022-06-29 17:48:12 +03:00
will be located in `./package/` .
8. If the build is successful and all tests pass, publish to NPM using `npm publish ./package/` .
## Deployment
Note: the following instructions assume the Mozilla repository is the remote
called `origin` .
### Pushing to production
Each time an updated package is published to NPM, https://protocol.mozilla.org/
should also be updated so the documentation site matches the NPM package features.
2023-05-12 22:43:46 +03:00
1. Verify all is good on the [staging site ](https://main--mozilla-protocol.netlify.app/ ).
2022-06-29 17:48:12 +03:00
2. Make sure your local `main` branch is up to date.
3. Push the `main` branch to the `prod` branch: `git push origin main:prod` .
A notice will be posted in #www -notify on Slack when the push has completed.
2018-02-21 22:31:08 +03:00
2022-06-29 17:48:12 +03:00
### Pushing to demo
2018-02-21 22:31:08 +03:00
2022-06-29 17:48:12 +03:00
For previewing new components before they are merged to `main` , two demo instances
are available.
2018-02-21 22:31:08 +03:00
2022-06-29 17:48:12 +03:00
1. Push your branch to the `demo1` or `demo2` branches e.g.
`git push -f origin my-branch-name:demo1`
2. Your branch will be published:
- https://demo1--mozilla-protocol.netlify.com/
- https://demo2--mozilla-protocol.netlify.com/
2018-02-21 22:31:08 +03:00
2022-06-29 17:48:12 +03:00
A notice will be posted in #www -notify on Slack when the push has completed.