Git Product home page Git Product logo

lfe-manual's Introduction

LFE MACHINE MANUAL

The Manual for the Machine that is LFE/OTP

Note: This book is a long-term project and a work in progress.

The book is published/updated here:

The ticket summarizing the approach to generating content for the book is here:

To contribute, see the the Writing Phases ticket. To set up a local development environment:

  1. Clone this repo
  2. Create a banch for the content you have coorindated on writing
  3. Make sure you have mdbook installed
  4. From the terminal, call make run (if you don't have mdbook installed, you'll see download link displayed)
  5. Open the displayed localhost URL in your browser, when the book is being served locally
  6. Edit the content in your favourite editor -- content will auto-refresh in the browser

lfe-manual's People

Contributors

billota avatar cadar avatar dfrostbytes avatar john-goff avatar joshrotenberg avatar kingmob avatar macintux avatar metehan avatar oubiwann avatar pierre-rouleau avatar seanjensengrey avatar stevenproctor avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

lfe-manual's Issues

Books without Gitbook

Gitbook has changed its services and some of our stuff no longer builds. It would be nice to use some tooling that doesn't depend upon a service going away ... and I'd love to not have to use Ruby.

Ideally, whatever solution we use going forward should satisfy these conditions:

  • allow us to continue using the content we've created in markdown with no (or very few changes)
  • be usable without having to install tons of dependencies on our systems (e.g., support docker usage)
  • not be part of some pay-for-service that could be taken away at any point in time
  • support generating and viewing books locally
    a
    One option that is used to generate the copious markdown-based books in the Rust programming language community is this one:
  • https://github.com/rust-lang/mdBook

I'll see if it meets our other criteria ...a

Old docs site: Integrate useful "diving in" material

Tasks:

Move to GH Actions for publishing

This will mean we won't have to have separate branches for build and publish. I've done this in another mdbook repo somewhere fairly recently -- I'll get a link to that repo to use as an example.

Write the damned book

There are a handful of phases involved ... and they're not actually linear/sequential, they're more combined + iterative. Which means that, even if a section looks "done" it's actually not. They will be tuned over and over ๐Ÿ™‚ So, here are the "phases":

Phase I

  • Move useful content out of existing old docs.lfe.io site
  • Update that content for LFE 2.0
  • Add redirects for moved content from docs.lfe.io to cnbbooks.github.io/lfe-manual/current (note that when officially published, these will redirect further to lfe.io/books/chineual)

Phase II

  • Examine each section of the Lisp Machine Manual and carry as much of its good qualities over to the LFE Machine Manual
  • Key differences include more information about usage or links to online resources that cover usage in more detail
  • Explore the possibility of scraping / parsing Existing Erlang STDLIB and ERTS Reference Manuals and the Erlang User Guide ... but only if a good user experience can be created; otherwise, just link out to these, as applicable

Phase III

  • Examine three key Erlang books for content + topics (Erlang Programming, LYSE, Designing for Scalability)
  • Carry these over for use in the Chineual chapters
  • There are some pre-existing LFE examples and articles which may be pulled in for this as well (blog posts, Rosetta Code, various LFE orgs & repos, etc.)

Phase IV

  • Lastly, some of the most competent, useful, and even compelling online manuals / books being produced right now are for Rust
  • Examine those Rust resources for inspiration (content to cover, organisation of said content, etc.)
  • Pull in as applicable

Note: this is a work in progress, it's not being published to lfe.io/books yet. Drafts are published here: https://cnbbooks.github.io/lfe-manual/current

Primary sources

LFE:

Erlang:

Lisp:

Rust:

Contributing

If you are interested in contributing to this effort, the most important preparatory steps you can take are:

  • read up on the primary resources above
  • examine the content that has already been produced
  • have a discussion in #docs on the LFE Slack about an area of interest where you'd like to contribute
  • spend a few weeks diving into an agreed upon area in Erlang as well as LFE, examining their differences and taking notes on your experiences
  • spend a few days examining the Common Lisp analogs
  • fork this repo
  • write a concise narrative for the topic at hand in the same style as the content already produced
  • commit/push to your fork and submit a PR for the content
  • work with the editors to make changes according to their requests
  • rinse and repeat ๐Ÿ˜„

Migrate old, useful content from old docs site

I keep using the old docs site for some things (such as the list comprehension examples). Lets get that content moved into the manual, and then just link to it from the other pages.

Content to move:

Everything else can be scrapped.

As homage to the Chineual, change the book title

Possibilities, with the understanding that only "LFE CHINE NUAL" would appear on the (green) cover:

  • LFE Greenmachine Manual (the logo)
  • LFE Dreammachine Manual (?)
  • LFE Frankenmachine Manual (??)
  • LFE Multimachine Manual - "The multimachine is an all-purpose open source machine tool that can be built inexpensively by a semi-skilled mechanic with common hand tools, from discarded car and truck parts, using only commonly available hand tools and no electricity. Its size can range from being small enough to fit in a closet to one hundred times that size. The multimachine can accurately perform all the functions of an entire machine shop by itself."
  • LFE Moonshine Manual (nod to David Moon + chine -> shine)
  • LFE OTP-machine Manual
  • LFE Sunshine Manual (open source hippies? let the sun shine in? This is the dawning of the age of ...?)

Old docs site: Integrate "Lists & Simple Data" chapter

Tasks:

Integrate pattern-matching to all docs

Data types, expressions, etc.

Right now, "Pattern Matching" gets its own section towards the end of Part II -- Let's move that to the beginning of Part II, even before data types are discussed. Give an intro about it, that it is integral to the language, and every type section will show how to match that particular type.

Then do the same in the subsequent sections of Part III.

Old docs site: Integrate useful "intro" material

Tasks:

Pull in "Guide" content

New sections:

  • Style guide - the old repo will need to be deprecated once this is done

No need for a Beginner's Guide -- that's the whole "Getting Started" section.

New "Tooling" subsections:

  • Creating new projects
  • Using third-party libraries
  • Publishing projects
  • Upgrading tooling (we need to document some gotchas with rebar3 caching ... it gets people all the time; example commands to add: lfe/rebar3#86)

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.