From Fedora Project Wiki
(mention npm stuff)
(22 intermediate revisions by 8 users not shown)
Line 10: Line 10:


The Node.js JavaScript runtime and associated ecosystem, including the npm package manager.
The Node.js JavaScript runtime and associated ecosystem, including the npm package manager.


== Owner ==
== Owner ==
<!--This should link to your home wiki page so we know who you are-->
<!--This should link to your home wiki page so we know who you are-->
* Name: [[User:Sgallagh| Stephen Gallagher]], [[User:Patches|T.C. Hollingsworth]]
* Name: [[User:alvesadrian|Adrian Alves]], [[User:Sgallagh| Stephen Gallagher]], [[User:Patches|T.C. Hollingsworth]]


<!-- Include you email address that you can be reached should people want to contact you about helping with your feature, status is requested, or  technical issues need to be resolved-->
<!-- Include you email address that you can be reached should people want to contact you about helping with your feature, status is requested, or  technical issues need to be resolved-->
* Email: sgallagh@fedoraproject.org, tchollingsworth@gmail.com
* Email: alvesadrian@fedoraproject.org, sgallagh@fedoraproject.org, tchollingsworth@gmail.com
 
=== People Involved - Packagers/Volunteers/Contributors ===
 
{|
!Name
!IRC
!Current work
!Additional info
|-
|[[User:Misc|Michael Scherer]]
|misc
|Maniac package reviewer
|UTC+2
|-
|[[User:Churchyard|Miro Hrončok]]
|mhroncok
|Reviewer
|UTC+1
|-
|[[User:Echevemaster|Eduardo Echeverría]]
|echevemaster
|Reviewer
|UTC-4:30
|-
|[[User:Jamielinux|Jamie Nguyen]]
|jamielinux
|Reviewer
|UTC
|-
|[[User:firemanxbr|Marcelo Barbosa]]
|firemanxbr
|Reviewer
|UTC-3
|-
|}


== Current status ==
== Current status ==
* Targeted release: [[Releases/19 | Fedora 19 ]]  
* Targeted release: [[Releases/19 | Fedora 19 ]]  
* Last updated: (2013-01-07)
* Last updated: 2013-03-11
* Percentage of completion: 60%
* Percentage of completion: 100%


<!-- CHANGE THE "FedoraVersion" TEMPLATES ABOVE TO PLAIN NUMBERS WHEN YOU COMPLETE YOUR PAGE. -->
<!-- CHANGE THE "FedoraVersion" TEMPLATES ABOVE TO PLAIN NUMBERS WHEN YOU COMPLETE YOUR PAGE. -->
== Detailed Description ==
== Detailed Description ==
<!-- Expand on the summary, if appropriate.  A couple sentences suffices to explain the goal, but the more details you can provide the better. -->
<!-- Expand on the summary, if appropriate.  A couple sentences suffices to explain the goal, but the more details you can provide the better. -->
Line 41: Line 74:
As of 2012-12-18, the major work for the runtime of Node.js is complete and committed to Rawhide. The remaining work is around building up the surrounding ecosystem, most notably with the addition of the npm (Node-packaged modules) package manager and developing packaging guidelines around it.
As of 2012-12-18, the major work for the runtime of Node.js is complete and committed to Rawhide. The remaining work is around building up the surrounding ecosystem, most notably with the addition of the npm (Node-packaged modules) package manager and developing packaging guidelines around it.


