[1.0] Umbrella issue
See original GitHub issueHey folks!
The remaining work (in my head at least) is starting to settle down into something coherent so I wanted to document my thinking here to get feedback on the vision for 1.0 and give those wanting to help out chunk sized pieces of work to pull off to work on so I can stop being the bottleneck for us shipping 1.0.
Goals for 1.0
To reiterate what I wrote last fall https://github.com/gatsbyjs/gatsby/issues/419
Make building high-performance websites fun by:
- Enabling high performance by default. Anything that prevents Gatsby from generating the fastest possible website is a bug.
- Generating sites that have a rich webapp-like feel.
- Source all the data. Enable a plugin-driven data layer which lets Gatsby source and transform data from any number of sources.
TODOs
The following is a loose collection of TODOs for shipping 1.0. Some of them have issues already. Others not. If you want to work on one, please start an issue (or send a PR) claiming it. For more complex issues, please open an issue to discuss things before starting to write code. This is also not a complete list of course so feel free to add comments for other work that needs to done and I’ll update the list. Also please file bugs you find as normal issues with the issue title prefixed with [1.0]
.
Check out the contributing guide for how to setup your development environment https://www.gatsbyjs.org/docs/how-to-contribute/
- Marketing
- Design/implement front page
- metatags on website
- Favicon for site
- Documentation
- Rewrite the Gatsby README.md for 1.0
- Tutorial
- APIs (automated from code comments hopefully). (TODO here still are docs for args to node APIs)
- Example websites
- gatsbygram
- using-drupal
- Hacker News clone
- Something with PDF processing
- ecommerce store
- i18n
- animation
- Anything else? Want example websites that are a) surprising (wait? a “static site generator” can do that?) b) use lots of Gatsby’s official plugins (example sites are our integration tests) and c) simple so easy for people new to Gatsby to read through the code and understand it.
- Testing
- Transformer plugins (e.g. JSON, YAML, Markdown)
- Source plugins (e.g. Filesystem)
- Caching
- GraphQL query runner
- Flow types
- everything (not a flow user yet so huge if someone wants to jump in on this…)
- Plugins
- Add plugins various styling options e.g. sass, less, stylus, styled components, glamorous, anything else that’s easy to get going and popular
- PDF processing
- Source plugins for popular data sources e.g. Wordpress, Drupal, hosted CMSs, Trello, Google Spreadsheets, etc.
- Add support for word/paragraph counts to markdown https://github.com/wooorm/remark/issues/251
- webpack
- Allow people to import all files types i.e. copy create-react-app’s pattern here.
- Support GATSBY-* environment variables
- babel
- Use https://github.com/babel/babel-preset-env instead of a stage #975
- Refactor to store babelrc state in Redux plus add action creators for plugins to add to the config.
- GraphQL data layer
- Port JS frontmatter from 0.x (i.e. being able to reference export const data = {}) — should just be a transformer plugin
- Add pagination “field” to all connections
- Add aliases to children nodes in the graphql schema e.g.
childrenMarkdownRemark
.
- DX improvements
- Add validation for options for each plugin.
- Change filename of default layout component to
layouts/index.js
. - Change the default port that graphiql and
gatsby serve-build
run on so they don’t interfere with the development server. - if hot update fails to apply, reload the page automatically.
- Change
.intermediate-representation
to.cache
and store data to be persisted between builds there. - split off the gatsby cli into its own package
- Performance
- Tweak JS bundling strategy somewhat. Do commons bundle, bundle for each layout, bundle for routes, then a bundle for each page component and page data.
- Chores
- Review package dependencies and remove ones we’re not using anymore and update packages to their latest version
Post 1.0
-
Copy default eslint checking from create-react-app
-
Copy error modal from create-react-app
-
Make starters searchable from CLI https://github.com/gatsbyjs/gatsby/issues/56
-
Upgrade to webpack 2
-
Use Redux for managing the webpack config and for allowing plugins to modify it.
-
Thinking in Gatsby
-
Lots and lots of examples. Make them all searchable/browsesable inline in the website
-
Add support for searching/browsing community plugins from website
-
Themes
-
Get minimal theme system in place with rough plans for something more sophisticated. Basic idea is there’ll be a
gatsby-theme-core
that all other themes will be based on. The core theme will include the basic Gatsby for the vanilla Gatsby experience. Then on top of that (themes are composable) add a number of other official themes e.g.gatsby-theme-sass
,gatsby-theme-glamor
,gatsby-theme-preact
,gatsby-theme-markdown
,gatsby-theme-blog
, etc. Every theme will have an associated starter which will install the theme w/ a bit of sample content. -
Setup build performance testing. Perhaps start with a script which auto-generates a site with 100, 1000, 10,000 pages and measures how long it takes to build them from scratch and with cached data.
-
Issue Analytics
- State:
- Created 6 years ago
- Reactions:22
- Comments:29 (19 by maintainers)
Nice TODO list! For my part, I’m working on a gatsby-starter with full typescript support and some dev tool (jest, enzyme, xo, tslint, plop …) 😉
I’ve got a lot of work to do this starter functional (I want
html.js
and all pages/components in typescript) but it can be cool!If someone wants to help (dev, tests, code reviews, suggestions…), you are welcome 😃
@wiesson If it can help, I got an i18n system on my own website -> https://github.com/fabien0102/fabien0102.com
Just a
lang
props on index, and a filter in graphql queries 😉 https://github.com/fabien0102/fabien0102.com/blob/master/src/pages/en.jsx