nodejs / code-and-learn

A series of workshop sprints for Node.js.
164 stars 79 forks source link

Code And Learn at NodeFest 2017 #72

Closed hiroppy closed 6 years ago

hiroppy commented 7 years ago

Hi!

We will hold NodeFest which is the largest Node.js conference in Japan. I’m one of the organizers this year. The team members are @yosuke-furukawa, @watilde, myself and some other great nodeschool staff.

We would like to open code-and-learn-jp on NodeFest and support the contribution to nodejs/core.

Please feel free to suggest any contribution areas for the participants! @nodejs/collaborators We will receive some PRs on 26th November.(http://nodefest.jp/2017/schedule.html)

/cc @yosuke-furukawa @watilde @nodejs/nodejs-ja

Thanks.

Mentors

joyeecheung commented 7 years ago

cc @Trott @addaleax

Also, I will be there. Happy to help out with whatever needed.

ronkorving commented 7 years ago

Of course I will be there 👍

vsemozhetbyt commented 7 years ago

Possible case in tests: https://github.com/nodejs/node/pull/16243#discussion_r145045432 + next comment: check else if by if replacements when a previous if contains return. Also check else eliminations on similar condition.

hiroppy commented 7 years ago

@vsemozhetbyt Thank you for your information!

watilde commented 7 years ago

Note: Here is the last time we had - https://github.com/nodejs/code-and-learn/issues/58

jasnell commented 7 years ago

This is awesome. Keep in mind that we're also running a small code-and-learn at NodeConf EU at the beginning of November so some of the tasks may adjust after that. We should likely coordinate a bit in advance to make sure we don't end up duplicating any effort! :-) (I totally wish I was able to get to Tokyo this year)

One possible set of tasks that I can suggest for new contributors who are bit more confident in their Node.js skills, would be converting tests to use the new ../common/countdown utility module.

For instance, if you take a look at: https://github.com/nodejs/node/blob/master/test/parallel/test-http2-client-destroy.js, you'll see that there is a remaining counter (https://github.com/nodejs/node/blob/master/test/parallel/test-http2-client-destroy.js#L19). The test then counts down remaining before closing the server. There are quite a large number of tests in our suite that perform similar actions in ways that are rather inconsistent. The ../common/countdown utility was designed to bring some consistency there.

The way the Countdown utility works is straightforward:

const common = require('../common');
const Countdown = require('../common/countdown');

// ...

const countdown = new Countdown(n, common.mustCall(() => {
  // do something here
}));

// Decrement the counter, the callback is called synchronously when
// countdown.dec is called n times.
countdown.dec();

I know that there are quite a few of the http2 tests that can benefit from this, along with a bunch of other http and https tests.

These tasks would be for folks who are a bit more comfortable with their Node.js skills.

apapirovski commented 7 years ago

Another potential suggestion is replacing assert.throws(fn, common.expectsError(err)); with common.expectsError(fn, err); It's another thing I would like to ideally introduce an eslint rule for (already have it written) but there are currently a ton of instances where we use the former.

I think that's pretty similar in difficulty to the change that was done at Node.js Interactive this year.

AndreasMadsen commented 7 years ago

A simple thing is removing the redundant + from +conf.n in the benchmarks. If the values are integers in the bench(main, conf) object they will be integers in the main(conf) object too.

example: https://github.com/nodejs/node/blob/master/benchmark/assert/deepequal-object.js#L30L31

hiroppy commented 7 years ago

@jasnell @apapirovski @AndreasMadsen Thanks.🙌 I try to summarize that information in Gist.
You should come to Nodefest2017!!

MylesBorins commented 7 years ago

I can help!

Any interest in running a values session similar to what we did at node interactive?

On Oct 19, 2017 5:01 AM, "Yuta Hiroto" notifications@github.com wrote:

@jasnell https://github.com/jasnell @apapirovski https://github.com/apapirovski @AndreasMadsen https://github.com/andreasmadsen Thanks.🙌 I try to summarize that information in Gist. You should come to Nodefest2017!!

