Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Material for the revamped website #49

Closed
japaric opened this issue Feb 22, 2018 · 4 comments
Closed

Material for the revamped website #49

japaric opened this issue Feb 22, 2018 · 4 comments
Assignees
Milestone

Comments

@japaric
Copy link
Member

japaric commented Feb 22, 2018

A revamped Rust website will be released with the Epoch 2018 in mid September. The four domain WG
will have a space in the website to showcase their accomplishments and make the case for Rust in
their domain.

Some ideas that were discussed in the first meeting.

Who's our audience?

  • Early adopters: students, hobbyists, researchers, startups

    • Not a lot of existing organizational momentum
    • Compatibility / portability isn't too important, as long as it works for them
    • No / little expectation of technical support
    • Free (as in beer) matters
    • Community matters, good chance they will join and contribute
  • Regular firmware developers

    • Expect a mostly polished environment
      • e.g. vendor SDKs / IDEs
    • Willing to pay $$$$ for technical support / SDK / IDE / tooling
      • Or free (as in beer) is not that important
    • Organizational momentum
      • Established development workflows / programming patterns
    • Important to be able to easily port code between processor lines or even families. Examples
      • STMF1xx to STMF3xx (need more CPU/RAM/Flash than initially thought)
      • STMF3xx to STMF1xx (need less than initially needed, cost optimization, dev board to product transition)
      • STMF1xx to KL2x (different peripherals/uC features needed, cost savings, etc)
    • Important to be able to reuse code across projects
    • Community may or may not be important, unlikely to contribute back though
  • Safety critical market: automotive, aviation, etc.

    • Requires certified tooling (compiler / language) which costs $$$$$$ to certify
    • Regulatory overhead
      • Must convince safety orgs that Rust is "fit for purpose", not just managers

There was consensus on focusing on the first group in the short term, on the second group in the
medium term and on the last group in the long term.

What do we want to highlight?

  • Tooling: Cargo, package manager; RLS, IDE support; debugging Just Works, etc.

  • Zero cost abstractions: we are competing against C, not against MicroPython, eLua, Espruino, etc.

  • Type system preventing memory safety / logic bugs

  • Reusable code: crates.io, embedded-hal drivers

  • One step / easy setup

  • Consistent development experience across different architectures cf. Consistent development experience #44

What should we show on the website?

  • Hardware demos

  • Getting started guide that walks you through the development of an embedded application using an IDE

  • Cargo project templates

TODO

  • @japaric will ask the Rust team what kind of content can go on the website. Blog posts? videos? searchable crate catalogs? guides like tokio's?
@japaric japaric added this to the Epoch 2018 milestone Feb 22, 2018
@posborne
Copy link
Member

posborne commented Feb 22, 2018

Under "what do we want to highlight?" I would definitely add bidirectional C interop. Few places are going to want to go "whole hog" on Rust for an embedded product but might be willing to implement a module in Rust (with C as the "master") or use Rust as the "master" but continue to make use of existing things like drivers they have written in C.

Related discussion in #48

@jamesmunns jamesmunns mentioned this issue Feb 28, 2018
6 tasks
@japaric
Copy link
Member Author

japaric commented Jul 3, 2018

Belated update: During the Rust All Hands we talked with the website team and drafted the embedded WG webpage. This is the content that we agreed upon (remember that this single page is basically a marketing sheet that answers the question "why Rust for embedded development?"):

  • Videos of embedded Rust projects (carousel)
  • "Attributes" that answer the question "why Rust for embedded development?". e.g. Portability,
    interop, etc. (grid or three column thing with icons)
  • Links to documentation: embedded Rust book, embedonomicon, etc.
  • Commercial testimonials

Summary of what we briefly discussed in the last meeting:

We have issue #108 for collecting commercial testimonials. Videos will come from commercial users and from popular hobby projects like the monotron. Work on books is tracked elsewhere (#56 and #59).

@japaric
Copy link
Member Author

japaric commented Jul 23, 2018

@jamesmunns and @japaric will be working with the website team on the style of the embedded web
page. We need to be clear about the exact style / look we want. There are a few points that need to
be clarified:

Header / carousel

