JuliaLang / www_old.julialang.org

Julia Project web site (Old)
http://www_old.julialang.org/
Other
150 stars 276 forks source link

homepage revamp #63

Closed StefanKarpinski closed 5 years ago

StefanKarpinski commented 10 years ago

Kicked off by this post: https://groups.google.com/forum/#!topic/julia-dev/pQG6bSglkjc, maybe the home page should get a redesign. This issue is a location for discussion and brainstorming ideas for such a redesign.

nalimilan commented 10 years ago

The webpage is quite good already IMHO. It could be nice to highlight a few killer packages. Also add a visible link to Github, and show dynamic stats about the ongoing activity, e.g. the number of committers to date, the number of packages - I'm sure Github allows that easily. You could also create People page where you would list people using or supporting Julia with their affiliations, programs they are known for, and language experience.

jiahao commented 10 years ago

Overall the top level page could do with fewer words. It’s hard to go wrong with more pretty pictures with clickthrough links to explanatory pages.

The main point I got out of the discussion was to highlight more sociodynamic aspects of the Julia community. Some random ideas:

ViralBShah commented 10 years ago

I had no idea about all those meetups.

ViralBShah commented 10 years ago

+1 to everything @jiahao says. All of those things will invite a viewer to engage more with the site, and finally download julia. We own the JuliaLanguage twitter account. I would love to have something dynamic if possible, where the latest package updates are shown, latest tweets, latest blog posts are shown, etc.

I am not sure if we will end up over-designing this second version, but there is only one way to find out.

jiahao commented 10 years ago

@alanedelman suggests keeping track of dates so that we have a sense of historical progression also.

jiahao commented 10 years ago

Also, do we have some form of web counter or tracker? It would be very easy to insert a Google Analytics counter.

StefanKarpinski commented 10 years ago

We have GA setup already. Viral can give you access (or I can later).

jiahao commented 10 years ago

By the way, who has the @JuliaLanguage twitter account?

ihnorton commented 10 years ago

Pretty sure @ViralBShah has it.

ViralBShah commented 10 years ago

Yup I do have that Twitter handle. Can send the password to others. We should probably start tweeting through it.

jiahao commented 10 years ago

I'll take a login cred. It would be almost no effort to RT stuff from @juliacajun

jhasse commented 9 years ago

Hi everyone! I've tried to update the Julia page a little bit. The Rust homepage has a clean index page, which I took as an example. I've made the following changes:

You can try the new page here: http://julialang.herokuapp.com

What do you think? :)

The text (copied from Wikipedia) and code example could definitely be improved. My ideas where:

Especially notice how the site now works on mobile:

Before: screenshot_2014-07-16-17-24-02-22

After: screenshot_2014-07-16-17-24-02-0screenshot_2014-07-16-17-24-02-1

waldyrious commented 9 years ago

Nice work! A few comments:

We want a language that’s open source, with a liberal license. We want the speed of C with the dynamism of Ruby. We want a language that’s homoiconic, with true macros like Lisp, but with obvious, familiar mathematical notation like Matlab. We want something as usable for general programming as Python, as easy for statistics as R, as natural for string processing as Perl, as powerful for linear algebra as Matlab, as good at gluing programs together as the shell. Something that is dirt simple to learn, yet keeps the most serious hackers happy. We want it interactive and we want it compiled.

StefanKarpinski commented 9 years ago

What I like:

What I don't like:

So on the whole a big improvement.

StefanKarpinski commented 9 years ago

Also, just as an informational point, about 12% of visits to the Julia site come from mobile.

jhasse commented 9 years ago

I'm glad you like it :) Thanks for the kind words!

I've just uploaded a new version with