As of 2012-01-08, [https://bugzilla.redhat.com/show_bug.cgi?id=891171 reviews for npm] and its dependency chain and [[PackagingDrafts:Node.js]]draft packaging guidelines]] are being composed.
As of 2012-01-08, [https://bugzilla.redhat.com/show_bug.cgi?id=891171 reviews for npm] and its dependency chain and [[PackagingDrafts:Node.js|draft packaging guidelines]] are being composed.
 
As of 2013-03-08, [[Packaging:Node.js|packaging guidelines have been approved by FPC]] and npm is in Rawhide and F18 updates-testing.  The unstable version currently packaged in Fedora is scheduled to be released stable on 2013-03-11, at which point this feature will be complete.
 
As of 2013-03-11 Node.js upstream has released 0.10.0 and it has been built for Rawhide, along with the accompanying versions of libuv, v8 and npm. I'm leaving the Feature at 95% until we confirm that none of the other node-* packages require rebuilding to consume this new stable release. Otherwise, I believe this Feature to be complete.
[[User:Sgallagh|Sgallagh]] ([[User talk:Sgallagh|talk]]) 23:30, 11 March 2013 (UTC)


== How To Test ==
== How To Test ==
Line 58: Line 96:
-->
-->


Once complete, testing should be as simple as running 'npm install <module>' and verifying that it behaves in the way the documentation for that module indicates.  The [https://npmjs.org/ npm registry homepage] has lists of new and popular packages you can try out.
Once complete, testing should be as simple as running <code>npm install <module></code> and verifying that it behaves in the way the documentation for that module indicates.  The [https://npmjs.org/ npm registry homepage] has lists of new and popular packages you can try out.
 
=== Test that a simple javascript program can be run ===
 
  # yum install nodejs
 
  $ echo 'console.log("Hello World");' > /tmp/hello.js
  $ node /tmp/hello.js
 
This should display "Hello World!"
 
=== Test that npm work and that rpm package are seen by npm ===
 
  # yum install npm  nodejs-mkdirp
 
  $ npm list -g | grep mkdirp
 
This should show mkdirp version
 
=== Test that modules installed by rpm are usable by nodejs ===
 
  # yum install npm  nodejs-mkdirp
 
  $ mkdir /tmp/hello
 
  $ cd /tmp/hello
 
  $ npm link mkdirp
 
  $ cat > hello.js <<EOF
  var mkdirp = require('mkdirp');
 
  mkdirp('/tmp/foo/bar/baz', function (err) {
    if (err) console.error(err)
    else console.log('pow!')
  });
  EOF
 
  $ node hello.js
 
A folder /tmp/foo/bar/baz should now exist


== User Experience ==
== User Experience ==
Line 67: Line 145:
{{admon/note | All sections of this template are required for review by FESCo.  If any sections are empty it will not be reviewed }}-->
{{admon/note | All sections of this template are required for review by FESCo.  If any sections are empty it will not be reviewed }}-->


The availability of the Node.js runtime and the npm package manager will be visible to developers, who will now have the opportunity to deploy Node.js applications on their Fedora systems.  
The availability of the Node.js runtime and the npm package manager will be visible to developers, who will now have the opportunity to deploy Node.js applications on their Fedora systems. And this will also benefit to users, who will be able to use more easyly software like etherpad-lite or ethercalc directly on Fedora with the tradional security support offered by the distribution.


== Dependencies ==
== Dependencies ==
Line 83: Line 161:
* Node.js API documentation: http://nodejs.org/api/ or in the nodejs-docs RPM.
* Node.js API documentation: http://nodejs.org/api/ or in the nodejs-docs RPM.
* npm documentation: https://npmjs.org/doc/ or <code>man npm</code>
* npm documentation: https://npmjs.org/doc/ or <code>man npm</code>


== Release Notes ==
== Release Notes ==
Line 95: Line 172:




[[Category:FeatureReadyForWrangler]]
[[Category:FeatureAcceptedF19]]
<!-- When your feature page is completed and ready for review -->
<!-- When your feature page is completed and ready for review -->
<!-- remove Category:FeaturePageIncomplete and change it to Category:FeatureReadyForWrangler -->
<!-- remove Category:FeaturePageIncomplete and change it to Category:FeatureReadyForWrangler -->
<!-- After review, the feature wrangler will move your page to Category:FeatureReadyForFesco... if it still needs more work it will move back to Category:FeaturePageIncomplete-->
<!-- After review, the feature wrangler will move your page to Category:FeatureReadyForFesco... if it still needs more work it will move back to Category:FeaturePageIncomplete-->
<!-- A pretty picture of the page category usage is at: https://fedoraproject.org/wiki/Features/Policy/Process -->
<!-- A pretty picture of the page category usage is at: https://fedoraproject.org/wiki/Features/Policy/Process -->

Revision as of 05:09, 5 July 2013


Node.js

Summary

The Node.js JavaScript runtime and associated ecosystem, including the npm package manager.

Owner

  • Email: alvesadrian@fedoraproject.org, sgallagh@fedoraproject.org, tchollingsworth@gmail.com

People Involved - Packagers/Volunteers/Contributors

Name IRC Current work Additional info
Michael Scherer misc Maniac package reviewer UTC+2
Miro Hrončok mhroncok Reviewer UTC+1
Eduardo Echeverría echevemaster Reviewer UTC-4:30
Jamie Nguyen jamielinux Reviewer UTC
Marcelo Barbosa firemanxbr Reviewer UTC-3

Current status

  • Targeted release: Fedora 19
  • Last updated: 2013-03-11
  • Percentage of completion: 100%

Detailed Description

Node.js is a platform built on Chrome's JavaScript runtime for easily building fast, scalable network applications. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications that run across distributed devices.

Benefit to Fedora

Node.js is a very popular development and deployment ecosystem. By providing Node.js in Fedora, we increase our portfolio of software development tools. By catering to Node.js developers, we have an opportunity to bring in new developer talent to Fedora.

Scope

As of 2012-12-18, the major work for the runtime of Node.js is complete and committed to Rawhide. The remaining work is around building up the surrounding ecosystem, most notably with the addition of the npm (Node-packaged modules) package manager and developing packaging guidelines around it.

As of 2012-01-08, reviews for npm and its dependency chain and draft packaging guidelines are being composed.

As of 2013-03-08, packaging guidelines have been approved by FPC and npm is in Rawhide and F18 updates-testing. The unstable version currently packaged in Fedora is scheduled to be released stable on 2013-03-11, at which point this feature will be complete.

As of 2013-03-11 Node.js upstream has released 0.10.0 and it has been built for Rawhide, along with the accompanying versions of libuv, v8 and npm. I'm leaving the Feature at 95% until we confirm that none of the other node-* packages require rebuilding to consume this new stable release. Otherwise, I believe this Feature to be complete. Sgallagh (talk) 23:30, 11 March 2013 (UTC)

How To Test

Once complete, testing should be as simple as running npm install <module> and verifying that it behaves in the way the documentation for that module indicates. The npm registry homepage has lists of new and popular packages you can try out.

Test that a simple javascript program can be run

 # yum install nodejs
 $ echo 'console.log("Hello World");' > /tmp/hello.js
 $ node /tmp/hello.js

This should display "Hello World!"

Test that npm work and that rpm package are seen by npm

 # yum install npm  nodejs-mkdirp
 $ npm list -g | grep mkdirp

This should show mkdirp version

Test that modules installed by rpm are usable by nodejs

 # yum install npm  nodejs-mkdirp
 $ mkdir /tmp/hello
 $ cd /tmp/hello
 $ npm link mkdirp
 $ cat > hello.js <<EOF
 var mkdirp = require('mkdirp');
 
 mkdirp('/tmp/foo/bar/baz', function (err) {
   if (err) console.error(err)
   else console.log('pow!')
 });
 EOF
 $ node hello.js

A folder /tmp/foo/bar/baz should now exist

User Experience

The availability of the Node.js runtime and the npm package manager will be visible to developers, who will now have the opportunity to deploy Node.js applications on their Fedora systems. And this will also benefit to users, who will be able to use more easyly software like etherpad-lite or ethercalc directly on Fedora with the tradional security support offered by the distribution.

Dependencies

No other existing packages depend on this, though there are many Node-packaged modules such as less.js and some newer JQuery modules that will become available to Fedora now that we have the framework.

Contingency Plan

No contingency plan necessary. If it's not ready, the feature can be removed from the documentation until a future release. It does not impact any core functionality of the system.

Documentation

Release Notes

Fedora 19 now includes the Node.js JavaScript runtime environment for developing fast, scalable network applications using the JavaScript programming language. Also included is the npm package manager that provides access to over 20,000 libraries and applications available under free and open source licenses.

Comments and Discussion