We wrote down: "Videos of embedded Rust projects (carousel)". A carousel makes me think of something
like the header of https://www.segger.com/ . Video in a header makes me think of the header of
https://www.patreon.com/ . But I've never seen the mix of those two: a carousel of videos. Anyone
has an example of that? First question,

  1. Single video of embedded projects or carousel of images or video carousel?

Also, if I look at the video of an embedded project. I would probably ask myself "What am I looking
at? As in: What's the name of this project? Or what is it about?" So,

  1. Do we want captions with names / descriptions in the video(s)?

I would also think "That's look cool! I want to know more! I want to look at the code!". So,

  1. Should we include links to the page of the project?

Finally,

  1. How much is too much? How many projects should be featured in the video / carousel? Should we
    have a limit on video length? (Maybe tweet size: 140 seconds?)

  2. Do we have videos at hand right now? That would probably ease the work of the designer.

Why Rust?

We had decided for icon + header + text + link to book per attribute / property. I think
https://www.zephyrproject.org/ can be used as a template. The text should include a Learn
more
link at the end. We should decide on the number of attributes, their
titles, icons and links now. The text can be refined later. How about:

Powerful static analysis

Icon: ???
Link: #118

Rust type system lets you enforce pin and peripheral configuration at compile time. Its ownership
system guarantees that resources won't be used by unintended parts of the application.

Flexible memory management

Icon: RAM stick?
Link: #125

Dynamic memory (heap) allocation is optional. Use a global allocator and dynamic data structures
from the Rust standard library. Or leave out heap allocation altogether and statically allocate
everything.

Safe concurrency

Icon: ???
Link: #124

Rust memory safety holds regardless of the concurrency framework. Be it threads with explicit shared
memory or tasks with message passing.

Interoperability

Icon: ???
Link: #48

Integrate Rust into your existing C codebase or leverage an existing SDK to write a Rust application.

Portability

Icon: ???
Link: #119

Write a library / driver once and use it with a variety of systems ranging from very small
microcontrollers to powerful SBCs.

  1. That'd be 5 attributes. Let's plan for 2 rows of 3 attributes to leave open the possibility of
    including an extra attribute (friendliness pointing to IRC with heart icon?)?

Documentation

Next we have links to documentation. We should decide on the style. We could
reuse the style of the attributes and keep it simple and use a book icon for the three links. Or we
could indicate increasing complexity using IC packages as the icons: DIP / SOP, TFQP and then BGA?

We have three books:

Discovery

Icon: SOP-8?

Learn embedded development from scratch using Rust!

The embedded Rust book

Icon: TQFP-32?

Get started with embedded Rust and learn all the tricks.

The embedonomicon

Icon: BGA?

Look under the hood of foundational embedded libraries.

Testimonials

Next section is testimonials. We should decide on the style --
here's one idea. And also on the number of testimonials (3?) and
the length (tweet size?).

Based on what we have collected in #108 we could go for something short like:

"Rust makes our customers happy, as well as our engineers." - Marc
Brinkmann
, 49nord

which is fragment of #108 (comment)

Or with something more detailed like:

"We are using Rust for our new Cortex-M3 based product, which is now in the development and
certification stage. Our application is a mix of C/C++ core libraries and domain specific logic in
Rust. So far we have had zero UB and memory corruption issues. We think it's really cool that we
can use a modern nice language in the embedded space where usually there's no alternative to
C/C++" - Aleksei Arbuzov, Terminal Technologies

which is a paraphrase of #108 (comment)

Or a mix of the two.

Production users

Here we list companies / institutions using Rust for embedded development. I think we can use the
style of https://www.rust-lang.org/en-US/friends.html here. Should we set a limit of the number of
"friends" to list here? Or we should grow this indefinitely?

@japaric
Copy link
Member Author

japaric commented Jul 27, 2018

Initial layout and content was submitted. The page has been integrated into the new website and styling was applied by the website team. The revamped website is not public yet so I can't share a picture with you at this time but it already looks nice, IMO.

This issue is done! Next stage is to iterate on the submitted content. #131 will track that work.

@japaric japaric closed this as completed Jul 27, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants