{"action":"created","issue":{"url":"https://api.github.com/repos/viskell/viskell/issues/434","repository_url":"https://api.github.com/repos/viskell/viskell","labels_url":"https://api.github.com/repos/viskell/viskell/issues/434/labels{/name}","comments_url":"https://api.github.com/repos/viskell/viskell/issues/434/comments","events_url":"https://api.github.com/repos/viskell/viskell/issues/434/events","html_url":"https://github.com/viskell/viskell/issues/434","id":147127777,"number":434,"title":"Things I'd like to work on","user":{"login":"andrewdavidmackenzie","id":5529132,"avatar_url":"https://avatars.githubusercontent.com/u/5529132?v=3","gravatar_id":"","url":"https://api.github.com/users/andrewdavidmackenzie","html_url":"https://github.com/andrewdavidmackenzie","followers_url":"https://api.github.com/users/andrewdavidmackenzie/followers","following_url":"https://api.github.com/users/andrewdavidmackenzie/following{/other_user}","gists_url":"https://api.github.com/users/andrewdavidmackenzie/gists{/gist_id}","starred_url":"https://api.github.com/users/andrewdavidmackenzie/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/andrewdavidmackenzie/subscriptions","organizations_url":"https://api.github.com/users/andrewdavidmackenzie/orgs","repos_url":"https://api.github.com/users/andrewdavidmackenzie/repos","events_url":"https://api.github.com/users/andrewdavidmackenzie/events{/privacy}","received_events_url":"https://api.github.com/users/andrewdavidmackenzie/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":6,"created_at":"2016-04-09T13:01:05Z","updated_at":"2016-04-20T20:30:39Z","closed_at":null,"body":"Hi guys. I'd like to explain some context for my interest in Viskell, areas I'm interested in working on, and get feedback on the them (to avoid working on stuff that would then never get merged).\r\n\r\nAfter some discussion here I would close this issue and open some new ones on specific areas, each with limited scope, for more detailed discussion on specific subjects. Then you could assign to me.\r\n\r\n# Background\r\nI want to explore writing/describing programs in a way that is not procedural, where the dependencies between statements and blocks of statements are explicit (via \"data flows\" between them) and that alone determines execution order. These would be descriptions of what has to be done, not how to do it, not explicitly what steps in what order and in how many threads etc.\r\n\r\nThen I want to explore how to execute them in a highly parallel fashion on single core, multicore, and even across machines.\r\n\r\nThe language of the individual statements/blocks is not so important to me. A functional language where each block/function/lambda has no side effects fits well.\r\n\r\nA strongly typed language that compiles also fits well. Ideally I'd like something that executes faster than Haskell seems to do....but that may come later. \r\n\r\nThe lazy execution \"only execute a block when it's inputs are satisfied and it's output is requested\" model of Haskell also fits.\r\n\r\n# Viskell\r\nI started implementing something myself. I investigated other commercial apps that help you describe nested data flows (most are left overs from '90s focus on Structural Analysis and Design) and then export them into XML. I was reading the XML then in my app. But the visual tools came up short, were parts of massive toolsets for other purposes and I had no way to modify them. \r\n\r\nCreating the whole visual tool to describe such apps was a big job, and not core to what I wanted to do.\r\n\r\n# Practical apps\r\nI want to be able to describe and then run apps that are real and solve real problems, even during my exploration.\r\n\r\nI would like to be able to run them outside of viskell once described and saved, even if interpreted or slow, or single core initially.\r\n\r\n# Work required on Viskell\r\nThese are the areas that I think are needed and I propose to work on in Viskell:\r\n\r\n## IO and Main\r\nTo describe even the simplest app (\"Hello World!\") that can be executed outside of Viskell, you need to have it wrapped in a main, and so have some way of describing IOActions.\r\n\r\nI'm still reading up on Haskell's IOActions, but would like to implement at least something basic (print to stdout, read from standard input or a named file) to enable some real-world apps with visible \"side effects\" for the user.\r\n\r\nIn the Viskell app it would involve adding some additional window/pane that shows stdout and/or stderr, and maybe one for getting input from the user when required. Also requires adding some IOActions and the ability to include them in the toolbar .\r\n\r\n## Generate Source\r\nWould be good to extend the generated source so it generated a main and hence an executable app. Alternatively, a separate tool/command that took the saved .viskell file and generated source or ran it.\r\n\r\n## Nested code\r\nTo be able to describe bigger apps, share code between apps, make design of large apps more manageable, and even have shared libraries of code - Viskell needs a way to incorporate nested code described in Viskell (and maybe Haskell, to leverage existing code libraries?).\r\n\r\nThe idea is that the file description would define the inputs/outputs at the outer boundary and that is what is available to the apps incorporating them to be connected to in Viskell.\r\n\r\nThus you could describe a mega-block and save it, without any IOActions or main - and it could be used nested in another mega-block or app that has IOActions and Main."},"comment":{"url":"https://api.github.com/repos/viskell/viskell/issues/comments/212591376","html_url":"https://github.com/viskell/viskell/issues/434#issuecomment-212591376","issue_url":"https://api.github.com/repos/viskell/viskell/issues/434","id":212591376,"user":{"login":"comonoidial","id":14928502,"avatar_url":"https://avatars.githubusercontent.com/u/14928502?v=3","gravatar_id":"","url":"https://api.github.com/users/comonoidial","html_url":"https://github.com/comonoidial","followers_url":"https://api.github.com/users/comonoidial/followers","following_url":"https://api.github.com/users/comonoidial/following{/other_user}","gists_url":"https://api.github.com/users/comonoidial/gists{/gist_id}","starred_url":"https://api.github.com/users/comonoidial/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/comonoidial/subscriptions","organizations_url":"https://api.github.com/users/comonoidial/orgs","repos_url":"https://api.github.com/users/comonoidial/repos","events_url":"https://api.github.com/users/comonoidial/events{/privacy}","received_events_url":"https://api.github.com/users/comonoidial/received_events","type":"User","site_admin":false},"created_at":"2016-04-20T20:30:39Z","updated_at":"2016-04-20T20:30:39Z","body":">>   adding more constructs to make Viskell a 'complete' programming language\r\n>\r\n> That seems like one better suited to the core team that developed it, which knows it better and probably Haskell better too.\r\n>\r\n> From what you have said before, sounds like disconnecting viskell from haskell, or the UI from the graph model and it's evaluation is out of scope (I have thoughts on that though if you're interested).\r\n\r\nMost of the constructs viskell are not very haskell specific, any modern function programming language with an expressive enough type system would suffice. I see using haskell just as a convenient starting point, so we don't also have to invent complete new programming language at the same time. We try to avoid introducing haskell syntax and other complexities into viskell.\r\nIn the long term viskell could move towards being a superset of multiple languages, where different libraries and code generator can give alternative concrete interpretations of common set of visual constructs. We did some experiments with generating hardware descriptions already.\r\n\r\nMoving the concrete ideas to seperate issue is a good idea.\r\nI hope @wandernauta can give you some feedback on the scaling/nesting/loading aspects, as he has spent more time on thinking about these issues."}}