Git Product home page Git Product logo

jupyter.github.io's Introduction

Jupyter's main website

This is the source to Jupyter.org.

Build the site locally

The site is built with Jekyll, see the Jekyll website for how to customize the build process.

There are a few ways to build the site locally, see the sections below.

Where the site is hosted

There are two ways that this site is built:

  • Pull Request previews are built with Netlify, a hosting service for static websites. See the section below for more information.
  • Hosting for jupyter.org is done via GitHub Pages. GitHub will automatically use Jekyll to build the HTML for this site and host it at jupyter.github.io, which connects with jupyter.org.

Preview changes in a Pull Request

Netlify will automatically build a preview of the website in an open Pull Request. To see this, click on the Show all checks button just above the comment box in the Pull Request window. Then click on the details link on the deploy/netlify row to see a preview of the built site.

Here's an image of this box on a GitHub PR page:

Netlify Preview Button

Build the site automatically with nox

The easiest way to build the site locally is by using the nox command line tool. This tool makes it easy to automate commands in a repository, and we have included a build command to quickly install the dependencies and build the site.

To build and preview the site locally, follow these steps:

  1. Clone this repository.

    $ git clone https://github.com/jupyter/jupyter.github.io
    $ cd jupyter.github.io
  2. Install nox

    $ pip install nox
  3. Run the build command

    $ nox -s build-live

This will install the needed dependencies in a virtual environment using the conda package manager.

When the build is finished, go to localhost:4000. When Jekyll finishes building your site, it will open a port on your computer and serve the website there so that you may preview it.

You can make changes and watch the preview auto-update. When you make changes to the website, they will automatically be updated in your preview in the browser.

To stop serving the website, press Ctrl-C in your terminal

Build the site manually

To build the site manually, you'll need Ruby, Jekyll, and the packages that Jekyll uses to build the site (these are defined in Gemfile).

Follow these steps:

  1. Install Jekyll. You have two options:

  2. Install the site's build dependencies. These are specified in Gemfile.

    $ bundle install

    This step might take a few moments as it must download and install a number of local extensions. It will create a local file called Gemfile.lock. These are the "frozen" dependencies and their version numbers needed to build the site.

  3. Build the site locally.

    $ bundle exec jekyll serve liveserve

    This will build the site's HTML and open a server at localhost:4000 for you to preview the site.

Structure of this website

