When I currently define a child, using the older style of starting supervisor trees, using supervisor(MySup, []) the supervising process calls start_link/0 on the sub-supervisor.
When trying to use the streamlined child specs and just providing only the module name with no arguments to Supervisor.start_link, the supervising process calls start_link/1 explicitly with an empty list [].
This is not _wrong_ I suppose but was surprising, since I would have expected it to function that same way given that I had not provided arguments to be passed to child_spec.
This is by design. The goal of the new child_spec is to always call start_link/1 by default and remove the "arguments dance" that we had in the past.
Most helpful comment
This is by design. The goal of the new child_spec is to always call start_link/1 by default and remove the "arguments dance" that we had in the past.