Welcome to Node.js + Outreachy
Outreachy provides a collaborative environment in which newcomers from underrepresented backgrounds can get help working on their first contributions and a focused opportunity for them to dedicate a full-time effort to learning and contributing to FOSS. The program also assists people with finding mentors to help them with their projects. By participating in the program, interns develop a good understanding of the power of FOSS and skills necessary to continue contributing to it.
The Node.js project is excited to partner with Outreachy to invite newcomers with diverse perspectives into our community for the December 2016 cohort.
Participation is open internationally to all women (cis and trans), trans men, and genderqueer people. Additionally, it's open to residents and nationals of the United States of any gender who are Black/African American, Hispanic/Latin@, American Indian, Alaska Native, Native Hawaiian, or Pacific Islander. We are planning to expand the program to more participants from underrepresented backgrounds in the future.
Our sincerest gratitude goes out to the sponsoring organizations supporting Node.js in this awesome effort: Google, Intel, IBM, and Node.js Foundation.
- The Node.js project on GitHub
- Good first contributions in the Node.js issue tracker
- Getting started for applicants
- Mentor prep
- October 17: application deadline at 7pm UTC
- October 17 - November 8: applicants are encouraged to continue making contributions for the project they applied for; submitted applications are open for editing
- November 8: accepted participants announced on this page at 4pm UTC
- December 6, 2016 - March 6, 2017: internship period
What is Node.js?
Contributors to Node.js work on behalf of the community of users who build their applications and businesses with the Node.js platform. Accordingly, contributors must demonstrate an ongoing commitment, not only to the Project, but to the stability and vitality of the community as a whole...
The Node.js community is large, inclusive, and excited to enable as many users to contribute in whatever way they can. If you want to report an issue, help with documentation or contribute to the code base of the project, you’ve come to the right place."
How can I familiarize myself with the community and project?
We’re on IRC! Connect to irc.freenode.net in the #node.js channel with an IRC client or connect in your web browser to the channel using freenode's WebChat.
The GitHub issues list is the place for discussion of Node.js core features.
- Read more about our contributing and collaborator guidelines
- Check out some of our international communities
- Introduce yourself to the project's mentors and discuss what your tasks during the internship program would be.
- Quick getting started guide for contributing to Node.js thanks to our mentor, Rich Trott.
How to apply and application tips
The application process is described in detail at https://wiki.gnome.org/OutreachProgramForWomen#Send_in_an_Application. A contribution is required and you answer questions when you apply. You are expected to work full-time on the internship although you can indicate any pre-planned time off in your application.
In order to make your application stronger, here are a few things you could consider including:
- Previously worked projects/coding experience. If it is docs, related experience if any
- What do you intend to learn from the selected project? Or rationale behind choosing the specific project
- How do you think this internship is going to help you achieve what you wanted?
- Your next choice of projects if your first choice is not available
Also include information or link on your merged patch (which is a requirement to be considered for the internship). Please be available and responsive throughout the application period so we can work with you on improving your application.
Questions about the Node.js project?
With open source, just finding out where to ask your question can be intimidating. Email Tracy Hinds if you have any questions during the application process and she’ll be happy to find the person most helpful, if she isn’t it.
For information about expectations for mentors and to volunteer to be a mentor, see Outreachy mentors.
The volunteer mentors are:
- Franziska Hinkelmann
- Rich Trott, IRC: Trott
- Trevor Norris, IRC: trevnorris
- Myles Borins, IRC: thealphanerd
- Priyanka Sulugodua Prakash Murthy
- Tracy Hinds, Education Community Manager at the Node.js Foundation
Reach her at [email protected] or on IRC: hackygolucky
Improve the vm module in Node.js core
Mentor: Franziska Hinkelmann
The vm module is used in the Node.js command line and in DOM implementations, such as jsdom. Sadly, there are many open issues related to the module and it needs some love. Recent changes in V8, Node's JS engine, now make it possible to fix several of the issues and improve the vm code base significantly.
Mentor based in Europe.
Improve test coverage and expand feature set for the Node.js debugger
Mentor: Rich Trott
The Node.js built-in debugger is minimal. Test coverage is spotty and there may be opportunities for expanded functionality.
Mentor based in North America (San Francisco).
Improve AsyncHooks in Node.js core
Mentor: Trevor Norris
Mentor based in the North America (Utah).
Improving Serial Communication in Node.js by diving into libuv
Mentor: Myles Borins
One of the strengths of Node.js is the ability to run on various different operating systems. One of the ways in which this is accomplished is via libuv, a library for cross platform asynchronous I/O. Currently, doing serial communication in Node.js requires installing a module such as node-serialport which relies on natively compiled components. Having natively compiled components in a node module make it more difficult for individuals to install, and has been a blocker for new developers interested in getting involved with node-bots.
In this project, you will collaborate with members of the Node.js project, and members of the libuv project, to define and implement the necessary apis to remove the need for natively compiled components to support serial communication in Node.js. This will involve planning, implementation across code bases, and a certain level of open source politics to ensure that the work being done will fit the needs of the consumers in the Node.js ecosystem.
The project will be broken down into a number of stages including:
- Getting familliar with the Node.js code base
- Getting your first commits into Node.js core
- A list of good first contributions can be found here
- Getting familiar with the libuv code base
- Getting your first commits into libuv
- A list of future milestones can be found here
- Defining and implementing the interfaces needed in libuv for implementing Serial communication
- Defining and implementing the interfaces needed in Node.js to expose the libuv api's needed for implementing Serial communication
Collaborating with community projects to define and support an upgrade path.
Mentor in United States (NYC)
The Canary in the Gold Mine
Mentor: Myles Borins
The Canary in the Gold Mine (citgm) is the Node.js projects smoke testing utility. It runs the test suite of top modules in the Node.js ecosystem to ensure that changes to Node.js do not break other people's code. It is used to test releases and controversial changes before they land. The Jenkins job that utilizes citgm can be found on our CI. citgm is able to grab the source code of any module from the npm registry, install it's dependencies, and run it's test suite. citgm is shipped with a lookup table including over 70 of the top modules, it can automate the process of running all their test suites and report results in multiple formats.
There are a number of ways in which citgm can be improved including:
- optimizing performance
- introducing a cache
- improved ci environment
- testing by subsystem
- multi-jobs to test all release lines
- refactoring the logger
- adding new modules to be tested
- creating a website to display results
This project has the ability to take a variety of paths depending on what you are interested in.
Mentor in United States (NYC)
Node.js in Machine Learning
The mentee should review and learn the node-tensorflow module to find what we can get from this. The goal of the project for the mentee would be to get familiar with the module and teach the mentoring team.