This is an intriguing proposal. There are parts I like, and parts that I will have to think about more before drawing an opinion.<div><br></div><div>Personally, I would like to see public classes be inheritable, public protocols be conformable, and public enums be switchable, unless specified otherwise. However I will defer to those who have more experience writing libraries.</div><div><br></div><div>On a first read-through, a few things stand out to me:</div><div><br></div><div>1. There are still five basic access levels: scope, private, internal, public, and open. I think this is too many, and would prefer to just have private, internal, and public.</div><div><br></div><div>2. The default is listed as “submodule”. I think the default should always be “module”, and restriction to a submodule should be explicit.</div><div><br></div><div>3. There is still a file-specific access level. I think this should be removed in favor of the submodule level. If submodules can be nested then there is no loss of expressivity, because a file could be made its own sub-submodule.</div><div><br></div><div>4. The proposal keeps a scope-based access level, which I think is unnecessary.</div><div><br></div><div>All that said, there is a lot to like about this model, and I will let the ideas percolate.</div><div><br></div><div>Nevin</div>