10 ms·
Unison: a next-generation programming platform
- jackmaney 11y agoPro Tip: if I have to dig through eight paragraphs of fluff to find out what the fuck your product is, then you REALLY need to rethink the description of your product. In particular, it was not at all clear what was meant by a "programming platform". Until I finally stumbled onto the description below, I thought it was just another web-based IDE. > What is the Unison platform? At a high level, it consists of three components: > * The Unison language: a powerful, typed, purely functional underlying programming language > * The Unison editor: a rich, in-browser semantic editor for editing programs > * The Unison node: the backend implementation of the Unison language, its typechecker, and the API used by the Unison editor and other remote nodes in the network > The collection of Unison nodes (the Unison web) form a network platform in which data and functions may be trivially exchanged, with a minimum of friction.
- jackmaney 11y agoAs with many things in life, there's also a relevant xkcd: https://xkcd.com/927/ https://xkcd.com/927/
- banebot 11y agoThis was the first thing that came to mind about a paragraph into reading
- woah 11y agoThere should be an xkcd about people overusing that xkcd in every possible context
- geon 11y agoI don't see how that is relevant. The author's complaint isn't that there are too many languages, but that none of them are good enough.
- mtrimpe 11y agoIf I understand it correctly it's like Typed Racket with a purely functional AST which is also a content-addressable Merkle-tree and a UI with paredit-style type correctness.
- vinodkd 11y agothis was strangely entirely grokkable, thanks.
- irickt 11y agoThe author posted a followup to counter the impressions of vaporware: http://unisonweb.org/2015-05-07/update.html http://unisonweb.org/2015-05-07/update.html
- EricSu 11y ago....which is also 8 paragraphs of fluff and trying to connect with the audience
- teacup50 11y agoI understand clearly what it is; perhaps it's only fluff to you because it's aimed higher than your technical reading level?
- EricSu 11y agoPlease tell me how things like "I am kind of kicking myself for making what ended up being a bad tech choice..." and "gak!" are directly informative of the point of the article? This article needs to take a tl;dr approach and cut down the statements that could be stated in one sentence. Maybe other people might want to know this guy's thought process behind everything, but I'm much more engaged with the cold facts. 1-2 months to research Elm and transition the Unison editor? Okay that's all I need to know. Realistically you would probably only be able to work part-time because you are a paid consultant? Okay cool that's self explanatory, you need to make money and we get that. This article is informative, but it could've been edited to a maximum word count. P.S. Thanks for being mature. I willingly admit that I'm young and I have a lot to learn, but I do happen to know terms like HTTP+JSON and why a one-file-per-hash system is an insanely inefficient implementation.
- davedx 11y agoPro tips: * Be courteous when offering constructive criticism (that means, for example, don't swear at people) * Often it's not the project owners posting things on HN - many projects aren't necessarily ready for public consumption when they end up on here * This doesn't even appear to be a "product". It's an open source project that seems to have been recently put out there Absolutely typical that this is the top rated comment. Hacker News, you SUCK.
- jackmaney 11y ago> * Be courteous when offering constructive criticism (that means, for example, don't swear at people) This may shock you, but the internet wasn't fucking built for five year olds. > * Often it's not the project owners posting things on HN - many projects aren't necessarily ready for public consumption when they end up on here That doesn't mean that they aren't open to constructive criticism. > * This doesn't even appear to be a "product". It's an open source project that seems to have been recently put out there Fine. s/product/project/. Better? > Absolutely typical that this is the top rated comment. Hacker News, you SUCK. Language!
- dalek_cannes 11y agoAgreed. It's disturbing that there are so many members who are seemingly intelligent, but either haven't read the guidelines or think that guidelines don't apply to them.
- deleted 11y ago[deleted]
- benihana 11y ago>Hacker News, you SUCK. Very constructive and courteous.
- dang 11y ago> Absolutely typical that this is the top rated comment. Hacker News, you SUCK. Your other points are right (I winced at that "what the fuck your product is", and I bet most readers did), but this one isn't. Acerbic dismissals are a problem on HN, but they're far from "absolutely typical". The trouble with that false generalization is that it conditions us to see the community the wrong way. Repeat too often that a town doesn't care about litter, and more people will be careless with their trash. But users here do care. It's better to view this systemically, as a tragedy-of-the-commons problem that we all need to work on, than to make a big blaming judgment as if it were easy for things to be better. They should indeed be better—but it's not that easy. What is easy is to see it as everybody else's problem ("Hacker News, you suck"). In reality, anybody commenting on Hacker News is part of it, so we're talking about ourselves.
- callum85 11y agoThis isn't a 'Show HN'.
- ripter 11y ago> Perhaps 70% of developer time is spent dealing with parsing, serialization, and persistence. Values are encoded to and from JSON, to and from various binary formats, and to and from various persistent data stores… over and over again. This is not my experience at all. I've spent maybe an hour or two in the last few months on parsing, serialization, and persistence. For the work I do, these are all solved problems. > Another 25% is spent on explicit networking. We don’t merely specify that a value must be sent from one node to another, we also specify how in exhaustive detail. Honestly I'm not sure what the author means by this. If I have a value others might want to know about, I just trigger an event. There is no "exhaustive detail' going on. (Plus events are easy to grep). >Somewhere in between all this plumbing code is a tiny amount of interesting, pure computation, which takes up the remaining 5% of developer time. And there’s very little reuse of that 5% across applications, because every app is wrapped in a different 95% of cruft and the useful logic is often difficult to separate! Boiler plate code used to be an issue, but the languages I still use have ways around it. (macros, first class functions, extending, etc). We build modules and libraries and controls, all reusable code that lets me spend most of my time being bored in meetings.
- jackmaney 11y ago>> Perhaps 70% of developer time is spent dealing with parsing, serialization, and persistence. Values are encoded to and from JSON, to and from various binary formats, and to and from various persistent data stores… over and over again. > This is not my experience at all. Yeah, unless you're tinkering around in a side project just to learn something, don't build your own JSON parser or writer. I've spent WAY more time thinking about how to structure my data for serialization than how to serialize it. For the vast majority of use cases, serialization is such a solved problem that if there isn't an obvious way to proceed, you're probably doing it wrong. >> Another 25% is spent on explicit networking. We don’t merely specify that a value must be sent from one node to another, we also specify how in exhaustive detail. > Honestly I'm not sure what the author means by this. Doing low-level socket programming? Maybe? But in the grand scheme of things, that's probably a fairly specialized use case.
- mercurial 11y ago
- kirinan 11y agoAlright, I made an honest attempt to read through all of it but I still have a fuzzy understanding of what you are trying to achieve with this project. I understand our current development tools might not be the best, but if I understand this right you are essentially making a framework into a language with an editor with said language? I don't see that moving away from the model we have now, simply moving things lower in the stack. Maybe Im just not understanding.
- the_why_of_y 11y agoHow does this differ from other next-generation web platforms like Opa? http://opalang.org/ http://opalang.org/ Also, why does this need to re-use the name of a next-generation file synchronization tool? http://www.cis.upenn.edu/~bcpierce/unison/ http://www.cis.upenn.edu/~bcpierce/unison/
- duaneb 11y agoHow does it improve on rsync?
- LeoPanthera 11y agoUnison is bidirectional.
- aikah 11y agoShow, don't tell.
- jackmaney 11y agoBut if you're going to tell, be concise and coherent.
- nocman 11y agoYes, 1000 times yes! I know the author has a lot to say, but even after patiently wading through the first few paragraphs I was not prepared to invest any more time in figuring out what was so great about this project. The article title was enough to get my attention, but I could not hang in there long enough to get excited about (or even remain mildly interested in) the project. Edit: OK, it was probably more like 50-60% of the first page that I read through, not just the first few paragraphs.
- blakeyrat 11y agoIt mostly reminded me of Spolsky: http://www.joelonsoftware.com/articles/fog0000000018.html http://www.joelonsoftware.com/articles/fog0000000018.html > That's one sure tip-off to the fact that you're being assaulted by an Architecture Astronaut: the incredible amount of bombast; the heroic, utopian grandiloquence; the boastfulness; the complete lack of reality. And people buy it! The business press goes wild!
- teacup50 11y agoUnless you're trying to be precise and detailed (as opposed to spewing startup advertising), in which case "tell" is exactly what you should be doing.
- cromwellian 11y agoPosterchild for TL;DR
- mtrimpe 11y agoI came here to complain about calling things 'next-generation languages' when it's obvious that a next-gen language would have to have a purely functional AST. Turns out Unison has that; so you've got my interest! I agree with the other comments though that these (amazing) salient details could be communicated a bit more succinctly ;) P.S. I have a presentation up at https://speakerdeck.com/mtrimpe/graphel-the-meaning-of-an-immutable-world https://speakerdeck.com/mtrimpe/graphel-the-meaning-of-an-im... which lists some of the real-world benefits of such a language... feel free to use it for inspiration.
- bcg1 11y agoOn the surface it sounds interesting, but I don't really buy the idea that programming is terribly limited by the quality of text editors. Even "basic" editors like vim and emacs can almost instantly catch most syntax problems, and IDEs like Eclipse and Visual Studio are great about complaining if you make a mistake. In my experience, these days relatively few problems come from language syntax errors ... most problems come from mistakes in logic, poor systems integration, or incorrect validation of input data. Not sure how Unison will solve those challenges, but to be fair maybe that is out of scope. However it is hard to slog through the marketing, and in the end its just not clear from the writeup what sort of programs one would write in Unison, so it doesn't really inspire me to spend any more time trying to learn about it.
- Dewie3 11y agoThe editor (or whatever it's called) promises to only allow only well-typed programs. Not just syntactically correct programs.
- marcosdumay 11y agoEclipse, Visual Studio, and all the Haskell IDEs catch type errors on the fly and help you fix them.
- Dewie3 11y agoThe difference is that this editor will supposedly not even allow the code to be in a state of type errors. You literally can not construct a program that is not well-typed. Don't ask me how that editing experience is supposed to work, or if it's a good idea.
- mnx 11y agoActually, that sounds terrible. I already am sometimes annoyed when I try to first use a variable, and then go back and decide where should I declare it - visual studio doesn't like that - literally not being able to go through a broken state would be annoying.
- vezzy-fnord 11y agoUnison is also already the name of a file sync program written in OCaml, a team collaboration service, a proprietary newsreader and apparently a security management (access control/intrusion detection/firewall/etc) platform. The file sync is probably the most popular, and the one that first came to mind. I realize that the exclusive namespace for software titles is shrinking, but I think that when you already have this much ambiguity, it's not a wise choice to pick generic dictionary word names. Putting some thought into naming things does pay off.
- MrBra 11y agoIt was also the name of a popular general midi soundfont :)
- chippy 11y agoAnd it's also the name of the second biggest trade union in the UK with 1.3 Million members.
- mbailey 11y agoHad this same thought, there's a lot of things named unison, including some really popular ones.
- Animats 11y agoIt's also a category of inventions, "Unison devices", which refer to ways to keep two things in sync. This was a huge problem from about 1850 to 1980 or so. Edison's stock ticker was one of the first big successes, but it wasn't really nailed until the invention of the phase-locked loop. (Anyone remember "horizontal hold" knobs?)
- joshstrange 11y ago> next-generation programming platform Sounds like a pretty BS claim for what appears to be vaporware (Also the claims they make on their page are pulled out of their ass "Perhaps 70% of developer time is spent dealing with parsing, serialization, and persistence." <- WTF???).
- pjc50 11y agoLink is currently unresponsive, but I think this came up on HN before - and had a similar flavour to TempleOS, in that it may be brilliant but is unlikely to ever make sense to anyone but the author.
- pshc 11y agoThis is truly next-gen. It's going to eliminate so much of the bullshit work in programming. Thanks so much for making it open source. Plaintext must be killed. Long live real structure.
- ninjakeyboard 11y agoAkka's location transparency gets rid of a bunch of the network bs that the first paragraph talks about.
- panic 11y agoHere are some more blog posts about the project: http://pchiusano.github.io/unison/ http://pchiusano.github.io/unison/ As far as I can tell, the goal is to put interaction with a UI on the same level as editing a program. To this end, Unison expressions, values and UI elements all live in a single syntax tree which can be edited in a structured way. A demo would go a long way toward making this all clearer. Even some text describing what it would be like to use the finished product would help.
- DennisP 11y agoInteresting to see he's also the author of the book Functional Programming in Scala.
- waynecochran 11y agoDoesn't this go against the MVC grain -- UI / model separation of concerns?
- melloclello 11y agoWell, it just means you only have one V and one C for all the Ms in the universe.
- desireco42 11y agoThis all honestly resonates a lot with me. It sounds a little like LightTable. It is not explained best, that is for sure. I still need to find and see software, but provided there is one, I think his heart is on right place.
- Alex3917 11y agoI think it's more analogous to Urbit than LightTable.
- ibdknox 11y agoFrom what I know of his project, the best description is probably a vertically integrated haskell-like language, fully structured editor (think paredit without parens), and distributed framework. So yeah, Urbit is a better analogue than LT :)
- state 11y agoExcept we don't have an editor ;)
- desireco42 11y agoThanks for that reference.
- woah 11y agoLike Urbit but less crazy I'm guessing?
- Alex3917 11y agoSure, albeit that describes everything.
- geon 11y agoHow much of this exists? Is there a screencast?
- xrstf 11y agoA few mockups or screenshots would have helped me immensely to understand this "next gen text-based-programming killer", that is ironically described exclusively in plaintext. In my head, ideas range from visual programming language to programmable spreadsheet, with no clear picture of even how the language looks. I'm so confused...
- PuercoPop 11y agoYou see them at the author's blog https://pchiusano.github.io https://pchiusano.github.io He's posted screenshot's and videos about this project. He has allocated 3 months to this project to see where it goes.
- M8 11y agoWill it have e.g. unsigned floating point types or it's the same old match-to-hardware approach? PS: might be a false dychotomy but then next-gen is an exaggeration.
- M8 11y agoWill it have e.g. unsigned floating point types or it's the same old match-to-hardware approach? PS: might be a false dychotomy but then next-gen is an exaggeration.
- fasteo 11y ago> Perhaps 70% of developer time is spent dealing with parsing, serialization, and persistence. Values are encoded to and from JSON, to and from various binary formats, and to and from various persistent data stores… over and over again. > Another 25% is spent on explicit networking. We don’t merely specify that a value must be sent from one node to another, we also specify how in exhaustive detail. >Somewhere in between all this plumbing code is a tiny amount of interesting, pure computation, which takes up the remaining 5% of developer time. > These numbers are made up, of course, but if anything they are optimistic Optimistic for your argument, that is.
- wlievens 11y agoYeah in my experience, the real time sink is the disproportionate cost of making a decent user interface, regardless of framework or environment.
- mkapij 11y agoSounded familiar, reminds me of: http://www.rebelscience.org/Cosas/COSA.htm http://www.rebelscience.org/Cosas/COSA.htm https://github.com/gocircuit/escher https://github.com/gocircuit/escher
- zwegner 11y agoThis looks really awesome. I hope it takes off! I'm pretty curious what it looks like though--as much as it shouldn't matter, syntax is very important. There's a lot of overlap with how I want my language Mutagen[1] to work. Merkle trees of syntax, details persistence/communication handled transparently (or at least orthogonally to any other program logic). Where I think this is most important though (and this description of the project doesn't seem to mention) is optimization. Things like database de-/normalization, data locality, and really so much more--pretty much everything engineers do for performance rather than business logic--should be in the hands of the compiler. Mutagen has been on hiatus for a while, but I've been thinking about it a lot more lately, thinking where to go next. If anybody is interested in it, let me know--I'd love some contributors to work with, or even just people interested in optimization/compilers/functional programming to talk to. [1]https://github.com/zwegner/mutagen https://github.com/zwegner/mutagen
- pchiusano 11y agoWow, author here, was not expecting this to end up here! This project is very much in development, it's not close to a finished product and I hope I didn't give that impression. I created the site so there'd be a space other than my blog to share updates about progress and so on. If everything I wrote sounds like nonsense, check back in 6 months. I am hoping things will be much further along, and more concrete by then. It will get there. I definitely appreciate the feedback from folks about how it is unclear what the project even is from the descriptions. I am still trying to figure out the best way to explain it succinctly (so far haven't been too successful). Having a better demo to show would definitely go a long way. This might help a little bit - here's a video and some explanation of the expression editor from my blog: http://pchiusano.github.io/2015-03-17/unison-update5.html http://pchiusano.github.io/2015-03-17/unison-update5.html The platform is going to be more than just the editor, but that might provide a feel for what the editing experience could be like. Obviously many details and polish to be worked out.
- jakub_h 11y agoThe things you're describing are EERILY similar to some stuff I've been conceptualizing and thinking about recently, as inspired by the VPRI people's work/OMeta/Shen. I'd just remark that... "The program is a UI, and UI interaction is programming. Unison panels take the idea of spreadsheets, which blur the distinction between UI interaction and programming, to its logical conclusion." ...this blurring between programming and interaction (which I've also thought of) probably offers a potentially viable path to much more powerful voice control of devices, since programming APIs serving as user interfaces can now also (besides graphical UI) implicitly define strict grammars for structured voice input. That's the one thing I thought of that I didn't see mentioned there.
- jimfleming 11y agoOk, so I spent about an hour casually reading the posts, watching the demo videos and glancing at the code. I agree with your premise and I like a lot of the implementation so far. It's great to see more innovation and research in this area alongside Light Table, Eve (which seems to be going in a similar direction with spreadsheets), NoFlo and others. I'm curious about the goals of the project. If the goal is to replace an existing language and editor pairing then it's going to be an uphill battle (see previously mentioned related projects). If it's to be supplemental with existing development tools then what use cases are you targeting? Adding this as an optional layer to an existing editor might help work out some of the ergonomics. Performance issues aside, building on top of Atom might be a good choice since it's mostly web based like the current UI in the demos. Similarly, a custom kernel or cell type in ipython might get the ideas into daily use.
- danellis 11y agoWhat are your sources for the percentages in your about section? I have trouble believing they're real.
- hydandata 11y ago> Perhaps 70% of developer time is spent dealing with parsing, serialization, and persistence. Values are encoded to and from JSON, to and from various binary formats, and to and from various persistent data stores… over and over again. Off-topic but.. by using Lisp one can refocus that 70% to actually solving problems.
- adamwk 11y agoLisps can automatically define models, serialization and deserialization for those models, and data persistence?
- white-flame 11y agoThe language allows it to be easily done. The model definitions can be simply transformed into code that directly handles those individual model artifacts. This is a super common paradigm in Lisp, especially when it comes to class/structure/data definitions, where support functions of any type can be generated straight from the defs. There is no "automatic" language feature there, because no definition of "automatic" covers all useful cases. It's simply easy to do because of the homoiconic nature of Lisp (code = data = code, with easy manipulation to transform between them), and no real distinction between compile time and run time.
- orvr 11y agoWrong. In CL there is a well defined distinction between read time, compile time, load time and run time.
- white-flame 11y agoCompile-time and load-time occur during run-time. The run-time context of anything already executed is available to subsequent compile-time and load-time contexts. Of course, these then further affect the run-time context going forward. While these "*-time"s are distinguished, they can be invoked and interplay arbitrarily, unlike most other languages. It's all fundamentally run-time, in contrast to those, especially when considering threaded environments where compilation and run-time execution can happen simultaneously.
- zak_mc_kracken 11y agoWhy reinvent an editor from scratch? This is pretty much a guarantee that you will get zero traction. Your time would be much better spent writing a plug-in for Eclipse or IDEA.
- anon3_ 11y agoFor anyone else with web programming library or framework: it helps to have code snippets and screenshots on the page.
- kremlin 11y agothis...sounds...beautiful I really enjoyed reading about functions being identified by their hashes, and what advantages that could have.
- ganarajpr 11y agoWhile the ideas here are surely thought provoking - the most important factor seems to be the User Experience of a Semantic Editor. How will a user perceive this constrained environment ? From what I can tell - users love freedom and computers hate them. Why else do you think people still stick to text editors ? A plain text editor is probably the most unconstrained environment there is. So, what is the best way to find some sanity in between? If you ask me, I would say that the main way to transform or change programming would be to remove as much constraint as we possibly can from the user. Let me crap all over the place - and you as the environment make sense out of it. That is why we are building Dhi ( http://www.dhi.io http://www.dhi.io ) - An AI Assistant to help you build user interfaces. We are building it in such a way that the user has complete freedom to say whatever he wants to say and we ( perhaps sometimes even with the help of the user! ) plan to make sense of it. THAT is the dream.
- spot 11y agoback in the 80s CMU had an editor called "gnome" that also had the syntax built in and so you could not make a syntax error: http://www.cs.cmu.edu/~pane/ftp/ILE.pdf http://www.cs.cmu.edu/~pane/ftp/ILE.pdf i can't say i was a fan of using it. but anyway, this isn't remotely a new idea.
- deleted 11y ago[deleted]
- PaulHoule 11y agoIf you like this take a look at Inform7 http://inform7.com/ http://inform7.com/
- avarsheny 11y agoCan a day pass by without a new fucking programming language?
- sabujp 11y agoAre you creating visual studio / visual basic but with some new language?
- politician 11y ago> There are no parse or type errors to report to the user, since the UI constrains edits to those that are well-typed. It may sound counter-intuitive, but if your editor makes it impossible to type incorrect statements, it'll be really hard to learn/use/hack. Play is an important (essential) part of learning. That said, I think there needs to be more experimentation in this area, so I hope you're successful.
- smosher_ 11y agoThis could be interesting. An observation: users have accepted that computing is organized as a constellation of rigid software appliances (“apps”) that never seem to work well together and certainly can’t be composed or extended And yet, unless I have sorely misunderstood, Unison's editor is a browser-based thing, which creates a barrier much more rigid than the ones surrounding the tools I use today. A question: does this just make web apps? I don't do webdev and nobody bothers to mention it these days when they presume all the programming you do is for the web.
- _pmf_ 11y agoI'm not sure that implicitly calling your target customers lazy and/or inefficient is such a great introduction.
- totemizer 11y agoI am sure in the history there were some slaves which were inefficient, and I wouldn't say that it was their fault. I think a lot of decisions are made without asking the developers. Those decisions then impose situations when planning for more than 3 months is meaningless, so we tend not to. And there we are quite inefficient, especially from an external point of view. Don't take offense where there is none.
- _pmf_ 11y agoIt's LightTable all over again.
- pjdorrell 11y agoOn the subject of using nameless hashes in software development, to "solve" the naming problem, I wrote this article a while ago: http://thinkinghard.com/blog/DisorganizedIncrementalSoftwareDevelopment.html http://thinkinghard.com/blog/DisorganizedIncrementalSoftware....