{"action":"created","issue":{"url":"https://api.github.com/repos/scala/slip/issues/19","labels_url":"https://api.github.com/repos/scala/slip/issues/19/labels{/name}","comments_url":"https://api.github.com/repos/scala/slip/issues/19/comments","events_url":"https://api.github.com/repos/scala/slip/issues/19/events","html_url":"https://github.com/scala/slip/issues/19","id":106987159,"number":19,"title":"Scala IO fix-up/overhaul","user":{"login":"dickwall","id":56453,"avatar_url":"https://avatars.githubusercontent.com/u/56453?v=3","gravatar_id":"","url":"https://api.github.com/users/dickwall","html_url":"https://github.com/dickwall","followers_url":"https://api.github.com/users/dickwall/followers","following_url":"https://api.github.com/users/dickwall/following{/other_user}","gists_url":"https://api.github.com/users/dickwall/gists{/gist_id}","starred_url":"https://api.github.com/users/dickwall/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dickwall/subscriptions","organizations_url":"https://api.github.com/users/dickwall/orgs","repos_url":"https://api.github.com/users/dickwall/repos","events_url":"https://api.github.com/users/dickwall/events{/privacy}","received_events_url":"https://api.github.com/users/dickwall/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/scala/slip/labels/big","name":"big","color":"e102d8"},{"url":"https://api.github.com/repos/scala/slip/labels/help%20wanted","name":"help wanted","color":"159818"},{"url":"https://api.github.com/repos/scala/slip/labels/ongoing","name":"ongoing","color":"d7e102"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":16,"created_at":"2015-09-17T13:38:35Z","updated_at":"2015-09-17T23:53:10Z","closed_at":null,"body":"scala.io.Source is small, useful, troubled and usually recommended against although still used by many.\r\n\r\nA recent SLIP submission: https://github.com/scala/slip/pull/2 suggested a Target cf to Source for similar functionality on the output. Feeling in the SLIP committee is that a Target that aimed to be the equivalent for output as Source is for input as it stands now would not be accepted into the core libraries, however, everyone seemed in favor of an overhaul of the scala.io library.\r\n\r\nSince this is likely to be a bigger task, we suggest an expert group form and meet to discuss and work on the problem. Interested parties identified in the meeting include Omid Bakhshandeh @omidb, Jon Pretty @propensive, Jesse Eichar @jesseeichar, Haoyi Li @lihaoyi and Pathikrit Bhowmick @pathikrit. The expert group will, of course, be open to volunteers willing to work on the implementation (if you are just interested in sharing your opinions, I suggest you attach comments to this thread rather than joining the EG).\r\n\r\nIn order to get things moving, and since the original PR came from @omidb, I suggest he take the lead in forming the group and setting up the first meeting. If at that point someone else wants to volunteer to take the organizational role for the group at that time, that would be the time to discuss it.\r\n\r\nPlease also note that any IO SLIP targeting Scala 2.12+ will have java's NIO guaranteed to be available, making NIO an option for the basis of an implementation.\r\n\r\nFirst steps:\r\n\r\nPlease organize the first expert group meeting and provide details of the decisions made and action items. Would suggest following the Either expert group's lead and holding the discussion in the open on Google hangouts-on-air or similar so that the recording is publicly available to all interested. If you are involved with the EG, please post any progress in comments on this issue."},"comment":{"url":"https://api.github.com/repos/scala/slip/issues/comments/141288034","html_url":"https://github.com/scala/slip/issues/19#issuecomment-141288034","issue_url":"https://api.github.com/repos/scala/slip/issues/19","id":141288034,"user":{"login":"lihaoyi","id":934140,"avatar_url":"https://avatars.githubusercontent.com/u/934140?v=3","gravatar_id":"","url":"https://api.github.com/users/lihaoyi","html_url":"https://github.com/lihaoyi","followers_url":"https://api.github.com/users/lihaoyi/followers","following_url":"https://api.github.com/users/lihaoyi/following{/other_user}","gists_url":"https://api.github.com/users/lihaoyi/gists{/gist_id}","starred_url":"https://api.github.com/users/lihaoyi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lihaoyi/subscriptions","organizations_url":"https://api.github.com/users/lihaoyi/orgs","repos_url":"https://api.github.com/users/lihaoyi/repos","events_url":"https://api.github.com/users/lihaoyi/events{/privacy}","received_events_url":"https://api.github.com/users/lihaoyi/received_events","type":"User","site_admin":false},"created_at":"2015-09-17T23:53:10Z","updated_at":"2015-09-17T23:53:10Z","body":"w.r.t. @Ichoran's description of \"core\" functionality, java.nio is perfectly usable to provide that. e.g. to [write to a file in a single line](http://stackoverflow.com/a/23917220/871202):\r\n\r\n```scala\r\nFiles.write(Paths.get(\"file.txt\"), \"file contents\".getBytes)\r\n```\r\n\r\nTo [read from a file in a single line](http://jdevelopment.nl/java-7-oneliner-read-file-string/)\r\n\r\n```scala\r\nnew String(Files.readAllBytes(Paths.get(\"test.txt\")))\r\n```\r\n\r\nThis works great. In fact, it's barely any more verbose than using io.Source to read from a file!\r\n\r\n```scala\r\nio.Source.fromFile(\"test.txt\").mkString\r\n```\r\n\r\nAnything we include in the standard library would need to be sufficiently better than java.nio to be worth it's weight in the standard library. "}}