►
From YouTube: .NET Design Review: GitHub Quick Reviews
Description
-09:-52:-44 - Approved: Add a per Activity API to set the default ActivityIdFormat https://github.com/dotnet/corefx/issues/36999#issuecomment-500941214
00:16:14 - Approved: Add DisplayUnits property to EventCounter and friends https://github.com/dotnet/corefx/issues/37510#issuecomment-500943921
00:23:02 - Approved: [API review] Add Timers.Count https://github.com/dotnet/corefx/issues/38422#issuecomment-500951300
00:42:59 - Rejected: Add NullableAttribute https://github.com/dotnet/corefx/issues/36222#issuecomment-500957428
A
A
A
Yeah
I
apologize
that
we
basic
went
to
the
audibility
reviews
and
we
basically
preempted
this
meaning
a
few
times
at
the
row,
and
so
we
never
looked
at
the
backlog,
all
right.
So
it's
belief.
So
what
we
did
review
was
Soraka
:
instead
of
w3c
feature
at
some
point,
and
the
process
is
just
an
API
that
allows
you
to
set
the
format
ID
for
particular
instance
of
the
inactivity.
B
Yeah,
like
today,
the
today
when
you
create
an
activity,
if
you
didn't
call
this
proposed
API,
there's
a
bunch
of
sort
of
rules
in
the
start
method
of
activity
that
determine
what
format
of
ID
you're
gonna
get
like.
It
looks
at
the
parent
and
it
looks
at
a
static
and
it
looks
it.
You
know
some
defaults
and
you
know,
based
on
you
know
four
or
five
different
conditionals.
It
figures
out
what
kind
of
ID
you
should
have
right.
B
B
B
A
A
I
mean
you
have
at
least
one
setter,
which
is
activity
traits
legs
as
far
as
I
can
tell,
there's
also
force
default,
ID
phone,
but
that's
aesthetic,
but
the
rest
seems
to
be
good,
said
yeah
in
general.
I,
don't
think,
we've
a
rule
that
forbids
properties
if
you
have
to
call
them
before
method,
because
that's
a
pattern.
Let
me
have
another
process
in
the
framework
yeah
yeah
I
try
to
avoid
it's
like
having
dependencies
of
setters
themselves.
It
would
be
bad
to
say:
property
X
has
to
be
set
before
property.
A
Why
I
probably
should
them
to
be
acceptable
independently
of
each
other,
but
once
you
set
them
it's
okay
to
say
you
can
only
call
a
method.
You
know
once
the
state
is
completely
valid.
That's
usually
not
what
we
do.
I
know
it
seemed
like
everybody
makes
more
sense
to
me
seems
weird
to
have
a
method
here,
but
what
so
I.
C
A
B
A
Believe
in
dog,
I've
worked
with
process
and
I
only
don't
have
a
problem
with
that
pattern.
The
most
annoying
thing
is
is,
for
the
most
part
that,
having
methods
that,
through
all
the
properties
aren't
set,
can
be
annoying,
but
usually
the
Excel
semester
starts
exactly
what
you
have
to
fix.
So
I,
don't
think.
That's
that
bad,
but
just
in
those
cases,
you'd
rather
have
them
taken
in
this
argument.
So
you
know
that
you
have.
B
To
supply
and
and
definitely
I
mean,
of
course,
pre-existing
convention
is
that
start
is
not
gonna
throw
regardless,
whether
you
call
that
method
or
not
it's
just.
If
you
didn't
call
it,
then
it's
gonna
go
and
do
some
other
of
rules
to
figure
out
what
it
should
be
so
and
if
you
did
call
it,
then
that
overrides
everything
else.
What.
D
B
A
C
C
C
C
Could
be
convinced
to
do
the
the
explicit
set
method,
especially
since,
when
you
using
very
pretty
pretty
strongly,
then
you
have
strongly
held
beliefs
about
yes,.
D
I
mean
I
forget
design
a
lot
cleaner,
the
things
with
settable
properties,
our
configuration
things
with
methods
and
actors
in
it.
This
it
needs
to
be
changeable
like
this
one
like
we
have
a
much
cleaner
way,
something
on
the
method.
This
must
be
called
before
start
ill,
throw
in
our
valid
operation
exception.
If
start,
does
anything
called
do
that
on
the
property?
It's
just.
Please
know
it's.
C
There
was
a
conversation
in
the
thread
about
putting
within
the
constructor,
and
it
seemed
that
no
one
really
so
the
only
person
who
seems
who's
commented
on
the
thread
or
in
this
room
who
actually
has
a
strong
character
me
of
every
all.
The
rest
of
us,
including
the
folks
and
the
thread
it
seems,
are
just
kind
of
like.
C
B
Also
for
the
start
method,
there's
also
this
pattern
with
the
Diagnostics
listener,
where
you
don't
directly
call
start
on
the
activity.
You
basically
ask
the
Diagnostics
listener
to
start
the
activity
on
your
behalf,
so
at
least,
if
you
went
down
that
route,
you
would
also
need
to
overload
that
API
to
have.
You
know
multiple
variations
where
you
do
and
do
not
pass
the
new
argument.
I
mean
is
doable.
It
just
means
there's
more
api's
that
need
to
be
touched.
B
There
was
a
little
more
feedback
from
what
Ludmila,
who
was
also
talking
about
this,
the
set
ID
format,
if
basically
the
person
who
the
person
who
calls
that
method
to
set
it
might
not
be
the
same
person
as
the
entity
that
constructed
it
and
calls
start
as
in
because
of
the
diagnostic
listener.
This
object
gets
handed
out
to
a
tracing
system
and
the
tracing
system
could
actually
called
API
on
the
object,
which
then
goes
back
to
the
original.
You
know,
guy,
who
constructed
it
to
call
start.
E
B
A
It
seems
like
from
all
the
options
we
considered
like
Metin
seems
to
be
the
one
that
we
can
agree
with
the
most
and
a
separate
method
that
it's
not
time
to
the
other
method
also
seems
reasonable.
Like
I,
don't
quite
understand
the
proposal
that
Luke
Miller
proposed
to
have
like
her
tiny
and
default
ID
foreman
and
one
of
them
can
be
null,
it
seems
very
weird.
I
would
just
make
them
a
separate
method.
At
that
point,
it's
a
separate
concern.
D
C
B
C
A
G
A
E
B
A
But
basically,
let's
go
with
the
questions
again,
so
this
place
great
time
scale
is
only
your
access
is
only
the
conventional
is
only
the
unit's
aren't
supposed
to
be
personalized.
You
can
only
can
represent
the
units,
is
the
prefix
or
suffix.
Would
you
eat
this?
The
API
is
incredible
ability
this.
It
must
be
no
good
if
you
know
all
right.
A
A
We
got
malleability
like
that's
the
kind
of
thing
we're
looking
at
right
now,
I'll
be
reviewing
all
the
stuff
and
we
have
kind
of
author
parents,
so
we
have
sometimes
it's
not
when
it's
now.
Sometimes
we
accept
now.
But
then,
when
you
ask
for
later,
we
return
an
empty
string.
It
seems
like
for
things
like
displayname.
Empty
string
seems
reasonable,
like
it
was
weird
to
say
we
return
now,
I
mean
unless
you
have
a
scenario
where
you
want
to
differentiate
now,
meaning
it's
omitted
from
how
I
really
want
it
to
be
empty.
B
C
D
B
A
D
Yeah
I
mean
on
that
one.
The
only
question
is:
does
it
make
sense
that
someone
would
want
to
say
the
empty
string
of
I
am
self-descriptive
and
have
no
label,
as
opposed
to
somebody
else,
should
be
providing
the
label?
For
me
it
does
mean
that
whatever
language
can't
express
know,
which
is
why
we
have
the
treat
no
in
the
interesting.
That's
the
same
thing.
Don't
do
that
there
couldn't.
B
B
B
C
G
G
So
this
will
tell
you
the
counts
of
time
rooms
that
are
currently
scheduled.
The
one
thing
I
was
thinking,
as
should
we
call
it
count,
or
should
we
call
it
you,
but
otherwise
this
allows
you
to
track
how
many
timers
are
currently
scheduled
over
time
and
see
if
there's
a
constant
increase
to
find
leaks
or,
if
they're,
just
a
large
number
of
time.
There's.
G
G
H
D
I
C
I
G
I
C
I
I
There
are
three
possible
things:
I
think
this
could
be
tracking,
and
it's
only
one
of
them.
You
can
imagine
this
was
how
many
timers
have
been
created
over
time.
So
it's
your
monotonically
increasing
it's
not
that
it
could
be.
How
many
timers
have
queued
a
work
item
to
invoke
the
code
which
I
thought
was
what
you
were
saying
from
fire
and
it's
not
that
what
it
is
is
how
many
timers
have
been
created
and
are
still
in
the
system.
C
G
C
I
guess
my
my
concrete
question
was
there
was
a
performance
optimization
that
was
done
a
few
years
ago.
That
said,
even
if
I
D
scheduled
a
timer,
it
still
remains
in
the
queue
because
it's
more
expensive
to
remove
it
from
the
queue
than
it
is
to
just
let
the
overall
app
domain,
timer
fire
and
just
ignore
the
callback
Steve
I
think
you're,
probably
familiar
with
that
optimization.
If.
D
I
mean
our
guideline
is:
if
the
operation
is
orders
of
magnitude
slower
than
a
field
access,
it
should
be
a
method
instead
of
the
factory
and
I
feel
like
it
should
be
a
method
if
we've
added
similar
things
as
statics
on
other
types
in
this
release.
I
would
encourage
us
to
change
them
in
this
month,
because
it's
not
17,
and
otherwise,
if
it's
managing
existing
things
already
on
the
same
type
or
things
that
are
consistent
with
others
in
the
previous
versions.
C
A
One
thing,
though,
that
concerns
me
a
bit
is
like
you
detained
the
term
right
now:
it's
very
generic
and
its
aesthetic.
You
might
find
yourself
in
a
spot,
read
someone
you
want
to
expose
the
property
on
the
timer
instance
itself,
or
you
want
to
have.
If
you
want
to
do
a
global
enumeration,
for
example,
then
yeah
the
account
will
probably
be
you
know,
but
you
wouldn't
what
you
would
want
to
use
in
a
for
loop,
in
which
case
like
the
design
might
be.
The
very
name
would
be
unfortunate.
Bar
sensor.
A
E
C
H
C
D
If
they're
in
fools
thread
count
is
the
property
imaging
that
has
the
same,
not
quite
oh
one,
application
than
if
we
added
red
cool
died,
it's
got
old,
timer
count
or
whatever.
Then
that
seems
like
it's
at
least
consistent
unless
in
people's
face
I.
Think
if
you
want
the
Diagnostics,
you
look
at
thread
pool,
but
if
you
just
want
to
make
a
timer
event,
yeah.
H
I
Yeah,
if
you're
using
it
I
mean,
but
that's
that's,
not
a
fair
statement.
My
bird
depends
on
the
usage.
There
is
a
class
of
use
of
timer,
that's
used
for
canceling
operations,
where
you
start
a
time
right.
You
kick
off
an
operation
and
then
at
the
timer
fires
you
cancel
the
operation
and
the
vast
majority
of
cases.
You
start
a
timer,
for
you
know
90
seconds
and
the
operation
completes
at
a
millisecond
and
you
cancel
the
timer
know.
C
D
I
have
one
system
for
any
time:
they're
just
created
the
changes
to
the
Volturi
disposal,
but
you
don't
schedule
it.
You
just
use
a
timer
like
reg
scheduling
is
magic.
You
know
when
we're
done
changes
the
sniffer
yes,
but
the
people
who
want
timers
don't
understand
or
usually
don't
understand,
the
notion
of
thread,
scheduling
and
stuff
they're.
Just
like
there's
this
time
your
thing
it
does
magic.
C
Methods
do
you
gave
a
positive
answer
for
cancellation
tokens?
All
ship
also
show
up
in
this
count
makes
me
think
the
timers
just
really
not
the
right
class
for
this
count,
because
it's
really,
it
seems
more
of
an
app
domain-wide
like
number
of
things
that
are
in
queue
defier
at
some
point
in
the
future.
E
D
I
C
A
I
A
Honestly,
like
I,
don't
care
what
this
wasn't.
Fair
pool
or
I
am
a
per
se,
but
if
it
doesn't
thread
pool
property
would
make
the
most
sense,
considering
the
other
things
on
thread,
pool
if
it's
on
time
and
then
I
think
either
one
would
work.
I
would
just
encourage
us
to
not
call
it
count
of
apology,
always
like
I,
don't
know
scheduled
to
count
or
something
like
that.
I.
I
Think
if
we
were
gonna
put
it
on
thread,
pool
we've
it,
how
many
count?
How
many
are
these
count
properties
to
be
at
attack?
Well,
it's
like
two
or
three
really.
If
compared.
H
I
A
I
think
what
you
answered
earlier
is
important,
I
think
things
that
you
want
to
correlate.
It
should
be
on
on
a
combined
track,
because
that's
the
only
way
to
get
snapshot
semantics
that
they're,
like
so
consistent
right,
things
that
are
independent,
could
be
independent
properties
because
it's
like
well,
what
do
you
care
if
you're.
D
C
Saying
that
that's
implementation,
because
I
yeah
I,
think
you
can
probably
speak
to
the
GC
info
destruct,
but
it's
your
if
you're
already
calculating
one
of
those
pieces
of
data,
at
least
on
the
GC
info,
getting
all
the
other
ones
is
relatively
free.
So
why
not
type
of
size?
It
is
but
you're
saying
that's
not
the
case
here.
Okay,.
A
E
F
E
I
B
C
Nothing
stopping
us
from
adding
this
now
and
then
saying
in
the
future
like.
Oh,
if
we
decide
there's
more
relevant
correlated
information
to
give
you
at
that
point,
we
introduce
you
info
nothing
right,
and
maybe
just
obviously
this
one
at
the
same
time,
yeah
it's
just
unfortunate
right,
but
yeah.
Let
me
take
it.
C
C
I
F
I
D
D
A
I
D
G
D
I
C
A
F
F
This
is
no
matter
where
we've
been
in
meeting,
let's
say
for
the
last
six
months,
based
on
feedback,
Steve
and
I.
Miss
your
team.
We're
gonna
do
some
product
innovations
on
this,
which
are
linked
in
the
bottom
most
comments
and
the
general
idea
of
the
that
you
had.
It
was
just
the
the
there
are
years
to
add
two
more
attributes.
One
is
noble
context,
noble
context.
Oh
sorry,
I
forgot
to
say
so
here.
If
you
had
a
dictionary
or
little
string,
so
you
have
both
of
them
our
Fang.
F
Basically,
that
means
really
that
as
many
times
as
needed
to
for
all
the
positions
along
the
same
lines,
if
in
a
phenotype,
most
members
are
using
those
things
for
everything,
that's
where
the
most
beaut
noble
context
comes
into
play
and
basically
that's
the
way
of
sitting
in
defaults
horoscope.
So
now,
within
that
scope,
you
can
just
a
noble
with
a
different
value
or
changing.
F
E
F
F
F
But
I
mean
for
previous
attributes:
there
were
like
that.
We
had
for
dynamic,
we
had
a
goal
and
the
goal
basically
I
think
it's
true
for
if
they
make
and
if
it's
false,
if
it's
not
it
true,
is
not
very
meaningful,
we
could
have
used
an
enum
there
and
we
survived,
as
it
is
I
think
that's
very
arcane.
F
The
number
of
people
who
would
interact
with
actually
directly
is
super
small,
is
gonna
be
emitted
by
different
hollow
right
by
the
compiler,
and
then
there
might
be
some
reflection,
libraries
or
code
that
reads
it,
but
I,
because
they're
encoding
is
fairly
elaborate.
I
do
not
expect
people
to
interact
directly
with
this.
D
F
And
then
emo
had
a
question
about
there's
a
compiler
care
about
storage
that
we
have
there.
We
have
a
property
for
our
flags
or
does
the
compiler
only
care
about
the
structure?
Member
and
the
answer
via
the
compiler
only
cares
about
the
constructors
right.
The
reason
we
tend
to
include
a
field
or
properties
for
reflection,
basic
information,
yeah.
H
D
D
Know,
oh
yes,
it's
creating
the
type
in
the
assembly,
but
in
also
using
the
time
ya
know.
So,
if
we're
making
it
a
public
attribute,
then
the
bike
should
probably
change
to
any
time.
If
you
want
to
make
it
everyone
back
to
my
bike,
storage,
really,
then
I
assume
that
this
is
going
to
be
an
attribute.
Compiler
is
going
to
yell
at
you
and
tell
you
that
you
can't
annually
declare
all
right.
So
we
can.
F
D
Yeah,
that's
the
reflection,
yeah!
Well,
not
an
arousal
number
one!
Well,
not
like
you!
If
you
declare
it
yourself
using
the
square
bracket
available
whatever,
then
the
compiler
will
tell
you
that's
a
probably
that
should
we
can
set
it
yeah,
we
would
still
want
to
say
give
me
all
the
custom
attributes
of
type
multiple
attributes.
Do
they
want
to
go
and
ask
and
answer
you
know
ability
question,
so
they
can
make
sense
to
be
a
public
type
with
them,
and
then
it
constructed
that
we
don't
care
about.
For
and
sometime.
E
A
D
I
think
I'm
gonna
be
two
reasons
we're
putting
this
in
the
VCL.
One
is
so
that
we've
reduced
the
size
of
every
assembly,
but
the
Declaration
of
just
like
within
the
assembly,
isn't
really
going
to
be
significant,
so
they
could
care.
The
other
would
be
we're
adding
it
for
reflection
in
which
page
specific
names
so
that
they're
not
have
to
go
work
up.
I
A
F
A
F
H
C
C
G
C
D
D
C
C
D
E
F
A
We're
not
really
consistent,
like
the
other
one,
the
dynamic
one,
for
example,
exposes
I
list
apply,
which
I
don't
know
what
it
does.
Presumably
I,
don't
think
it
wraps
me
away.
I
haven't
checked,
but
I
really
like
this
is
one
of
those
things
were
not
super
consistently
busier
I
think
span
is
fine.
It's
the
cheapest
thing
we
can
do
and,
given
that
nobody
should,
we
should
ever
take
care
of
it
doesn't
matter
where
the
other
and
they
really
care
at
least
they
can
get
access
to
them.
I.
H
E
A
A
D
A
F
D
Yeah
I
mean
the
in
general.
We
just
have
a
problem
if
anything
that
has
a
everybod
property,
because
yours
are
usually
should
be
implemented
in
order
pending
a
copy.
So
if
we
just
start
saying
this
is
a
projection,
we
didn't
understand
its
saves
on.
The
copy
still
gives
it
as
an
indexical
property,
and
you
know,
Java
code
worked
really
hard
at
making
span
pass.