GithubHelp home page GithubHelp logo

numpy / numpy.org Goto Github PK

View Code? Open in Web Editor NEW
109.0 109.0 105.0 24.23 MB

The NumPy home page

Home Page: http://numpy.org/

License: BSD 3-Clause "New" or "Revised" License

Makefile 3.93% HTML 35.51% CSS 13.18% JavaScript 1.72% Shell 32.48% Python 5.80% SCSS 7.38%

numpy.org's Introduction


Powered by NumFOCUS PyPI Downloads Conda Downloads Stack Overflow Nature Paper OpenSSF Scorecard

NumPy is the fundamental package for scientific computing with Python.

It provides:

  • a powerful N-dimensional array object
  • sophisticated (broadcasting) functions
  • tools for integrating C/C++ and Fortran code
  • useful linear algebra, Fourier transform, and random number capabilities

Testing:

NumPy requires pytest and hypothesis. Tests can then be run after installation with:

python -c "import numpy, sys; sys.exit(numpy.test() is False)"

Code of Conduct

NumPy is a community-driven open source project developed by a diverse group of contributors. The NumPy leadership has made a strong commitment to creating an open, inclusive, and positive community. Please read the NumPy Code of Conduct for guidance on how to interact with others in a way that makes our community thrive.

Call for Contributions

The NumPy project welcomes your expertise and enthusiasm!

Small improvements or fixes are always appreciated. If you are considering larger contributions to the source code, please contact us through the mailing list first.

Writing code isn’t the only way to contribute to NumPy. You can also:

  • review pull requests
  • help us stay on top of new and old issues
  • develop tutorials, presentations, and other educational materials
  • maintain and improve our website
  • develop graphic design for our brand assets and promotional materials
  • translate website content
  • help with outreach and onboard new contributors
  • write grant proposals and help with other fundraising efforts

For more information about the ways you can contribute to NumPy, visit our website. If you’re unsure where to start or how your skills fit in, reach out! You can ask on the mailing list or here, on GitHub, by opening a new issue or leaving a comment on a relevant issue that is already open.

Our preferred channels of communication are all public, but if you’d like to speak to us in private first, contact our community coordinators at [email protected] or on Slack (write [email protected] for an invitation).

We also have a biweekly community call, details of which are announced on the mailing list. You are very welcome to join.

If you are new to contributing to open source, this guide helps explain why, what, and how to successfully get involved.

numpy.org's People

Contributors

adsche avatar aerikpawson avatar alphapapa avatar bjnath avatar bsipocz avatar charris avatar goanpeca avatar inessapawson avatar isabela-pf avatar jarrodmillman avatar jlaehne avatar joelachance avatar jtpio avatar mattip avatar mdeff avatar melissawm avatar mwiebe avatar njsmith avatar partev avatar pv avatar rgommers avatar scottza avatar seberg avatar shaloo avatar shekharrajak avatar stefanv avatar steppi avatar teoliphant avatar tylerjereddy avatar uttam-singhh 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

numpy.org's Issues

Style: Loading icon disruptive

What do folks feel about removing the concentric circle blip that appears on loading each page? I, for one, find it quite disruptive on every click / page load.

Direct user help questions to Stackoverflow

This is way more effective (and searchable) than mailing lists and chat rooms.

For example, when I have a problem, my first reaction is to google it, and more often than not I find that someone else has asked the same question on stackoverflow (or stackexchange). Sometimes the answer comes from an issue (for example GitHub issue), and more rarely from a discussion thread in a mailing-list archive.

Asking a question on a mailing list needs to first find where is the mailing list, and then subscribe to it. After asking your question (and hopefully getting an answer) you have to unsubscribe again, because the pile of unrelated and uninteresting messages becomes unbearable. Too much overhead for asking a simple question and getting a simple answer.

Asking a question on a chat has almost never worked for me. You have to hope that someone who may know the answer is online at the same time as you. I think that chat may be suitable for people who already have some familiarity with each-other, not for asking random questions to random people.

Some stakoverflow forums where we can direct the users:

We should promote somehow these links on the website and encourage users to use them.

Update Footer Layout

Update the footer layout. See the below image (keep 'old' NumPy logo):
Screen Shot 2019-11-10 at 8 51 52 PM

Question: how should an email list function? Should these be written to S3? Emailed to someone?

Cross platform and browser testing for Sphinx generated pages

The website should work entirely in the last few versions of the most popular platforms (macOS, Linux, Windows, Android, iOS) and browsers (Chrome, Opera, Firefox, IE/Edge, Safari), and provide an acceptable experience on IE 8 and 9. It must be WCAG AA compliant.

Deployment

We need to complete several steps:

  • Integrate surge.sh to update a sample site per git push for review.
  • Add deployment to Github Pages using Github Actions. We should use a different Github Pages than what's currently hosting numpy.org (we can use mine if needed, I think each profile only get one?). This should deploy automatically when PR's are merged to master.

