Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[wip] Create BRIEF.md #661

Merged
merged 2 commits into from
Feb 4, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
70 changes: 70 additions & 0 deletions BRIEF.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
# Font Bakery Product Requirements Document

This document sets out the product's requirements and design principles, what designers call a "brief."

## 1. Sanity Checking

The primary purpose of the project is to accelerate the on-boarding of font families into the Google Fonts library.

The project achieves this by developing tools for use 'at the coalface,' that sanity-check TTF and related files needed to onboard a single family into Google Fonts.

This set of command-line programs should reflect some [Unix Philosophy](https://en.wikipedia.org/wiki/Unix_philosophy):

* Do one thing and do it well,
* that work together, and
* that work in similar/uniform way.

They are simple, on the level of shell scripting done with in Python in order to access font internals via fonttools, rather than a large object oriented application.

They avoid crafting custom pure-Python solutions to side-problems and rely on commonly installed utilities, such as using [GNU wget](https://en.wikipedia.org/wiki/Wget) to fetch files from the internet.

#### 1.1 checking TTFs individually

In addition to our own checks, this will check the TTFs with other projects such as ots, nototools, Microsoft Font Validator, Apple Font Validator, FontForge, GlyphNanny, and others.

~/fonts/ofl/family $ fontbakery-check-ttf.py *ttf

#### 1.2 checking TTFs as a family

#### 1.3 hot-fixing TTFs

Many common issues can be hot-fixed using fontTools.

~/fonts/ofl/family $ fontbakery-check-ttf.py *ttf --autofix
$ rm *ttf;
$ rename s/ttf.fix/ttf/g;

#### 1.4 generating others required files

~/fonts/tools $ ./add_font.py ../ofl/family;

#### 1.5 checking everything is in sync and correct

~/fonts/tools $ ./sanity_check.py ../ofl/family;

#### 1.6 comparing new versions to the ones in production to avoid regressions

~/fonts/ofl $ ttx -s family-old/*ttf family/*ttf;
$ meld family-old/ family/;
$ rm family-old/*ttx family/*ttx;

#### 1.7 sanity-check the entire collection

The ultimate aim is a single master check script that all families pass.

~/fonts $ fontbakery-check.py .
$

## 2. Font Building (with Continuous Integration)

Last minute hotfixing of TTFs is ideally unnecessary, so to accelerate the on-boarding of updates made by upstream font developers, we also develop tools for checking source files.

Some font project upstreams do not provide binaries, or only provide OTF binaries, so we develop tools to build fonts from sources.

These source file build and checking tools supplement and feed the first set of tools, and can be used for Continuous Integration of font sources kept in a version control repository (such as Travis and Github.)

The ultimate aim is that all fonts in the Google Fonts catalog have source repositories in [github.com/googlefonts](https://github.com/googlefonts) that are under continuous version control, so new errors or regressions are prevented at source.

## 3. Web Dashboard

To reach the ultimate aims of the project, a dashboard that measures progress would be great.
15 changes: 15 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ The project is run on Github, in the [typical](http://producingoss.com) free sof
We'd love to accept your patches and contributions to this project.
There is just one thing you need to do first.

## Google CLA

Contributions to Google projects, even unofficial ones like this, must be accompanied by a Contributor License Agreement.
This is not a copyright assignment, it simply gives Google permission to use and redistribute your contributions as part of the project.

Expand All @@ -13,3 +15,16 @@ If you work for a company that wants to allow you to contribute your work, then
You generally only need to submit a CLA once, so if you've already submitted one for a different project, you probably don't need to do it again.

After your contribution is included, you will be listed in CONTRIBUTORS.txt and/or AUTHORS.txt: CONTRIBUTORS is the official list of people who can contribute (and typically have contributed) code to this repository, while the AUTHORS file lists the copyright holders.

## How to Contribute

Our production vision and high level requirements are explained in the [BRIEF.md](BRIEF.md)

We use Github's Issue Tracker to report and track bugs, map out future improvements, set priorities and assign people to them.

We only assign an issue to someone when they are going to work on that issue soon.

We tag all issues with a priority tag, P0 for "urgent" through P5 for "someday-maybe"

If you find a bug or have an idea, please create a new issue and we'll be happy to work with you on it!