<html><head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
</head><body bgcolor="#FFFFFF" text="#000000">
<blockquote style="border: 0px none;" 
cite="mid:060ebbd4-f461-76e1-a34b-6383adc8ef2d@mozilla.com" type="cite">
  <div style="margin:30px 25px 10px 25px;" class="__pbConvHr"><div 
style="width:100%;border-top:2px solid #EDF1F4;padding-top:10px;">   <div
 
style="display:inline-block;white-space:nowrap;vertical-align:middle;width:49%;">
        <a moz-do-not-send="true" href="mailto:dteller@mozilla.com" 
style="color:#485664 
!important;padding-right:6px;font-weight:500;text-decoration:none 
!important;">David Teller</a></div>   <div 
style="display:inline-block;white-space:nowrap;vertical-align:middle;width:48%;text-align:
 right;">     <font color="#909AA4"><span style="padding-left:6px">2016 
December 14 at 13:12</span></font></div>    </div></div>
  <div style="color: rgb(144, 154, 164); margin-left: 24px; 
margin-right: 24px;" __pbrmquotes="true" class="__pbConvBody"><pre wrap="">On 14/12/16 19:48, Myk Melez wrote:
</pre></div>
</blockquote>
<blockquote style="border: 0px none;" 
cite="mid:060ebbd4-f461-76e1-a34b-6383adc8ef2d@mozilla.com" type="cite">
  <div style="color: rgb(144, 154, 164); margin-left: 24px; 
margin-right: 24px;" __pbrmquotes="true" class="__pbConvBody">
    <blockquote type="cite"><pre wrap="">Brendan is looking at addons manager startup perf at the moment, so he
should be able to speak to this.
</pre></blockquote>
<pre wrap=""><!---->
Wait, is he currently trying to use Node during the startup of Firefox?</pre></div>
</blockquote>
Yes, that's one of the use cases he's looking into.<br>
<br>
<blockquote style="border: 0px none;" 
cite="mid:060ebbd4-f461-76e1-a34b-6383adc8ef2d@mozilla.com" type="cite">
  <div style="color: rgb(144, 154, 164); margin-left: 24px; 
margin-right: 24px;" __pbrmquotes="true" class="__pbConvBody">
    <pre wrap="">Note that experience shows that loading JS code *during startup* and
afterwards have very different performance profiles.</pre>
  </div>
</blockquote>
Noted! Brendan is planning to do some startup perf measurements to get a
 sense of the cost of using Node during startup.<br>
<br>
<blockquote style="border: 0px none;" 
cite="mid:060ebbd4-f461-76e1-a34b-6383adc8ef2d@mozilla.com" type="cite">
  <div style="color: rgb(144, 154, 164); margin-left: 24px; 
margin-right: 24px;" __pbrmquotes="true" class="__pbConvBody">
    <pre wrap="">By the way, if we wish to head this way, we certainly need a path to
perform Node <-> JSM and Node -> XPCOM. Both might need some finesse.</pre>
  </div>
</blockquote>
In the experiments we've been doing, the Node modules have access to the
 Components global, which means they can access XPCOM APIs and JSMs. 
Likewise, JSMs can access Node modules.<span style="font-family: 
monospace;"><br>
  <br>
</span>
<blockquote style="border: 0px none;" 
cite="mid:060ebbd4-f461-76e1-a34b-6383adc8ef2d@mozilla.com" type="cite">
  <div style="color: rgb(144, 154, 164); margin-left: 24px; 
margin-right: 24px;" __pbrmquotes="true" class="__pbConvBody">
    <pre wrap="">Everything that increases true modularity (by opposition to XPCOM's
spaghetti modules) is a step forward, if it is feasible. I'm not
entirely convinced that we can do it with Firefox code, due to the
existing mess, but you may have ideas clearer than mine.</pre>
  </div>
</blockquote>
Perhaps, although I too think it'd be challenging, for a variety of 
reasons, which is why I started this thread. I'd like to get a sense of 
the potential value before we spend a bunch of time figuring out more of
 the details.<br>
<br>
<blockquote style="border: 0px none;" 
cite="mid:060ebbd4-f461-76e1-a34b-6383adc8ef2d@mozilla.com" type="cite">
  <div style="color: rgb(144, 154, 164); margin-left: 24px; 
margin-right: 24px;" __pbrmquotes="true" class="__pbConvBody">
    <pre wrap="">Yes, I'm thinking both of security risks and the npm-pocalypse. Using
yarn instead of npm would mitigate the latter, though.</pre>
  </div>
</blockquote>
Indeed. I'm agnostic about the tool (and repository, although yarn 
reuses NPM's repository). We could even vendor modules directly from 
their source repositories, although distributing via NPM is handy for 
enforcing a discipline of unit testing, documentation, and other best 
practices for NPM-distributed modules.<br>
<br>
-myk<br>
<br>
</body></html>