As for external links: I would suggest the same thing what Wikipedia is doing: Display a small image after external links (can't copy the image somehow, because it's directly encoded as a SVG in Wikipedia's CSS).

Btw: My own jekyll setup supports highlighting Julia, but I'm not sure if Github's does. I will create a pull request to test this on the current page.

waldyrious commented 9 years ago

A small suggestion: use   after (or before) the pipe characters in the header links, so that they are consistently positioned in relation to the links to their right (or left) regardless of screen size.

Also, it might be a problem with my mobile browser (stock browser on an Android 2.3.5), but the logo isn't showing up at all (not even a "broken image" placeolder).

jhasse commented 9 years ago

  done! Good idea.

The reason the logo doesn't show up, is because Android's browser (before 3) doesn't support SVG images: http://caniuse.com/svg As Android 2 is slowly dying out, I would say don't fix this. You can install Firefox for Android btw, which should support SVG.

waldyrious commented 9 years ago

OT: I wish I could install Firefox, but my device has very little internal memory and is constantly complaining about that. Hopefully I'll get a better one sometime soon.

In any case, the fix isn't complicated. I came across this problem before, and after some experimenting, I managed to make it work in browsers that don't support svg by simply doing: <object data='img/logo.svg'><img src='img/logo.png' alt='logo'></object> and in the css, object { pointer-events: none; } to make it clicable if it's wrapped in an <a>.

jhasse commented 9 years ago

Hi! Any news on this?

StefanKarpinski commented 9 years ago

I'll have to take a look at this again. Last I checked, it seemed like I had a bunch of issues that were not addressed and it would be a lot of work (for me) to go through and try to separate out the changes that were ok and the ones that weren't.

jhasse commented 9 years ago

I see. If it helps I can seperate the changes into multiple pull requests?

StefanKarpinski commented 9 years ago

Yes, that's exactly the way to do this. One for styling changes, others for content changes.

ViralBShah commented 9 years ago

Ping @shashi who has been thinking about a larger website revamp.

jhasse commented 9 years ago

Okay I've splitted it up in 3 PRs so far. After they are merged the only thing left is the content change, which I guess is the one with issues left.

StefanKarpinski commented 9 years ago

Thanks for these. I've merged them and made a few tweaks. On to the content!

nalimilan commented 9 years ago

I'm not sure what commit exactly changed the width of the text, but now the download page doesn't look great because in the first column of the arrays some entries do not fit on one line. Maybe increase the width a bit more?

jhasse commented 9 years ago

@nalimilan I think this is because I was using em for the max-width of the site ;) I've fixed it in #176.

dpsanders commented 7 years ago

Bump. Note that the parallel code

nheads = @parallel (+) for i=1:100000000
  int(randbool())
end

now actually has two bugs in 0.5!

ViralBShah commented 7 years ago

Fixed that bug - rather both.

waldyrious commented 7 years ago

Fixed that bug - rather both.

a387af7 for those wondering.

ChrisRackauckas commented 7 years ago

Bumping this. Whoever did your JuliaComputing design was really good. You should try to get them to redesign the Julia page as well!

StefanKarpinski commented 7 years ago

We're planning on it. The content needs a lot of reorganization as well.

ViralBShah commented 7 years ago

@shashi Can you post your redesign of the julialang front page content. We can do the design work separately, but I think shashi got off to a good start.

shashi commented 7 years ago

sure, it's at http://shashi.github.io/julialang.github.com/

you have to manually rewrite links for now (e.g. Learning is at http://shashi.github.io/julialang.github.com/learning/ and not http://shashi.github.io/learning/)

If someone offers content for the features section of the front page, I will put that in. Do mock up the layout you want to show it with, I can also put that in. All the internal pages basically look as they did before, but in better fonts and stylesheet. Just the new front page needs content.

ViralBShah commented 6 years ago

We probably should do this for 1.0

shashi commented 6 years ago

Anyone volunteering to write content for the home page? I'd like to keep the click on feature -> short description + example layout.

ViralBShah commented 6 years ago

I wonder if we should close this issue, and have a slack #website channel. I wonder if @ChrisRackauckas has some time to brainstorm this. While I think the prototype website has good content, it is not user focussed. It does not convince someone coming why they should use Julia. It may be better to showcase Julia packages front and center along with the language on the landing page, for example.

ChrisRackauckas commented 6 years ago

The Constraints

I think this is a difficult issue because the webpage has to stand somewhere in the battle of Julia's identity between a general-purpose programming language and a tool for technical computing. Right now it's an odd hybrid. For example, if you take a look at Rust's homepage:

https://www.rust-lang.org/en-US/

you can see how the top of ours has elements matching that: talk about the language and show some code. If you look at some technical computing tools

https://www.wolfram.com/mathematica/ https://www.mathworks.com/products/matlab.html

it's all about showing plots related to technical computing, which is what we do right after.

Which path we choose depends on the identity that we want Julia to have. However, I think we can choose the technical computing path, but instead make sure we explicitly highlight some examples of general-purpose computing.

One other thing to keep in mind is the sub-communities of "technical computing". There is somewhat of a split in there between scientific computing and data science. Scientific computing is focused on solving differential equations, optimization, and numerical linear algebra. Data science covers statistics, machine learning, and data visualization. These communities have a lot of interplay within Julia but that's quite unique. In reality, most of the time these groups are separated. Usually they are working at different jobs or are in different departments. Even when they are in the same field, they separate themselves by name and application (e.g. in biology you have mathematical biology vs bioinformatics).

The technical computing focus of Julia with many of its packages and features is amazing for both parties. However, I think that there has been quite a focus on showing off to the data science crowd. And I understand why: data science at around 2013 was booming in popularity and R/Python were taking most of that growth. It's a popular subject with industry pouring lots of money into it. But the scientific computing group is large in academia and national labs. They are in dire need of newer tools as evidenced by how popular Fortran is (with C++ growing) and how MPI is still the most popular HPC tool (this is the crowd that dominates HPC usage).

These two groups have separate but related focuses. Data science communities really care about machine learning frameworks, MCMC tooling, and data handling tooling like DataFrames + MYSQL databases. Scientific computing communities care about parallelization, solving PDEs, 3D plots, and preconditioned Krylov subspace methods for Ax=b. They both care about reproducibility and visualization.

The Suggestions

So above are the constraints. We need to straddle between general-purpose computing and technical computing, and in technical computing we need to balance between scientific computing and data science. How do we do that?

I think that we can pull inspiration from the Mathematica and MATLAB sites and realize that having a header image is a much more engaging way to show off applications. However, in order to hit our diverse audience we need a sliding display of a few randomized images. Each slide should be a few images composed together with some simple text next to it. Given the above analysis, I think we need to hit a few points:

  1. A quick example showing a picture of code in an IDE showing off some programming language features (multiple dispatch, metaprogramming) for the general-purpose crowd.
  2. A general purpose application. Maybe some web server with Julia code and the site shown. Genie.jl or Escher.jl? Web applications are of growing importance in technical computing so that has nice crossover.
  3. A machine learning framework application. I think a nice simple code from @MikeInnes's Flux.jl showing a picture of the net and some visualization of the output. Maybe doing image segmentation and/or detection. The code should, if simple enough, pull from some database to show off that stuff to the general-purpose crowd at the same time.
  4. A PDE. Of the scientific computing applications, this one is nice to pull from because you get to show off some really beautiful 3D graphics which data science people could be interested in as well.
  5. A picture of some servers with astronomers and happy scientists. This slide is about high performance computing. Mention Julia's speed, Celeste's petascale application, parallelism and GPU support. This is a crowd pleaser to all of the groups.

Below those 5 images, I think that MATLAB's site has a good setup of doing a picture with each quick explanation. I think it should go like this:

  1. The first section has to be about the language. On the left, a good picture for this is the Julia benchmark: let it and its caption which links to a separate benchmark page explain itself. On the right the summary of language features, maybe pruned a little bit. Put the part about the license in here: the people who focus on this part are the people who care about licenses.
  2. In the next part, I think we can be more succinct. "Designed for fast and reproducible scientific applications". The image should show off code inside of IJulia, and again have some nice visualizations. I think it should show off simple calls but do something in parallel. Maybe a parallel Monte Carlo calculation of something like pi with a picture of the dots with a circle?
  3. Section 3 should be about packages. The "image" should instead be the randomized Youtube videos of JuliaCon. It should link to JuliaObserver.com, which has been an unofficial but amazing package search engine that we should highlight more. Then the text should highlight some of the popular packages with one blurb about what they do. Probably, instead of separating by packages, separate by topic. So it should be like:

I think that covers a wide range of technical computing? Each of the names should be a link to send the potential user directly to the packages. This answers the vast majority of "does Julia have ___?" that the audience usually asks.

There is a tough balance here between "not wanting to pick winners" in an open source community, but also we want to show some stuff off! So I am considering a general rule would be to pick and order packages by star count as much as possible as a reasonable indicator of popularity and overall impact. And the list can always be changed in the future (and this was only preliminary, feel free to bikeshed that list like crazy).

And I think that's it. I don't think it should go further than 3 sections. Maybe a 4th one showing off an interactive REPL if we have one for the web.

Summary

We need to hit general computing, data science, and scientific computing. I think we do this by

Each section has a corresponding visualization to catch the eye. Some core parts of this design is:

  1. Hit all of the high level parts of data science and scientific computing, but whenever we do so, show off something that is usable to other communities. So we need to show solving a PDE, but show off 3D graphics and parallelization at the same time. We need to show off neural networks, so show off database handling and GPU support at the same time. We need to show that we are still a general purpose language, so show off a general purpose application that scientists care about like web apps.
  2. We don't need to discuss much about the visualization packages and IDEs. Instead, it can just be implicit in the pictures that we show. We can show off Julia code in Juno, make our visualizations with Plots.jl and Gadfly.jl, and show IJulia by showing off code that has ran inside of it.
  3. The benchmarks are right front and center, but "language features" is just the first point. The features of Julia are its language, its scientific community, and its packages. I think this setup weaves them together well and flows quickly enough to packages.
  4. Showing off Julia by showing off its community tools. Instead of plain code and features, code is in nice IDEs and using packages to make things succinct. We give direct links to things like JuliaObserver to let potential users explore what the community has to offer, along with highlighting a few that are of common interest to people who generally look into Julia.
  5. It's colorful and inviting. Every piece of text has an image. Text can be minimized to small lists, and extra details are behind links for those who are interested.

Of course, this is just my idea/explanations so I am curious to hear what others think. Building these images will be the toughest part, but I think image-based websites look much more modern and inviting than something that is text-heavy.

shashi commented 6 years ago

@ChrisRackauckas Love your thoughtful comments! I agree that it's difficult yet important to resolve what identity of Julia we would like to convey on the front page. Focusing on one may dilute the others. But I think your plan strikes a good balance.

I could prototype the layout for this page as you described it and circulate, do you think you can help me with the images and verbiage?

Cheers!

ChrisRackauckas commented 6 years ago

Yeah, if you're willing to prototype lets get the community together! I can help get some of the Julia visualizations, but I will say my editing skills are bad so I can't really compose them together well. Let's pull in @MikeInnes @Evizero (you make good figures 👍 ) @mkborregaard @tlnagy and see if any of them have concrete ideas for figures.

Dmitrii-I commented 6 years ago

On https://julialang.org/ there is a screenshot https://julialang.org/images/ijulia.png containing code

using RDatasets
using Gadfly
set_default_plot_size(9inch, 9inch/golden)
plot(data("datasets", "iris"), x="Sepal.Width", y="Sepal.Length", color="Species")

Running this code in 0.6.2 results in error:

MethodError: no method matching data(::String, ::String)

Stacktrace:
 [1] include_string(::String, ::String) at ./loading.jl:522
nalimilan commented 6 years ago

Indeed. Looks like we need to replace data with dataset.

mkborregaard commented 6 years ago

👍 to @ChrisRackauckas ' ideas (except I don't think data science has gotten too much of the attention :-) ). Should we brainstorm ideas on Slack or in this thread? Figures - I think we need a basic non-fancy multipanel figure with a scatter plot with error bars and a trendline, and a barplot, to signal "yes julia is useful for your daily pedestrian work" and a nice shaded 3D visualization with Makie to demonstrate the scope.

