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

Content structure for new.nodejs.org #19

Closed
fhemberger opened this issue Jul 26, 2015 · 38 comments
Closed

Content structure for new.nodejs.org #19

fhemberger opened this issue Jul 26, 2015 · 38 comments
Labels
content Issues/pr concerning content ideas

Comments

@fhemberger
Copy link
Contributor

At the moment, the content structure of iojs.org and nodejs.org is very heterogenous, so simply merging the content of both sites for a new.nodejs.org won't work. I took the time and went briefly over the structure, which is currently in place:

Content structure iojs.org

  • Home
    Linking to: Downloads (/dist directory), Weekly Update (external), News Archive (external) and Nightly (next) releases
  • Roadmap (external)
  • FAQ
    Relationship node.js/io.js, semver, contributing, open source gouvernance
  • ES6
    Description of features and flags
  • API Docs (external)
Footer links
  • Release History (linking to external changelog and /dist)
  • GitHub Issues (external)
  • GitHub Org (external)
  • IRC Chat (external)
  • Logs (external)
  • Governance (external)

Content structure nodejs.org

  • Home
    Including web server example
  • Downloads
    Download links in platform matrix (32bit / 64bit), external platform support: IBM Power Systems/System Z
  • Documentation
    General text explaining tutorials, localization and API docs
    • API Docs
    • Tutorials
      Short text about NodeSchool, no further resources
    • Localization
      Links to international communities and user groups – not about localization/localized content
    • Contributing (only visible on API docs page; not identical with https://nodejs.org/contribute/)
    • Workflow (only visible on API docs page; contribution workflow guide)
  • Contribute
    Introduction text to the three topics below; only focused on node.js core development.
  • Foundation
    Introduction text to the topics below
    • Anchor: Timeline (listed in left navigation)
    • Anchor: Core documents (listed in left navigation)
    • Members
      Logos of members, separated by platinum, gold, silver status
    • Blog
      Links to hand picked articles on blog.nodejs.org, github issues, joyent.com, medium.com, developer.intel.com, …
  • Community
    mixed list: report issues, docs/code contribution, events, mailing list, GitHub issues, IRC, various community sites, official API docs, NodeSchool, Stack Overflow, again links to GitHub, contribution/localization, …
    • Github Issues (listed in footer navigation)
    • Mailing List (listed in footer navigation)
    • IRC (listed in footer navigation)
    • Twitter (listed in footer navigation)
  • About
    "hello world" http server
    • Organization
      • TSC meeting minutes
    • Releases
      Description of patch/minor/major releases and scoping features, not actual list of releases
    • Resources (logos, desktop background)
    • Advisory board (not listed in footer navigation; advisory board charter)
      • Members
      • Minutes
    • Security (not listed in footer navigation; reporting bugs, disclosure policy)
  • Jobs (external site by SimplyHired)
  • Blog (mostly release announcements)
@fhemberger
Copy link
Contributor Author

First draft of how a unified content structure could look like:

  • Home
  • About
    What is node.js? What does it do? How did we get there? (short summary)
    • Organizational structure:
      Foundation (Tasks, Members), TSC (Tasks, Members), Advisory board(?). Documents, minutes, etc. can be found on nodejs.foundation site.
    • Contribute:
      • Code contributions
      • Contribution workflow
      • Becoming a collaborator
      • Report security issues (also offer secutity``@``nodejs.org)
    • Roadmap
  • Resources
    • Getting started
    • ES6
    • FAQ
    • Getting help: NodeSchool, Stack Overflow (link to community)
    • Logos, Press material, desktop backgrounds
  • API documentation
    Will be accessed most of the time, so better make it a primary navigation entry
  • Community
    How does the node.js community work? What are the core values (CoC)? How and what can you do?
    • GitHub, IRC, Twitter, etc.
    • International communities and websites
    • Events
    • Jobs
  • Downloads
    Download links in platform matrix
    • Release history (Release notes, Changelog)
  • Blog
    More like the current io.js posts, move release announcements to release history instead (prevent duplicate content). If the original article is on an external site (e.g. joyent.com), copy content and use canonical meta tag.

@fhemberger fhemberger added content Issues/pr concerning content discuss ideas labels Jul 26, 2015
@mikeal
Copy link
Contributor

mikeal commented Jul 27, 2015

The new taxonomy doesn't have the foundation, is that going to be a sub-site like "foundation.nodejs.org" or just a page?

@mikeal
Copy link
Contributor

mikeal commented Jul 27, 2015

should we just fold API docs in to the "Resources" page?

@fhemberger
Copy link
Contributor Author

The new taxonomy doesn't have the foundation, is that going to be a sub-site like "foundation.nodejs.org" or just a page?

Its placed under "About/Organizational structure" I'm don't know how future content is supposed to look like for the Foundation. We could either give a short explanation of the overall structure and the foundation's tasks and leave the details for a separate www.nodejs.foundation site, or make it a full first level navigation entry. (see #16)

should we just fold API docs in to the "Resources" page?

I placed the API docs there at first, but I think most of the people visiting the site will either head for news/downloads or the API docs, so I put them on the main navigation instead. Not sure what's the best way to go there … opinions?

It would be nice to have some (rough) log/analytics data from the current nodejs website, to see what parts of the site people are actually reading. @robertkowalski do we have anything in place?

Also pinging @nodejs/website for feedback.

@robertkowalski
Copy link
Contributor

@fhemberger yes we have, we also have download statistics for node - @tjfontaine created them using manta probably map-reducing the nginx access logs...

@robertkowalski
Copy link
Contributor

@tjfontaine can you share your manta functions for download stats and other stats?

@mikeal
Copy link
Contributor

mikeal commented Jul 27, 2015

It would be nice to have some (rough) log/analytics data from the current nodejs website

Agreed, but I'm not sure it'll help us too much with the placement of API docs since the current website has a "docs" link which them just gives you a link to the API docs.

It might be a good idea to do a single docs page with 3 or 4 top level showcase links for API, NodeSchool, and the upcoming documentation the docs WG is building. From there we can see where people are going in terms of analytics and if it's all API we can promote it to top level.

Thoughts?

@Fishrock123
Copy link
Contributor

I'll try to take a look at the whole plan soon, but I think it is important to have a "get started with node + nodeschool" pretty front and center and maybe also otherwise accessible.

@mikeal
Copy link
Contributor

mikeal commented Jul 28, 2015

I'll try to take a look at the whole plan soon, but I think it is important to have a "get started with node + nodeschool" pretty front and center and maybe also otherwise accessible.

Right now those live in the "Resources" page but I'm thinking we can probably find a better name for that section that does a better job of speaking to people who are looking for help.

@Fishrock123
Copy link
Contributor

Right now those live in the "Resources" page but I'm thinking we can probably find a better name for that section that does a better job of speaking to people who are looking for help.

I still think that's too obscure. :)

@mikeal
Copy link
Contributor

mikeal commented Jul 28, 2015

I still think that's too obscure. :)

Do you mean it's too obscure to "find a name for people who are looking for help" or are you just re-iterating my point about the word "Resources" being too obscure?

@Fishrock123
Copy link
Contributor

Sorry, I'm just trying to state that I think it would be good to have a clear "newcomers" section on the main page either way. :)

@therebelrobot
Copy link
Contributor

I placed the API docs there at first, but I think most of the people visiting the site will either head for news/downloads or the API docs, so I put them on the main navigation instead. Not sure what's the best way to go there … opinions?

@fhemberger I agree, the API should be listed separate in the nav. When I go to a site for a library, the first thing I look for is the API link.

I think Docs could be used as a Getting Started guide, with API going to the in-depth docs themselves.

(also, sorry about the recent radio silence. Been moving to Pacifica for a few weeks now)

@fhemberger
Copy link
Contributor Author

@mikeal @Fishrock123 If you come up with a better name, just go for it. ;)

Maybe naming the entire section "Getting started" (and having the ES6 and FAQ pages as sub-menu items) would be a good idea, then place "API docs" right next to it in the main navigation.

@fhemberger
Copy link
Contributor Author

FYI: I've started porting the current nodejs.org website to a new, clean structure (including html/css) we can use as a basis for further development. I think I can put up a first draft next week.

@Fishrock123
Copy link
Contributor

Yay miscommunication. @mikeal has really been working on that..

@fhemberger
Copy link
Contributor Author

@mikeal Uhh. Which parts have you been working on so far? I've started setting up a clean HTML/CSS structure which I'm currently testing with the content. Hopefully we merge the stuff so no work has been done for nothing …

EDIT: FWIW, this is what I did the last hour:
Switched the build process to metalsmith (which already does most of the build process we want to have in the future with just a couple of lines), using handlebars, stylus (with css-autoprefixer and prism syntax highlighting).

Basically what's missing is home & download page, the updated content structure and the side navigations for the sub-pages, some style adjustments and cross-browser/mobile testing (including media queries).

@fhemberger
Copy link
Contributor Author

@mikeal I've pushed everything I've been working on so far to https://github.com/nodejs/new.nodejs.org/tree/metalsmith-draft. Blog and about sections are working (still with the old content and structure), all blog posts have been converted to use a proper yaml frontmatter section.

So most of the work which still needs to be done is review/rewrite of the content. Global metadata can be placed here, localized metadata could be added as i18n[language-key](e.g. i18n.jp.blog: 'http://blog.iojs.jp/').

@Fishrock123
Copy link
Contributor

Switched the build process to metalsmith (which already does most of the build process we want to have in the future with just a couple of lines), using handlebars, stylus (with css-autoprefixer and prism syntax highlighting).

I'm not so comfortable with this. Far less people are likely to be familiar with metalsmith, and it puts us in an easier mess if segment.io (the sole company which maintains it) moves to anything else, or changes it vastly.

I'm also not entirely sure magically covering up what we were doing is a great choice.

There is further discussion on build system choice here: nodejs/iojs.org#22

@fhemberger
Copy link
Contributor Author

Far less people are likely to be familiar with metalsmith, and it puts us in an easier mess if segment.io (the sole company which maintains it) moves to anything else, or changes it vastly.

To be honest, it was just a test and I really don't care what we're using in the end. I used metalsmith because it gave me the the results for setting this site up very quickly (whereas the gulp tasks could need some improvements here and there).

All I really want is to focus on building the site and getting the content ready.

@mikeal
Copy link
Contributor

mikeal commented Aug 3, 2015

This is much farther along that what I was doing so I'm going to scrap my thing and we can start from here.

RE: metalsmith

Let's not bikeshed about tooling. If this is doing everything (including the internationalization and build/release integration) that iojs.org is doing let's move forward. If people don't like this tool then send a PR that replaces it with gulp or whatever tool you like better and we can discuss the switch that way.

@mikeal
Copy link
Contributor

mikeal commented Aug 3, 2015

@fhemberger let's merge this to master, nothing is being automatically deployed yet so it's easier to just work out of master while we're still in this early phase.

@fhemberger
Copy link
Contributor Author

@mikeal I haven't figured out all i18n aspects yet, but this should give us the opportunity to get started with the english version quickly and adapt to other languages on the way. I'll merge it to master for now.

@mikeal
Copy link
Contributor

mikeal commented Aug 5, 2015

One benefit I can see to this approach already is the use of yaml in the markdown files for variables and then a main content area makes it much simpler and more readable for localizations. When I was porting the old system the JSON files for localized variables was very tedious.

@mikeal
Copy link
Contributor

mikeal commented Aug 5, 2015

ok @fhemberger I just made some big changes which make the build system work for localizations.

