OLD | NEW |
---|---|
(Empty) | |
1 .. _ideas: | |
2 | |
3 ================= | |
4 Contributor Ideas | |
5 ================= | |
6 | |
7 .. contents:: | |
8 :local: | |
9 :backlinks: none | |
10 :depth: 3 | |
11 | |
12 Contributing? Me‽ | |
13 ================= | |
14 | |
15 NaCl and PNaCl are very big projects: they expose an entire operating system to | |
16 developers, interact with all of the Web platform, and deal with compilers | |
17 extensively to allow code written in essentially any programming language to | |
18 execute on a variety of CPU architectures. This can be daunting when trying to | |
19 figure out how to contribute to the open-source project! This page tries to make | |
20 contributing easier by listing project ideas by broad area of interest, and | |
21 detailing the required experience and expectations for each idea. | |
22 | |
23 This isn't meant to constrain contributions! If you have ideas that aren't on | |
24 this page please contact the native-client-discuss_ mailing list. | |
25 | |
26 If you like an idea on this page and would like to get started, contact the | |
27 native-client-discuss_ mailing list so that we can help you find a mentor. | |
28 | |
29 .. _native-client-discuss: https://groups.google.com/group/native-client-discuss | |
30 | |
31 Ideas | |
32 ===== | |
33 | |
34 We've separated contributor ideas into broad areas of interest: | |
35 | |
36 * **Ports** encompass all the code that *uses* the PNaCl platform. Put simply, | |
37 the point of ports is to make existing open-source code work. | |
38 * **Programming languages** sometimes involves compiler work, and sometimes | |
39 requires getting an interpreter and its APIs to work well within the Web | |
40 platform. | |
41 * **LLVM and PNaCl** requires compiler work: PNaCl is based on the LLVM | |
42 toolchain, and most of the work in this area would occur in the upstream LLVM | |
43 repository. | |
44 * **NaCl** mostly deals with low-level systems work and security. | |
45 | |
46 | |
47 .. | |
48 Adding a proposal to this document should follow this format: | |
49 Project: *project title* | |
50 Brief explanation: *brief description* | |
51 Expected results: *how do we evaluate the project's success?* | |
52 Knowledge Prerequisite: *programming languages, CS topics, ...* | |
53 Mentor: *one or multiple, their roles in this project* | |
54 The above list is inspired by the Google Summer of Code guidelines, and the | |
55 KDE project list. | |
56 | |
57 Ports | |
58 ----- | |
59 | |
60 | |
61 Languages | |
62 --------- | |
63 | |
64 PNaCl already has support for C and C++, and virtual machines such as | |
65 JavaScript, Lua, Python and Ruby. We'd like to support more languages, either by | |
66 having these languages target LLVM bitcode or by making sure that the language | |
67 virtual machine's APIs work well on the Web platform. | |
68 | |
69 Rust | |
70 ^^^^ | |
71 | |
72 * **Project:** Support the Rust programming languages | |
73 * **Brief explanation:** The Rust_ programming language uses LLVM. The aim of | |
74 this project is to allow it to deliver PNaCl ``.pexe`` files. | |
75 * **Expected results:** The Rust test suite passes within the browser. How to | |
76 use Rust to target PNaCl is well documented and easy to do. | |
77 * **Knowledge Prerequisite:** Compilers, LLVM. | |
78 * **Mentor:** Ben Smith. | |
79 | |
80 .. _Rust: http://www.rust-lang.org | |
81 | |
82 Haskell | |
83 ^^^^^^^ | |
84 | |
85 * **Project:** Support the Haskell programming language | |
86 * **Brief explanation:** GHC_ targets LLVM. The aim of this project is to allow | |
87 it to deliver PNaCl ``.pexe`` files. One interesting difficulty will be to | |
88 ensure that tail call optimization occurs properly in all targets. | |
89 * **Expected results:** The Haskell test suite passes within the browser. How to | |
90 use Haskell to target PNaCl is well documented and easy to do. | |
91 * **Knowledge Prerequisite:** Compilers, LLVM. | |
92 * **Mentor:** Ben Smith. | |
93 | |
94 .. _GHC: | |
95 http://www.haskell.org/ghc/docs/latest/html/users_guide/code-generators.html | |
96 | |
97 Julia | |
98 ^^^^^ | |
99 | |
100 * **Project:** Support the Julia programming language | |
101 * **Brief explanation:** Julia_ targets LLVM, but it does so through LLVM's | |
102 Just-in-Time compiler which PNaCl doens't support. The aim of this project is | |
103 to allow it to deliver PNaCl ``.pexe`` files. | |
104 * **Expected results:** The Julia test suite passes within the browser. How to | |
105 use Julia to target PNaCl is well documented and easy to do. | |
106 * **Knowledge Prerequisite:** Compilers, LLVM. | |
107 * **Mentor:** Ben Smith. | |
108 | |
109 .. _Julia: http://julialang.org | |
110 | |
111 Scala | |
112 ^^^^^ | |
113 | |
114 * **Project:** Support the Scala programming language | |
115 * **Brief explanation:** The aim of this project is to allow Scala_ to deliver | |
116 PNaCl ``.pexe`` files. | |
117 * **Expected results:** The Scala test suite passes within the browser. How to | |
118 use Scala to target PNaCl is well documented and easy to do. | |
119 * **Knowledge Prerequisite:** Compilers. | |
120 * **Mentor:** Ben Smith. | |
121 | |
122 .. _Scala: http://www.scala-lang.org | |
123 | |
124 Mono | |
125 ^^^^ | |
126 | |
127 * **Project:** Support C# running inside Mono | |
128 * **Brief explanation:** C# is traditionally a Just-in-Time compiled language, | |
129 the aim of this project is to be able to run C# code withing Mono_ while | |
130 compiling ahead-of-time. | |
131 * **Expected results:** The Mono test suite passes within the browser. How to | |
132 use Mono to target PNaCl is well documented and easy to do. | |
133 * **Knowledge Prerequisite:** Compilers. | |
134 * **Mentor:** Ben Smith. | |
135 | |
136 .. _Mono: http://www.mono-project.com | |
137 | |
jvoung (off chromium)
2015/02/11 18:53:45
elm-lang
JF
2015/02/11 23:30:15
Done.
| |
138 LLVM and PNaCl | |
139 -------------- | |
140 | |
jvoung (off chromium)
2015/02/11 18:53:45
Some sandbox-related optimizations? E.g., compiler
JF
2015/02/11 23:30:15
Done.
| |
141 | |
142 NaCl | |
143 ---- | |
OLD | NEW |