ocaml / v2.ocaml.org

Implementation of the ocaml.org website.
http://ocaml.org
Other
322 stars 345 forks source link

Proposal: reworking of Learn section of ocaml.org #1136

Closed johnwhitington closed 3 years ago

johnwhitington commented 4 years ago

I have been asked by the OCaml Software Foundation https://ocaml-sf.org to spend a few hours on a proposal to refresh the Learn section of the OCaml website. To be clear, the few hours time for thinking about it and writing this document has been funded; the time taken to actually do the work relies upon some version of this proposal being accepted.

I feel it's important that the people who know most about ocaml.org, that is to say you, get a good look at this proposal early on so you can tell me if I am on the wrong track, or to add proposals of your own. (Next week I shall have another for you, on how to improve documentation on setting up one's OCaml environment; that one, by contrast, has been funded to completion).

Introduction

Official or semi-official programming language websites like ocaml.org tend to have a prominent page or pages providing a whirlwind tour of the language's possibilities, or a fast-paced tutorial, or a full from-the-beginning tutorial, or some combination of all three of these things.

What are the purposes of this content? They are two:

It follows that such content should be accessible, appropriately targeted, accurate, easy to navigate and up to date.

NOTE: It is important to differentiate this content from `How to set up your environment', which ocaml.org and most other languages have too, and which is another kind of required introductory document. I will have a separate proposal on this soon.

Current ocaml.org content

The ocaml.org website distinguishes on the main menu between Learn and Documentation. This is a useful distinction, and we would wish broadly to keep it. Here we are interested in the `Learn' part.

Not on ocaml.org: https://github.com/ocaml-community/awesome-ocaml. Other examples?

How other language communities do it -- Haskell

How other language communities do it -- Python

Python seems large enough that most of the content is external, and not even on the python.org page!

How other language communities do it -- Go

How other language communities do it -- Rust

Very impressive range of official documentation:

And much much more: https://www.rust-lang.org/learn

Concerns

Here are some examples of concerns that ocaml.org's own authors and some bug-submitters have expressed. I list them to help us understand what to fix, not as a criticism of my own.

Here is a previous thread on fixing the tutorials: https://github.com/ocaml/ocaml.org/issues/996

Proposal

I propose to secure the existing content, so to begin by:

And then go on to:

NOTE: What to do about translations? Mostly it is just translations of topic headings it seems, not the main content? Contact previous translators? Try to keep as much as we can?

sanette commented 4 years ago

I think this is a most useful work you're undertaking. Thanks!

Concerning the separation between learn/documentation, we have to remember that the manual has its own "tutorial" chapters

avsm commented 4 years ago

John, thanks for starting off this discussion and for your proposal to rework the learning section. This is timely and important given the rapid release rate of OCaml over the past few years. A few high-level notes first:

Finally, it would be worth having a video call organised to quickly go over some of these ideas when they become a bit more baked, and post the minutes here. August is a poor month for that, but early September could work.

johnwhitington commented 4 years ago
  • Going through the website and removing unsupported tools (e.g. like camlp4) would immediately be sueful. That would be great to do at a high priority.

Gone, or almost completely, in https://github.com/ocaml/ocaml.org/pull/1147

ghost commented 4 years ago

I would survey scala, clojure, kotlin, elm as well, when glancing at other communities.

I had thought about this topic a bit and felt that teach.ocaml.org should be separated out as well, and I noticed kotlin also creates a section for teach.

EDIT: moved rest of content to its own issue

ghost commented 4 years ago

checking everything in the current website works technically, fixing anything which is still relevant but currently broken;

pruning out of date or deprecated information, and relegate information which is useful but only for a tiny number of people;

This will be a recurring problem, as ocaml style and base libraries will keep slowly evolving. Some have proposed compiler checks of the source to make sure its accurate. That's a good start, but I think crowdsourcing this content every ~6 months will probably result in more engaging and fresher content. I would do it as follows:

  1. Every six months, pick ~4 problems in the style of advent of code or hackerrank warm up exercises, that are relatively simple and overlap with topics we want covered for beginners. Post the call for submissions on discuss.ocaml.org. Have people submit their solutions via gist links.
  2. Have one content admin read through the submissions and pick the top five best answers
  3. Copy those answers to the ocaml website.
johnwhitington commented 3 years ago

(Closed because the work involved has been (mostly) done)