Perhaps this is because I'm an existing user but the argument that looking two directories deep is heavy doesn't resonate with me. The user is already invoking swift package init
from the command line so they must be at least reasonably comfortable using the command line and navigating file hierarchies; navigating one level deeper to find source files doesn't seem like a big stretch.
As mentioned above (and by others) the issue with the current template for executables and tools make it difficult to add more targets. It biases too heavily towards new users at the expense of additional burden for existing users who are likely to add additional targets (it's common to start with an executable and end up with an executable depending on a library and tests for the library).
I think you're right to explore different layouts, so what if we inverted the target and purpose? For a library this would be:
.
├── Package.swift
└── SomeLibrary
├── Sources
│ └── SomeLibrary.swift
└── Tests
└── SomeLibraryTests.swift
For executables and tools the template could elide the 'purpose' (i.e. Sources/Tests) and the entry point would be one-level deep. Adding new targets later would not add burden as they would be at the top-level.
.
├── Package.swift
├── SomeExecutable
│ └── main.swift
└── SomeLibrary
├── Sources
│ └── SomeLibrary.swift
└── Tests
└── SomeLibraryTests.swift