— You are receiving this because you are on a team that was mentioned. Reply to this email directly, view it on GitHub https://github.com/nodejs/code-and-learn/issues/72#issuecomment-337845316, or mute the thread https://github.com/notifications/unsubscribe-auth/AAecVwrKcRTYEduY19ofZjv5tBf_N2vsks5stw_XgaJpZM4P9VKJ .

apapirovski commented 7 years ago

@abouthiroppy For my suggestion above, I created a gist with an eslint rule that will let you find all instances of assert.throws(fn, common.expectsError(err));.

hiroppy commented 7 years ago

@MylesBorins Thanks!! yep, but I don't know the values session of node interactive. Would you give me this information?

@apapirovski wow, thank you so much 🙇 I'll use it!

seishun commented 7 years ago

I'm on the fence about attending (concerned about the cost mostly).

fhinkel commented 6 years ago

Also, I will be there. Happy to help out with whatever needed.

hiroppy commented 6 years ago

Sorry for my late reply.

@seishun I think that Node.js Foundation will help with the cost. @fhinkel Thanks!

Trott commented 6 years ago

@seishun I think that Node.js Foundation will help with the cost.

I don't think the foundation typically sends Collaborators to an event simply because it's a Node.js event. It's usually a Collaborator Summit. There have been some exceptions though, like sending particular people to a TC-39 meeting one time.

That said, there's absolutely nothing stopping any Collaborator from requesting funds from the TSC for something by opening an issue in the TSC repository.

MylesBorins commented 6 years ago

Have we prepared a list of changes for participants to implement?

How many people are we expecting?

yosuke-furukawa commented 6 years ago

I guess 30 - 50 people.

yosuke-furukawa commented 6 years ago

Have we prepared a list of changes for participants to implement? Not yet !! I will create the list asap...

MylesBorins commented 6 years ago

I can help collect some changes after I run the Taiwan code and learn

On Nov 20, 2017 4:53 AM, "Yosuke Furukawa" notifications@github.com wrote:

Have we prepared a list of changes for participants to implement? Not yet !! I will create the list asap...

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/nodejs/code-and-learn/issues/72#issuecomment-345645203, or mute the thread https://github.com/notifications/unsubscribe-auth/AAecV2P7RIvNo1FfAQ8eK5A-sJwbyhLpks5s4UwQgaJpZM4P9VKJ .

hiroppy commented 6 years ago

a list of changes for participants 

TODO file line note status
Fix typo doc/api/util.md 695 occuring
Add link of ECMAScript 2015 doc/api/buffer.md 2740
Add link to dns.resolve() doc/api/dns.md 632
Use common.hasIntl instead of typeof Intl test/parallel/test-intl-v8BreakIterator.js 6
replace Function with Arrow Function doc/api/util.md 442, 552, 567, 568
test-writeint.js
test-querystring.js
test-assert.js
test-http.js 109, 118, 127, 128
test-http-pause.js
doc/api/vm.md 477
test-timers.js
test-whatwg-url-searchparams-getall.js
test-writeuint.js
test-child-process-send-cb.js
test-zerolengthbufferbug.js
test-domain-top-level-error-handler-clears-stack.js
use === and ' test-whatwg-url-setters.js 43
add ; test-whatwg-url-setters.js 35, 81
make use of const or let test-whatwg-url-setters.js 41 - 49
many files.... find ./ -type f -print | xargs grep var
fix comments test-assert.js 617, 5292
make use of Number.isNaN test-process-emit.js 22
test-readdouble.js
test-readfloat.js
test-writedouble.js
test-writefloat.js

please modify freely!

joyeecheung commented 6 years ago

We can try replacing all the google.com or this.hostname.is.invalid etc. references in test/parallel with configurable variables defined in internet.addresses

joyeecheung commented 6 years ago

Also there are a few tasks that could be more advanced: find the tests in test/parallel that are making actual dns calls, use mocked lookup functions or put those in test/internet. Searching for DNS error codes like EAI_AGAIN or ENOTFOUND in test/parallel would yield a bunch of tests that try to work around this even though they are not supposed to work around that.

joyeecheung commented 6 years ago

There is also https://github.com/nodejs/node/issues/17169 , see https://github.com/nodejs/node/issues/17169#issuecomment-346087689

watilde commented 6 years ago

I've added some to https://github.com/nodejs/code-and-learn/issues/72#issuecomment-345667395.

joyeecheung commented 6 years ago
TODO file line note status
Replace e->ToObject(env->isolate()) with e->ToObject(env->context()).ToLocalChecked() src/node.cc line 592
Replace e->ToObject(env->isolate()) with e->ToObject(env->context()).ToLocalChecked() src/node.cc line 754
Replace er->ToObject(env->isolate()) with er->ToObject(env->context()).ToLocalChecked() src/node.cc line 1485
Replace args[0]->ToObject(env->isolate()) with args[0]->ToObject(env->context()).ToLocalChecked() src/node.cc line 2304
Replace args[1]->ToString(env->isolate()) with args[1]->ToString(env->context()).ToLocalChecked() src/node.cc line 2322
Replace module->Get(exports_string)->ToObject(env->isolate()) with module->Get(exports_string)->ToObject(env->context()).ToLocalChecked() src/node.cc line 2367
Replace process_object->Get(exit_code)->ToInteger(env->isolate()) with process_object->Get(exit_code)->ToInteger(env->context()).ToLocalChecked() src/node.cc line 4340
Replace args[1]->ToString(env->isolate()) with args[1]->ToString(env->context()).ToLocalChecked() src/node_buffer.cc line 609
Replace args[0]->ToString(env->isolate()) with args[0]->ToString(env->context()).ToLocalChecked() src/node_buffer.cc line 680
Replace args[0]->ToString(env->isolate()) with args[0]->ToString(env->context()).ToLocalChecked() src/node_contextify.cc line 624
Replace args[1]->ToObject(env->isolate()) with args[1]->ToObject(env->context()).ToLocalChecked() src/node_file.cc line 1222
Replace e->ToObject(env->isolate()) with e->ToObject(env->context()).ToLocalChecked() src/node_http_parser.cc line 469
Replace args[1]->ToObject(env->isolate()) with args[1]->ToObject(env->context()).ToLocalChecked() src/node_zlib.cc line 181
Replace args[4]->ToObject(env->isolate()) with args[4]->ToObject(env->context()).ToLocalChecked() src/node_zlib.cc line 190
Replace args[0]->ToObject(env->isolate()) with args[0]->ToObject(env->context()).ToLocalChecked() src/process_wrap.cc line 146
Replace chunk->ToString(env->isolate()) with chunk->ToString(env->context()).ToLocalChecked() src/stream_base.cc line 130
Replace chunk->ToString(env->isolate()) with chunk->ToString(env->context()).ToLocalChecked() src/stream_base.cc line 182

This is generated with a script but should be a safe list

joyeecheung commented 6 years ago

Sorry, accidentally pressed the wrong button

MylesBorins commented 6 years ago

All of the following files have string concatenation that can be replaced with template strings

Refactor instances of concatenated strings to use template strings as long as the result is less than 80 characters (our max line length). Not all instances of concatenated strings need to be replaced, specifically look out for strings that are using concatenation for variables. If you are unsure please feel free to raise your hand an ask for assistance. Alternatively a collaborator will be able to verify your work when you submit your pull request.

  'test/abort/test-zlib-invalid-internals-usage.js'
  'test/async-hooks/init-hooks.js'
  'tools/doc/json.js'
  'benchmark/zlib/creation.js'
  'doc/api/stream.md'
hiroppy commented 6 years ago
TODO file line note status
replaced with template strings
test/async-hooks/init-hooks.js
test/abort/test-zlib-invalid-internals-usage.js 15
tools/doc/json.js 15
doc/api/stream.md 767
devsnek commented 6 years ago

can i just say, you guys are doing fantastic stuff here.

kt3k commented 6 years ago

It was very fun! thank you!

hiroppy commented 6 years ago

@yosuke-furukawa @joyeecheung @MylesBorins Thank you for your help! I was really happy :)