@Shekharrajak, am I missing anything?

Move website and documentation issues to this repo

I think that it would be nice if documentation issues are kept on this repo as well (or on their own repo), instead of discussing them on numpy/numpy. This would clearly distinguish them from the rest of the issues (bugs, features, enhancements, etc.).

For example I am interested on the website and documentation issues, but I have to subscribe (watch) to numpy/numpy. As a result I get more than 100 notification messages a day, 90% of which I have to delete because I am not interested in them (actually I don't understand what is being discussed there). This is like a kind of innocent spam. A better classification of issues to different repositories may help to reduce this.

Note: Maybe the same should be done for scipy too.

Content Page Layout

  • Create a sidebar with shortcuts to headers inside the page
  • Add a 'Get Help?' link below the shortcuts
  • Add the footer to the content pages

The 'Get Help?' link should only render on the following pages:

  • Install
  • Documentation
  • Learn
  • Community
  • Contribute

Color scheme for new site

From Summer, our graphic designer at Quansight, a color scheme for the new website. Top row are primary colors, second row secondary, third row tertiary. To go with the Hugo Fresh theme that we aimed for as a base. This is the same color scheme as I put on Slack earlier, copying here for permanent storage. This seems like a good start, let's see how it looks:)

colorscheme_numpyorg_redesign

Reformat the web site to be the primary source for numpy documentation

As discussed in a weekly developer meeting, we would like numpy.org to become the primary gateway for all things NumPy. One concern is that by hosting the pages on github pages we may exceed usage restrictions.
[ ] - Find out how to monitor bandwidth on gitub pages
[ ] - Be prepared to add a cloudflare front end for caching the pages to reduce bandwidth
[ ] - Redo the front page to contain versioned documentation like the scipy.org/doc page

Citing NumPy

Publish an example for citing NumPy in academic publications.

Contribute.md

Change the look of the existing table: 3x4, no borders.

Develop and embed on the website interactive tutorials

Using https://www.katacoda.com/ we may develop and embed on the website a couple of interactive tutorials for beginners (which can be based on the existing NumPy tutorials). This may make it easier and more fun for beginners to get started.

The infrastructure is supplied for free by Katacoda, so we don't need to run or maintain any server for it. The only limitation is that the duration of the training session for a student is 1 hour, and then he can reload the browser and start a fresh session. I think this time is enough and anyway we should not make tutorials that last longer than one hour.

Building an interactive tutorial is very easy and everybody can learn it in a short time. The code of the tutorial is just a bunch of JSON and markdown files (for the configuration of the environment and for the steps of the tutorial). It can be saved on your preferred git repository (GitHub, GitLab, Bitbacket, etc.) and Katacoda pulls it from there and builds the tutorial environment (docker image). You also need to set a webhook on the repository, so that whenever you make some changes (commits) Katacoda is notified to refresh the content of the tutorial.

Create copy for the NumPy terminal

We need to create copy above the NumPy terminal on the homepage. A welcoming message and perhaps a code sample might be nice. Ideas welcome.

Installation instructions can be confusing to newcomers

The current installation instructions are beautifully simple; well done!

That said, they may be confusing to newcomers. Conda: "To install NumPy do X or Y" without giving advice on when to use which. When using pip do X or Y if Python comes with your OS. Most users may not have any idea whether Python comes with their OS, or whether that is the version they're using. Perhaps pip install numpy --user works fine in a venv too, and can be the only command recommended.

Select language dropdown

  • We can have language options written in that language only. i.e. "Hindi " should be written in hindi language, "Dutch" should be written in dutch language and so on.

  • We can use the respective country flags before the language option as well

Hugo build for newsite is broken

Multiple people reported that the links on the main page seem to loop back to the front page when looking at the site with hugo server. I see that too, and rendering into public/ by running hugo shows that the content of index.html is identical to that in install/index.html and other pages.

@joelachance did this work for you, or are you seeing the same?

My Hugo is 0.58.3, install with my linux distro package manager.

Hosting the new website

Deployment

There is no need for running a server, and doing so is in our experience a significant drain on the time of maintainers.

  1. Netlify. Using netlify is free until 100GB of bandwidth is used. Additional bandwidth costs $20/100GB. They support a global CDN system, which will keep load times quick for users in other regions. Netlify also has Github integration, which will allow for easy deployment. When a pull request is merged, Netlify will automatically deploy the changes. DNS is simple, and HTTPS is also supported.

  2. Github Pages. Github Pages also has a 100GB bandwidth limit, and is unclear if additional bandwidth can be purchased. It is also unclear where sites are deployed, and should be assumed sites aren't deployed globally. Github Pages has an easy to use CI & DNS, similar to to Netlify. HTTPS is supported.

  3. Cloudflare. An excellent option, additional CI is likely needed for the same ease of deployment.

All of the above options are appropriate for the NumPy site based on current traffic. Updating to a new deployment strategy, if needed, should take several hours at most and is inconsequential. If a provider such as Cloudflare is chosen, additional CI may be required, such as CircleCI, to have a similar deployment to GitHub Pages or Netlify.

Select a static site generator for the new website

Possible options for static site generators:

  1. Jekyll. This is a well maintained option with 855 Github contributors, with contributions within the last month. Jekyll is written in Ruby, and has a simple CLI interface. Jekyll also has a large directory of themes, although a majority cost money. There are several themes (serif, uBuild, Just The Docs) that are appropriate and free. Most themes are likely responsive for mobile, and that should be a requirement. Jekyll uses a combination of liquid templating and YAML to render HTML, and content is written in Markdown. i18n functionality is not native to Jekyll, but can be added easily.

  2. Hugo. This is another well maintained option with 554 contributors, with contributions within the last month. Hugo is written in Go, and similar to Jekyll, has a simple to use CLI interface to generate static sites. Again, similar to Jekyll, Hugo has a large directory of themes. These themes appear to be free, unlike some of Jekyll's themes. (Sample landing page theme, docs theme). Hugo uses Jade as its templating language, and content is also written in Markdown. i18n functionality is native to Hugo.

  3. Docusaurus. Docusaurus is a responsive static site generator made by Facebook. Unlike the previous options, Docusaurus doesn't come with themes, and thus we would not want to use this for our landing page. This is an excellent docs option written in React. Docusaurus natively has support for i18n (via Crowdin, document versioning, and document search.

Both Jekyll and Hugo are excellent options that should be supported into the future and are good choices for NumPy. Docusaurus has several bonus features such as versioning and search that Jekyll and Hugo don't have, but is likely a poor candidate for a landing page - it could be a good option for a high-level docs site later on though.

Cross platform and browser testing for Hugo generated pages

The website should work entirely in the last few versions of the most popular platforms (macOS, Linux, Windows, Android, iOS) and browsers (Chrome, Opera, Firefox, IE/Edge, Safari), and provide an acceptable experience on IE 8 and 9. It must be WCAG AA compliant.

Website Content

We're missing some stuff (mostly cool looking images), but copy too. Continue working on this.

New content lives on the branch newsite (branched from master of numpy.org), in the directory /new-content. We can add and commit updated content there for the time being.

NumPy logo refresh

Both @InessaPawson and @shoyer suggested a refresh of the NumPy logo recently. Summer gave that a go, tweaking the colors for more contrast:

numpylogo

Unfortunately she could not keep the logo in SVG. It hasn't been touched in a decade, and was made with some unknown tool that didn't align well with her tools. Does anyone remember who made the current logo, and how?

add donation link to website

I'm pasting below the (somewhat lengthy) instructions for adding a donations link to your website: https://www.flipcause.com/secure/cause_pdetails/MzUwMQ==

How-To Instructions:
Copy This Code Block on Your Website

Note: You only need to do this step ONCE per website. Install once in either Header (below the tag) or Footer (below the

tag). This code will be used for ALL buttons and floating tabs that you create on your site.

<!--Flipcause Integration v3.0// Flipcause Integration Instructions: 
Install the following code block once in the website Header (after <head> tag) -->
<style>
.fc-black_overlay{ 
display:none; position: fixed; z-index:1000001; top: 0%;left: 0%;width: 100%;height: 100%;
background-color: black; filter: alpha(opacity=50); cursor:pointer; opacity:0.5; 
}
.fc-white_content {
opacity:1; display:none; margin-top: -320px; margin-left: -485px; width:970px; height:640px; 
position:fixed; top:50%; left:50%; border: none;z-index:1000002;overflow: auto;
}
.fc-main-box{
opacity:1; display:none; margin:15px auto 0 auto; width:930px; position:relative; z-index:1000003;
}
.fc-widget_close{
opacity:1; background: url(https://www.flipcause.com/assets/close-icon.png);
position:absolute; z-index:1000004; right:-16px; top:-16px; display:block; cursor:pointer; width:49px; height:49px;
}
.floating_button{
display: block; margin-top: 0px; margin-left: 0px; width:auto ; height: auto; 
position:fixed; z-index:999999; overflow: auto;
}
@keyframes backfadesin {
   from { opacity:0; }
   to {opacity:.5;}
}
@-moz-keyframes backfadesin { 
    from { opacity:0; }
    to {opacity:.5;}
}
@-webkit-keyframes backfadesin { 
    from { opacity:0; }
    to {opacity:.5;}
}
@-o-keyframes backfadesin {
    from { opacity:0; }
    to {opacity:.5;}
}
@-ms-keyframes backfadesin {
    from { opacity:0; }
    to {opacity:.5;}
}
@keyframes fadesin {
   0%{ opacity:0; }
   50%{ opacity:0; }
   75% {opacity: 0; transform: translateY(20px);}
   100% {opacity: 1; transform: translateY(0);}
}
@-moz-keyframes fadesin {
   0%{ opacity:0; }
   50%{ opacity:0; }
   75% {opacity: 0; -moz-transform: translateY(20px);}
   100% {opacity: 1; -moz-transform: translateY(0);}
}
@-webkit-keyframes fadesin {
   0%{ opacity:0; }
   50%{ opacity:0; }
   75% {opacity: 0; -webkit-transform: translateY(20px);}
   100% {opacity: 1; -webkit-transform: translateY(0);}
@-o-keyframes fadesin {
   0%{ opacity:0; }
   50%{ opacity:0; }
   75% {opacity: 0; -o-transform: translateY(20px);}
   100% {opacity: 1; -o-transform: translateY(0);}
}
@-ms-keyframes fadesin {
   0%{ opacity:0; }
   50%{ opacity:0; }
   75% {opacity: 0; -ms-transform: translateY(20px);}
   100% {opacity: 1; -ms-transform: translateY(0);}
}
</style>
<script>
function open_window(cause_id) {
var  protocol=String(document.location.protocol);
var new_url;
if( /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)){
new_url="https://www.flipcause.com/widget/"+cause_id
window.open(new_url);
}
else {
document.getElementById("fc-fade").style.display="block";
document.getElementById("fc-fade").style.webkitAnimation="backfadesin 1s";
document.getElementById("fc-fade").style.animation="backfadesin 1s";
document.getElementById("fc-fade").style.mozAnimation="backfadesin 1s";
document.getElementById("fc-light").style.display="block";
document.getElementById("fc-light").style.webkitAnimation="fadesin 1.5s";
document.getElementById("fc-light").style.animation="fadesin 1.5s";
document.getElementById("fc-light").style.mozAnimation="fadesin 1.5s";
document.getElementById("fc-main").style.display="block";
document.getElementById("fc-main").style.webkitAnimation="fadesin 1.5s";
document.getElementById("fc-main").style.animation="fadesin 1.5s";
document.getElementById("fc-main").style.mozAnimation="fadesin 1.5s";
document.getElementById("fc-close").style.display="block";
document.getElementById("fc-close").style.webkitAnimation="fadesin 1.5s";
document.getElementById("fc-close").style.animation="fadesin 1.5s";
document.getElementById("fc-close").style.mozAnimation="fadesin 1.5s";
document.getElementById("fc-myFrame").style.display="block";
document.getElementById("fc-myFrame").style.webkitAnimation="fadesin 1.5s";
document.getElementById("fc-myFrame").style.animation="fadesin 1.5s";
document.getElementById("fc-myFrame").style.mozAnimation="fadesin 1.5s";
document.getElementById("fc-myFrame").src="https://www.flipcause.com/widget/"+cause_id;
}
}
function close_window() {
document.getElementById("fc-fade").style.display="none";
document.getElementById("fc-light").style.display="none";
document.getElementById("fc-main").style.display="none";
document.getElementById("fc-close").style.display="none";
document.getElementById("fc-myFrame").style.display="none";
}</script>

<div id="fc-fade" class="fc-black_overlay" onclick="close_window()"></div>
<div id="fc-light" class="fc-white_content">
<div id="fc-main" class="fc-main-box">
<div id="fc-close" class="fc-widget_close" onclick="close_window()"> 
</div><iframe id="fc-myFrame" iframe height="580" width="925" style="border: 0; 
border-radius:5px 5px 5px 5px; box-shadow:0 0 8px rgba(0, 0, 0, 0.5);" scrolling="no" src=""></iframe></div>
</div>

<!--END Flipcause Main Integration Code-->

THEN

Copy This Button Code to Your Desired Webpage(s)

<a href ="https://www.flipcause.com/secure/cause_pdetails/MzUwMQ==" target="_blank" style="background:#f5cb33; border-radius:0px 0px 0px 0px;font-weight:normal; font-family:Arial, Helvetica, sans-serif;border:none;box-shadow:none;left: 50%; margin-left:-75px;clear: both;display: block; width:150px;height:45px; line-height:2.8; position:relative; font-size:16px;text-align:center; cursor:pointer;color:#000000;text-decoration: none; z-index:1">Donate to Numpy</a>

NumPy shell performance

  • Keep binder from loading on every page (only homepage)
  • Convert the current 'Run' button to an 'Enable' button so a binder instance loads only when it's wanted.
  • Once 'Enable' is selected, render a spinner or loading image until the kernel is loaded.

UX:

  • Have our numpy import at the top of the terminal window, but reposition the prompt below it to indicate to the user the need to import numpy.

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.