Index: native_client_sdk/src/doc/reference/ideas.rst |
diff --git a/native_client_sdk/src/doc/reference/ideas.rst b/native_client_sdk/src/doc/reference/ideas.rst |
new file mode 100644 |
index 0000000000000000000000000000000000000000..5b66d601894cac0cd2ee9595456d0228676d8b7c |
--- /dev/null |
+++ b/native_client_sdk/src/doc/reference/ideas.rst |
@@ -0,0 +1,143 @@ |
+.. _ideas: |
+ |
+================= |
+Contributor Ideas |
+================= |
+ |
+.. contents:: |
+ :local: |
+ :backlinks: none |
+ :depth: 3 |
+ |
+Contributing? Me‽ |
+================= |
+ |
+NaCl and PNaCl are very big projects: they expose an entire operating system to |
+developers, interact with all of the Web platform, and deal with compilers |
+extensively to allow code written in essentially any programming language to |
+execute on a variety of CPU architectures. This can be daunting when trying to |
+figure out how to contribute to the open-source project! This page tries to make |
+contributing easier by listing project ideas by broad area of interest, and |
+detailing the required experience and expectations for each idea. |
+ |
+This isn't meant to constrain contributions! If you have ideas that aren't on |
+this page please contact the native-client-discuss_ mailing list. |
+ |
+If you like an idea on this page and would like to get started, contact the |
+native-client-discuss_ mailing list so that we can help you find a mentor. |
+ |
+.. _native-client-discuss: https://groups.google.com/group/native-client-discuss |
+ |
+Ideas |
+===== |
+ |
+We've separated contributor ideas into broad areas of interest: |
+ |
+* **Ports** encompass all the code that *uses* the PNaCl platform. Put simply, |
+ the point of ports is to make existing open-source code work. |
+* **Programming languages** sometimes involves compiler work, and sometimes |
+ requires getting an interpreter and its APIs to work well within the Web |
+ platform. |
+* **LLVM and PNaCl** requires compiler work: PNaCl is based on the LLVM |
+ toolchain, and most of the work in this area would occur in the upstream LLVM |
+ repository. |
+* **NaCl** mostly deals with low-level systems work and security. |
+ |
+ |
+.. |
+ Adding a proposal to this document should follow this format: |
+ Project: *project title* |
+ Brief explanation: *brief description* |
+ Expected results: *how do we evaluate the project's success?* |
+ Knowledge Prerequisite: *programming languages, CS topics, ...* |
+ Mentor: *one or multiple, their roles in this project* |
+ The above list is inspired by the Google Summer of Code guidelines, and the |
+ KDE project list. |
+ |
+Ports |
+----- |
+ |
+ |
+Languages |
+--------- |
+ |
+PNaCl already has support for C and C++, and virtual machines such as |
+JavaScript, Lua, Python and Ruby. We'd like to support more languages, either by |
+having these languages target LLVM bitcode or by making sure that the language |
+virtual machine's APIs work well on the Web platform. |
+ |
+Rust |
+^^^^ |
+ |
+* **Project:** Support the Rust programming languages |
+* **Brief explanation:** The Rust_ programming language uses LLVM. The aim of |
+ this project is to allow it to deliver PNaCl ``.pexe`` files. |
+* **Expected results:** The Rust test suite passes within the browser. How to |
+ use Rust to target PNaCl is well documented and easy to do. |
+* **Knowledge Prerequisite:** Compilers, LLVM. |
+* **Mentor:** Ben Smith. |
+ |
+.. _Rust: http://www.rust-lang.org |
+ |
+Haskell |
+^^^^^^^ |
+ |
+* **Project:** Support the Haskell programming language |
+* **Brief explanation:** GHC_ targets LLVM. The aim of this project is to allow |
+ it to deliver PNaCl ``.pexe`` files. One interesting difficulty will be to |
+ ensure that tail call optimization occurs properly in all targets. |
+* **Expected results:** The Haskell test suite passes within the browser. How to |
+ use Haskell to target PNaCl is well documented and easy to do. |
+* **Knowledge Prerequisite:** Compilers, LLVM. |
+* **Mentor:** Ben Smith. |
+ |
+.. _GHC: |
+ http://www.haskell.org/ghc/docs/latest/html/users_guide/code-generators.html |
+ |
+Julia |
+^^^^^ |
+ |
+* **Project:** Support the Julia programming language |
+* **Brief explanation:** Julia_ targets LLVM, but it does so through LLVM's |
+ Just-in-Time compiler which PNaCl doens't support. The aim of this project is |
+ to allow it to deliver PNaCl ``.pexe`` files. |
+* **Expected results:** The Julia test suite passes within the browser. How to |
+ use Julia to target PNaCl is well documented and easy to do. |
+* **Knowledge Prerequisite:** Compilers, LLVM. |
+* **Mentor:** Ben Smith. |
+ |
+.. _Julia: http://julialang.org |
+ |
+Scala |
+^^^^^ |
+ |
+* **Project:** Support the Scala programming language |
+* **Brief explanation:** The aim of this project is to allow Scala_ to deliver |
+ PNaCl ``.pexe`` files. |
+* **Expected results:** The Scala test suite passes within the browser. How to |
+ use Scala to target PNaCl is well documented and easy to do. |
+* **Knowledge Prerequisite:** Compilers. |
+* **Mentor:** Ben Smith. |
+ |
+.. _Scala: http://www.scala-lang.org |
+ |
+Mono |
+^^^^ |
+ |
+* **Project:** Support C# running inside Mono |
+* **Brief explanation:** C# is traditionally a Just-in-Time compiled language, |
+ the aim of this project is to be able to run C# code withing Mono_ while |
+ compiling ahead-of-time. |
+* **Expected results:** The Mono test suite passes within the browser. How to |
+ use Mono to target PNaCl is well documented and easy to do. |
+* **Knowledge Prerequisite:** Compilers. |
+* **Mentor:** Ben Smith. |
+ |
+.. _Mono: http://www.mono-project.com |
+ |
jvoung (off chromium)
2015/02/11 18:53:45
elm-lang
JF
2015/02/11 23:30:15
Done.
|
+LLVM and PNaCl |
+-------------- |
+ |
jvoung (off chromium)
2015/02/11 18:53:45
Some sandbox-related optimizations? E.g., compiler
JF
2015/02/11 23:30:15
Done.
|
+ |
+NaCl |
+---- |