one thing that I had to turn off was the development server support because we're now working with multiple instances of metalsmith so we can't use the build server from any single one. for a dev server we'll need to use a static file server like st along with a file watcher that re-does the builds. however, the new system allows us to test the output static files easily so I'm not really minding just re-running the build script each time I made a change and then reloading the static asset.

@fhemberger
Copy link
Contributor Author

@mikeal Just had a brief look at it:

  • At the moment, you're duplicating all static assets and CSS for each language.
  • We still need a way to share global metadata/placeholders between languages.
  • DNS prefetch: no need for http: here.
  • I don't know why everybody is so reluctant to have white space in their scripts. ;)

@mikeal
Copy link
Contributor

mikeal commented Aug 5, 2015

@fhemberger

At the moment, you're duplicating all static assets and CSS for each language.

Working on this. Moving static is easy but the css has to actually run through the compiler so it's a little trickier. Also, it would be nice if locales could adjust their css on a per locale basis while inheriting the base css.

We still need a way to share global metadata/placeholders between languages.

Can you give an example?

DNS prefetch: no need for http: here.

Doesn't work when you're loading static files. However, I have a dev server half working now so this will be changed back soon.

I don't know why everybody is so reluctant to have white space in their scripts. ;)

Haha! I don't know why I tend to "tighten" code up like this, I'll try to refrain :)

@mikeal
Copy link
Contributor

mikeal commented Aug 5, 2015

@fhemberger do you know of a way to get @import in stylus to resolve another path rather than just the current relative path?

@fhemberger
Copy link
Contributor Author

I think you can pass additional lookup paths to stylus, haven't tried that yet.

@mikeal
Copy link
Contributor

mikeal commented Aug 5, 2015

Just figured it out, spent like an hour debugging this esundahl/metalsmith-stylus#14 :)

@mikeal
Copy link
Contributor

mikeal commented Aug 5, 2015

@fhemberger check out the latest push.

  • Dev server is back with a file watcher to do rebuilds.
  • CSS is globalized and each localization can customize

I think it's time to start rebuilding more of the content :)

@fhemberger
Copy link
Contributor Author

@mikeal Uh, sorry for the extra effort with stylus. I already forked the plugin to add autoprefixer support, I'll add your PR to it as well. Hopefully both get merged soon.

@mikeal
Copy link
Contributor

mikeal commented Aug 5, 2015

@fhemberger i worked around it by sending a relative path, so it works now :)

@mikeal
Copy link
Contributor

mikeal commented Aug 5, 2015

@fhemberger I'm gonna close this issue, since it has gotten quite long, and create a new one with next steps.

@mikeal mikeal closed this as completed Aug 5, 2015
@mikeal mikeal mentioned this issue Aug 5, 2015
32 tasks
@snostorm
Copy link
Contributor

snostorm commented Aug 6, 2015

FYI this merging without a GitHub PR was very confusing. (I know I'm a little out of the loop, the last few weeks have been hectic.) When tracing back where all the new files came from ... no PR. (Even if one approves their own PR, I guess, it helps keep large changes/additions traceable.)

I'm going to do a little playing with this tech stack and see how well it aligns with our goals for i18n, workflow, etc.

... I remember using Metalsmith for something a few years ago but it is vague now ;)

@snostorm
Copy link
Contributor

snostorm commented Aug 6, 2015

Oh, was also going to say thanks in general for getting the ball rolling on this. My few concerns re: PRs and tech may sound negative, but really the effort to port content is very much appreciated!

@fhemberger
Copy link
Contributor Author

You're welcome.

And I understand your issue with the missing PR. In this case we went directly from "I have some ideas, so I set them up in a separate branch for you to look at" to "Great, push it to master please". ;)

@mikeal
Copy link
Contributor

mikeal commented Aug 7, 2015

We will start doing PRs as soon as we're being deployed

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
content Issues/pr concerning content ideas
Projects
None yet
Development

No branches or pull requests

6 participants