Most pages are located at the place where their URL is, nothing fancy. Some are written in HTML. Others are written in Markdown. The homepage is in index.html. The about page is in about.md`.

Create a new page

Create my_page.html (will have url https://jupyter.org/my_page.html) or my_page/index.html (will have url https://jupyter.org/my_page/), start with the following:

---
layout: default
title: My Page
---

write some html here (consider you are already inside `<body></body>`)

You cannot do it yet with .md file, but you will be able soon.

Add commit (and don't forget to add to _data/nav.yml).

Site quirks and tips

SCSS variables

Shortcuts with colors and other common variables can be found in _sass/settings. They can be used in SCSS files.

@import "settings/colors"

a {
    color: $orange;
}

Minifying images

We recommend minifying images whenever adding them to this website. This helps keep the page load times of our website down. There are many minifying services out there, but the squoosh.app service is a lightweight and easy-to-use option.

Lazy loading of images

The Jupyter website uses lazy loading of images. In general, images that are "below the fold" (below the browser window on page load) for laptop-sized screen sizes are encouraged to be configured for "lazy loading".

Add lazy loading to an image by adding a loading="lazy" configuration to the <img> element. For example:

<img class="my-class" src="my/src.png" loading="lazy" />

For images that are "above the fold" (that will be seen by users immediately after page load), use "eager" loading to make sure they are loaded immediately. For example:

<img class="my-class" src="my/src.png" loading="eager" />

Automated quality checks

A workflow on GitHub Actions is run at every push and for every pull request to ensure basic integrity of the website:

  • validating the structure of the HTML using Nu validator to ensure compliance with HTML standards
  • checking linked URLs for errors (including expired certificates)
  • running Lighthouse audits to ensure performance, accessibility, SEO optimization and best practices

If pre-defined quality targets are not met, the jobs will fail. Click on "Details" link for the failing job to see what caused the failure.

The detailed results will be available in the logs (which are only shown to users logged in on GitHub), including links to full Lighthouse reports on public temporary storage (the links will expire after 7 days).

jupyter.github.io's People

Contributors

afshin avatar blink1073 avatar cameronoelsen avatar carreau avatar charnpreetsingh avatar choldgraf avatar ellisonbg avatar fperez avatar go-bears avatar ivanov avatar jasongrout avatar jtpio avatar jzf2101 avatar krassowski avatar lresende avatar minrk avatar nicktimko avatar palewire avatar parente avatar rgbkrk avatar rpwagner avatar ruthussanketh avatar ruv7 avatar saulshanabrook avatar scottdraves avatar sylvaincorlay avatar takluyver avatar tgeorgeux avatar willingc avatar woswos avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

jupyter.github.io's Issues

Investigate Jekyll.

Right now, it is complex to add some infomations on the website as one need to write HTML by hand.

A good thing to try would be to investigate Jekyll that should allow to drop markdown files that would be converted to HTML by GitHub.

That would make pages like jupyter_days easier to maintain.

Issues with SVG images in resources pages

Some of the SVG images have issues such as intersecting or invisible path (specifically mail-education.svg). This is likely to not render ok in every situation. mail-education.svg does not render fully on inkscape for example.

Besides, the academic cap icon is a pure US / UK cultural specificity. I think that people would still recognize it everywhere in Europe - but not necessarily as it is embedded like this with other content (the drawer).

Setup linter for HTML/CSS & Cleanup website,

While reviewing the great work of @charnpreetsingh185, @spoorthyv and @faricacarroll in #103 I realize that the current website is not using a lot of best practices and does many things wrong (62 w3c validation error on the index page) . So we are building things on quicksand.

It would be nice to spend some cycle cleaning this up. It's not lost time it will make everyone work simpler as the bad HTML and CSS will introduce unexpected rendering problem and complexity in writing correct CSS> .

@willingc can you try to manage part of that ? I know that Brian

Hamburger by default

On a 13" laptop, the hamburger shows by default, making it very difficult to navigate the site. We need to reconsider the design of the page header. Krug talks about this in "Don't Make Me Think" - basically that everything wants to be on the front-page above the fold, making it more or less useless. Not everything can be equally important...

Design to replace vertical tabs on widgets page

We are going to have a couple of new examples in the widgets gallery soon

  • the matplotlib widget (jupyter-matplolib)
  • nglview
  • probably the molecular design toolkit.

The current vertical tabs are not great from the user experience's perspective.

Besides, for the widgets to benefit from the resize events, we should probably use a phosphor panel instead of pure css layout.

cc @jasongrout

Add Ids to sections

It is currently difficult to link to particular section of a page of the website as they lack ids.
Id would be nice to add afew.

Update website with new NumFOCUS information

Got this from NumFOCUS:

"We'd really like to make sure that our relationship to sponsored projects is clearly delineated on each project's individual website. To that end, we're requesting all sponsored projects to take the following steps: Please post the NumFOCUS digital stamp on the homepage of your website (at the bottom or in the footer is fine). Link the image to this url: www.numfocus.org"

@cameronoelsen can you work with Ana to tackle this?

Add a link to the jupyter github org on the main page?

There is no direct link to GitHub on the main page of jupyter.org.

We could either have a link to the Jupyter org or to one of the repos. We could use this repo or another one as an entry point with a simple descriptions of the different repositories in the organization.

fix url scheme.

Once jekyll stuff is done, convert url foo.html to /foo/ for cleaner abstraction and better referencing.

Zooming in on mobile causes nav bar to overwhelm viewport

Normal zoom:
image

Zoomed in:
image

@cameronoelsen One solution is to disable user scaling: Change this line to <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1, maximum-scale=1">. The only issue is that I naturally tried to zoom on my phone because I wanted a closer look at the notebook images, so disabling zooming has its own problems. A hack that I read about is to calculate the amount of scale/zoom in JS and scale the nav bar using transform: scale(1 - viewportScale).

Summary of NavBar Action Items

Originally from #103 but moved here to break tasks up.
See full design document with images here:
https://docs.google.com/document/d/1uTPsTF5gPqCE6SdXMmUAC9V3f1FFV0CpzL3xBNWTifo/edit?pref=2&pli=1#heading=h.bqvm4htg1bh3

Original prototype of PR located https://charnpreetsingh.github.io

  • Audit current website HTML/CSS (clean up and run it through HTML/CSS validator) referenced in #104
  • Make sure external links open in a new tab (Try it your browser and Install the Notebook currently open in the current tab)
  • Create a grouping of current NavBar items and put them into dropdown menu items
  • Polish formatting for mobile/CSS styles
  • Fix NavBar going to second line issue (referenced in #102 )

Dedicated JupyterDay Page

So after drafting up a few solutions to creating a dedicated JupyterDay page, I came up with the page below. Not sure if we need this page yet, seeing that there aren't many meetups happening yet, but while there aren't many happening I can start building it so we can push it whenever necessary. Just feel it may get tedious to scroll through the blog when we start having news coming in as well as events planned. Anyway, I designed the page around an open source touch enabled carousel that is, apparently, easy to customize and tailor to your need. It is called "Owl Carousel" and can be found here: http://owlgraphic.com/owlcarousel/index.html#customizing

Users can easily scroll through the event schedule, find the event they will be attending, and the information will appear below. We can also add a button to redirect to an Eventbrite page, or even in the future host the RSVPing through the website.

Overall just wanted to get some feedback and wondering if we want to continue on this idea!
jupyterday-mockup

Maybe add Gemfile.lock to gitignore?

I was trying to work on the website today and kept getting this error:

/Library/Ruby/Gems/2.0.0/gems/bundler-1.13.6/lib/bundler/definition.rb:179:in `rescue in specs': Your bundle is locked to minitest (5.9.1), but that version could not be found in any of the sources listed in your Gemfile. If you haven't changed sources, that means the author of minitest (5.9.1) has removed it. You'll need to update your bundle to a different version of minitest (5.9.1) that hasn't been removed in order to install. (Bundler::GemNotFound)
	from /Library/Ruby/Gems/2.0.0/gems/bundler-1.13.6/lib/bundler/definition.rb:173:in `specs'
	from /Library/Ruby/Gems/2.0.0/gems/bundler-1.13.6/lib/bundler/definition.rb:233:in `specs_for'
	from /Library/Ruby/Gems/2.0.0/gems/bundler-1.13.6/lib/bundler/definition.rb:222:in `requested_specs'
	from /Library/Ruby/Gems/2.0.0/gems/bundler-1.13.6/lib/bundler/runtime.rb:118:in `block in definition_method'
	from /Library/Ruby/Gems/2.0.0/gems/bundler-1.13.6/lib/bundler/runtime.rb:19:in `setup'
	from /Library/Ruby/Gems/2.0.0/gems/bundler-1.13.6/lib/bundler.rb:99:in `setup'
	from /Library/Ruby/Gems/2.0.0/gems/jekyll-3.3.0/lib/jekyll/plugin_manager.rb:36:in `require_from_bundler'
	from /Library/Ruby/Gems/2.0.0/gems/jekyll-3.3.0/exe/jekyll:9:in `<top (required)>'
	from /usr/local/bin/jekyll:22:in `load'
	from /usr/local/bin/jekyll:22:in `<main>'

