{"action":"created","issue":{"url":"https://api.github.com/repos/swift-x/s4/issues/2","repository_url":"https://api.github.com/repos/swift-x/s4","labels_url":"https://api.github.com/repos/swift-x/s4/issues/2/labels{/name}","comments_url":"https://api.github.com/repos/swift-x/s4/issues/2/comments","events_url":"https://api.github.com/repos/swift-x/s4/issues/2/events","html_url":"https://github.com/swift-x/s4/issues/2","id":140017952,"number":2,"title":"Modularization vs Namespacing","user":{"login":"paulofaria","id":5126193,"avatar_url":"https://avatars.githubusercontent.com/u/5126193?v=3","gravatar_id":"","url":"https://api.github.com/users/paulofaria","html_url":"https://github.com/paulofaria","followers_url":"https://api.github.com/users/paulofaria/followers","following_url":"https://api.github.com/users/paulofaria/following{/other_user}","gists_url":"https://api.github.com/users/paulofaria/gists{/gist_id}","starred_url":"https://api.github.com/users/paulofaria/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/paulofaria/subscriptions","organizations_url":"https://api.github.com/users/paulofaria/orgs","repos_url":"https://api.github.com/users/paulofaria/repos","events_url":"https://api.github.com/users/paulofaria/events{/privacy}","received_events_url":"https://api.github.com/users/paulofaria/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":0,"created_at":"2016-03-10T21:44:49Z","updated_at":"2016-03-10T21:46:44Z","closed_at":null,"body":"Hi, everyone!\r\n\r\nI'm raising the discussion about modularization vs namespacing. The options would be.\r\n\r\n## Single Module\r\n\r\nWe would have only **one** module called `S4` which would have **all** protocols defined by the standard. Some protocols would need to have a prefix namespace like:\r\n\r\n- `HTTPRequestType`\r\n- `HTTPResponseType`\r\n- `HTTPResponderType`\r\n- `HTTPServer`\r\n- etc.\r\n\r\nAlso if you're writing a framework that uses just one protocol you would be forced to have everything. On the other hand having one module would imply less imports in case your framework uses lots of protocols from different modules. Having one module would also make the development easier, since we wouldn't need to worry about syncing tags across all modules, etc.\r\n\r\n## Multiple Modules\r\n\r\nWe would have multiple modules. The protocols wouldn't need the prefix cause they would be namespaced to the module. The downside would be a lot of imports in case you depend on lots of modules. It would be harder to maintain and maybe we would have to prefix the module itself, like:\r\n\r\n- `S4HTTP`\r\n- `S4Stream`\r\n- etc.\r\n\r\nWhat do you think it's best? Have any other suggestion or upsides and downsides that could be added?"},"comment":{"url":"https://api.github.com/repos/swift-x/s4/issues/comments/195064320","html_url":"https://github.com/swift-x/s4/issues/2#issuecomment-195064320","issue_url":"https://api.github.com/repos/swift-x/s4/issues/2","id":195064320,"user":{"login":"tannernelson","id":1342803,"avatar_url":"https://avatars.githubusercontent.com/u/1342803?v=3","gravatar_id":"","url":"https://api.github.com/users/tannernelson","html_url":"https://github.com/tannernelson","followers_url":"https://api.github.com/users/tannernelson/followers","following_url":"https://api.github.com/users/tannernelson/following{/other_user}","gists_url":"https://api.github.com/users/tannernelson/gists{/gist_id}","starred_url":"https://api.github.com/users/tannernelson/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tannernelson/subscriptions","organizations_url":"https://api.github.com/users/tannernelson/orgs","repos_url":"https://api.github.com/users/tannernelson/repos","events_url":"https://api.github.com/users/tannernelson/events{/privacy}","received_events_url":"https://api.github.com/users/tannernelson/received_events","type":"User","site_admin":false},"created_at":"2016-03-10T21:46:44Z","updated_at":"2016-03-10T21:46:44Z","body":"I'd say given the current limitations of SPM and also simplicity, one module. I don't think we will be adding anything besides HTTP soon. So we can cross that bridge when we get there. "}}