StefanKarpinski commented 6 years ago

Some notes from a quick call discussing some redesign ideas based on @ChrisRackauckas's post:

  1. Top: simple, general Julia code examples
    1. some computation
    2. some visualization
    3. IDEs with code + images
    4. neural nets stuff (for the hype)
  2. Download links on the right
    1. large “Download” button autodetects correct download
    2. small “other versions” link to go to downloads page
  3. Below the fold: grid of Julia domains
    1. click-through to targeted examples
    2. links to relevant community forum, docs, etc.
    3. below that some high-level performance/functionality comparisons

Need some space for announcements at the very top, perhaps videos too?

Have “domains” subpage with all domains

Different target audiences?

Like Shashi’s row of videos

Showcase slot for a random selection of cool, well-documented packages?

carstenbauer commented 6 years ago

I highly appreciate the ideas in this thread and would be willing to contribute within my capabilities if this makes sense. Where is the communication for this redesign happening? I couldn't find a #website channel on slack.

FWIW, a minor point that I observed when reading the above. I feel that the domain/topics lists above seem to focus on more abstract disciplines like general math disciplines, computer science and generic things like plotting. I, of course, agree that this should be the main focus as it basically allows you to do anything else, but to inspire new scientists maybe more specific science domains should also be mentioned/showcased. BioJulia in Stefan's list seems to be the only mention in this direction. What about the other natural sciences and the finance branch of Julia? (I'm a physicist and would be most likely be caught be showing some physics application).

ViralBShah commented 5 years ago

Done. The new website is live at www.julialang.org.