It's forcing me to use an older version of a ruby gem. Removing the Gemfile.lock file allowed me to get around this. Any thoughts?

Deployment/usage interactive map

We should try to collect data for (we already have some in our education listing) , and display on the website, an interactive map that shows, as a starter:

  • Uses of Jupyter in education.
  • Deployments of JupyterHub.

For each of these, I'm imagining a map marker (probably different colors), which upon hover/click, pops up a small info note with a short description and a link, if relevant, to e.g. the course website or relevant github repo.

If a given deployment uses both Hub and is for education, we can use a different marker.

We were discussing today with @SylvainCorlay whether using the ipyleaflet widget might be a good solution for this...

Book section ?

We had a couple of request to add a list of book about Jupyter.
For now we can add them to the IPython webside (we have a book section there).
We should start thinking about what a book section would look like.

About Page

After speaking with Brian and hearing that we should highlight our community of contributors along with the steering council that leads the project, I have added two sections to the about page and also tweaked the design to be more consistent. The community section spiderweb is going to utilize d3js and show how everyone has contributed and helped one another. Hope you like the mockup! (All of the supporting text is filler that I made up, so don't worry about that :) )
concept

Make docs pages a more descriptive URL

From jupyterlab/jupyterlab#582

I thing that having the http://jupyter.org/jupyterlab/ page is great, though it might be a bit better suited for a branding page that match the jupyter.org theme, and can become just a normal tab, while the current page is a bit developper focused and can be scarry for "normal" users.

This is a general issue with the docs being available in jupyter.org/project-name. Perhaps the api docs url should be something more descriptive, like jupyter.org/docs/project-name.

"Project" and "Community" sections

I am not sure what content I should expect in each one of these sections, but oddly, the "Project" section starts with a "Community" subsection...

We could rename "Project" to "Community" or "About" and "Community" to "Resources".

Haskell notebook on demo page doesn't work

Steps to reproduce

  1. Go to https://try.jupyter.org/
  2. Click "Welcome to Haskell.ipynb"
  3. Click on the first "code cell"
  4. Hit SHIFT-ENTER.

I expect the computation to run and the list to print out, instead I see nothing. This happens approximately 100% of the time for me.

I tried with the Python notebook as well and it works around 1/4 times.

Links to mailing list, contact us, help channels

Right now there isn't a place on our home page for links to community and development related things. Lots go under these categories:

  • Mailing lists
  • GitHub repos for governance, enhancement-proposals
  • List of all GitHub repos
  • Developer guide - how to contribute
  • Stackoverflow
  • Gitter channels

Before we start to add links in random place, I want to think about the right organization for these resources. This may include working with @captiansafia and others on thinking about the information design and the various personas we are try to address with this information.

SageMathCloud logo issue.

There seem to be an rendering issue with sagemath logo.

It seem that some text have been traced, and not all, which might lead to rendering issue if font not present on target computer.

We should re-trace the logo.

Issue on external link.

When I click on external link, the style stays after closing the external page as the button is still focused I guess. Cf blog in screenshot.

screen shot 2015-09-04 at 09 44 43

Asset/Content build chain

#7 should sleep until we have a story about how to build the site from more collaboration-friendly sources than raw CSS, JS, and HTML.

Features

Here's some things that we should be able to do:

  • install bower assets
  • build optimized
    • css (less?)
    • js
    • images
  • build pages
    • markdown
    • notebooks
      • whatever we end up choosing with should support (or we should build) a plugin to
  • reusable site components (menus, etc).
  • static site search?
  • sitemaps/SEO
  • content syndication (releases from GH, blogs, books, cons, etc).
  • dead link checking

Workflow

I am imagining we would want to something set up where PRs come in against a build branch, and Travis would push to master?

Platforms

There are many, many options (hey, anything we like there for #7?). Yeoman is a lovely place to look for bootstrapping this process with most modern tools, but we might end up with some more bespoke stuff :)

  • make + whatever
  • ruby
    • Jekyll
      • would "just work" with gh-pages, but we'd end up needing node stuff and python stuff (to get notebooks)
  • node
  • python
  • sphinx
    • really not very pro this for a "designed" site, but if we're going to continue using it primarily for docs, it may make sense to keep the common build chain

New JupyterHub page

We are starting to talk about having a dedicated JupyterHub page on the website. Right now the only mention we have in buried on the home page below the fold. Opening this issue to track progress and design work.

Add Michigan State University to Jupyter users?

We have just begun using Project Jupyter this semester here at Michigan State University for our new department of Computational Mathematics, Science and Engineering and have had interest expressed from other departments. We would love to have our logo added to jupyter.org if we could be. Attached is a logo to use:

msu-logo

Shouldn't Jupyter display be left justified?

I'm using Chrome 50. I'm trying to convert some R script into a Jupyter notebook and I'm finding that no matter how wide I make my Chrome window, Jupyter hugs the right side of the window, cutting off my (embarrassingly long) lines of code while the left side of the page is just white space.

Hope it's (relatively) easy to make it left-justified, wrap the text, or fill the screen in some other way.

Cheers!

screenshot 2016-06-06 17 24 28

Website broken on narrow screens

Content is hidden.

screen shot 2016-06-06 at 21 05 29

There should:

  • be test that the navbar is not wider than XXX.
  • logo should collapse on small screen. Svg can be responsive
  • be test that the navbar is not wider than XXX.
  • be test that the navbar is not wider than XXX.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.