[HN Gopher] Programs are a prison: Rethinking the building block...
       ___________________________________________________________________
        
       Programs are a prison: Rethinking the building blocks of computing
       interfaces
        
       Author : vortex_ape
       Score  : 51 points
       Date   : 2020-11-05 15:35 UTC (2 days ago)
        
 (HTM) web link (djrobstep.com)
 (TXT) w3m dump (djrobstep.com)
        
       | lowlevel wrote:
       | Sounds like unix to me.
        
         | rakoo wrote:
         | Indeed, it sounds like the author is looking for the UNIX of
         | the 21st century:
         | 
         | * Widely reusable meaning: everything behaves like a file. The
         | types of files we can have are defined by specs: an Image can
         | be described as a PNG file, which every process can understand.
         | A table can be a CSV or a SQLite file. A Conversation can be a
         | maildir folder. We might not have the best descriptions of
         | "things" but we do have something
         | 
         | * Data without borders: if you can read from stdin and write on
         | stdout, you can interact with the data. In fact, joining two
         | tables is a base task and can be done with join
         | (https://linux.die.net/man/1/join)
         | 
         | * Inherent, ubiquitous programmability: I'm not sure I
         | understand the author's point, but it sounds like the entities
         | in a software are too specific to the program. Again, if every
         | "application", or rather set of utilities, used the filesystem
         | with clearly defined specifications for what data is, then they
         | can work together
         | 
         | What is not following the UNIX guidelines is definitely the Web
         | and mobile platforms, as the author focuses on. There were some
         | attempts at doing things the UNIX way, like uzbl
         | (https://www.uzbl.org/) where every thing is a script away, or
         | ii (https://tools.suckless.org/ii/) which gives a filesystem
         | interface to IRC conversations. Want to parse a message ? It's
         | just a string in the filesystem, any script can do it.
         | 
         | There's a reason it didn't work as well as we want, and it's
         | that in practice it's all clunky and hard to maintain when the
         | alternative is a single, unified application. Especially when
         | the alternative is from a commercial vendor with a lot of cash.
         | The incentives of doing FOSS that interacts with each other are
         | not aligned with making money.
        
       | ptx wrote:
       | > We need computing environments ... without the concept of
       | applications appearing at all.
       | 
       | Platforms keep trying to enable this, but application vendors
       | want to control the UX and branding, so they're not going to
       | provide these generic reusable building blocks.
       | 
       | Android, for example, lets apps make use of views from other apps
       | and securely delegate a task (e.g. take a photo, pick a file,
       | etc.) to the user's preferred app without needing to request
       | permission for direct access. But nobody does this - apps just
       | requests all permissions and do everything themselves.
        
         | djrobstep wrote:
         | Author here, yes this is a big problem (the biggest?), as the
         | incentives are all wrong. As I noted in the post: "Often ...
         | apps will have features to integrate with other apps and the
         | wider operating system - but not so much that they become
         | invisible. Instagram still wants you to see its logo, consume
         | its specific content and stay within its ecosystem. Once again,
         | the implementation and architecture are driven by economic
         | imperatives."
        
         | [deleted]
        
         | gdrift wrote:
         | Open intents is trying to standardize and promote such
         | cooperation between apps on android. Tasker and similar apps
         | are also a way to stitch together apps.
         | 
         | http://www.openintents.org/
        
       | orbital-decay wrote:
       | _> Inherent, ubiquitous programmability: Currently, "doing
       | programming" is a segregated activity from mainstream computing -
       | separate software, command lines, specialist knowledge, clunky
       | text-driven interfaces. This must end. Real expressiveness
       | demands that every entity in the interface is inherently
       | programmable - a table of data shouldn't just be a rendered
       | picture of a table of data - it should be a table. Programming
       | shouldn't be separate at all._
       | 
       | Almost every attempt at such an environment has failed for a
       | reason. The problem with programming is not the syntax and other
       | particularities, but inherent complexity of explaining the task
       | to a computer.
       | 
       | Natural interfaces like modern voice assistants have a lot more
       | chances to succeed than programming, because _a)_ they imitate
       | normal human communication and _b)_ they are less dependent on
       | unambiguous programming. And they are still limited because their
       | fuzzy nature makes them unreliable and unpredictable.
        
         | hedora wrote:
         | > Almost every attempt at such an environment has failed for a
         | reason.
         | 
         | Basic and spreadsheets are notable exceptions. However, they
         | don't scale to complex programs.
        
           | mcguire wrote:
           | If you want to scare yourself, look up reports of
           | spreadsheets with errors.
        
         | djrobstep wrote:
         | > The problem with programming is not the syntax and other
         | particularities, but inherent complexity of explaining the task
         | to a computer.
         | 
         | Not really. A great deal of the the complexity is accidental,
         | not inherent. Take the example from the post of adding up some
         | numbers in a table. The inherent complexity is very low, the
         | complexity comes from all the stuff not inherent to the problem
         | itself.
        
           | loopz wrote:
           | Real world is always complex, ambigous and changing. So any
           | simple model will in time be found inadequate, and complex
           | models unusable.
           | 
           | The problem of programming isn't so much the interface. Text
           | has been used for decades and remains a robust communication
           | platform among humans. The real problem is defining the
           | problem to be solved, its scope and adaptability to a complex
           | and changing world.
           | 
           | The real difficulty is the gap between vague ideas and real
           | world outcomes of automation and human-computer interactions.
           | To codify and implement ideas require precise understanding,
           | design and adaptability which are otherwise demanding,
           | understated and neglected.
           | 
           | Notice there is little need to focus on the tools themselves
           | in this realization.
        
             | djrobstep wrote:
             | What's vague and hard to define about adding up some
             | numbers in a table?
        
       | juancampa wrote:
       | This is a problem I have personally spent several years thinking
       | about and working on. The trick IMO will be to build it
       | incrementally from what we already have. For anyone interested,
       | here's my take on it: https://membrane.io
       | 
       | The TL;DR is that I've been building a orthogonally persistent,
       | message-based, user centric, programmable (js/ts) graph
        
       | wrnr wrote:
       | Why do articles like this keep being written and upvoted? It just
       | keeps raising problems ranging from design, technology, politics
       | and economy. Perhaps the author should try to answer his own
       | questions as an exercise.
        
       | PaulHoule wrote:
       | Sounds like what Microsoft wanted Windows to be back in the Win
       | 3.1 era with COM and all that.
        
         | GartzenDeHaes wrote:
         | Also in PRISM for WPF.
         | 
         | https://docs.microsoft.com/en-us/archive/msdn-magazine/2008/...
        
         | vortex_ape wrote:
         | Can you elaborate a bit on what COM was? (or link a resource) I
         | couldn't find its mention on the Windows 3.1 Wikipedia page.
        
           | qppo wrote:
           | It's a language agnostic binary interface. It's kind of hard
           | to explain without getting into the technical details of how
           | it works. For many years it was the only stable ABI on
           | windows.
        
           | PaulHoule wrote:
           | https://en.wikipedia.org/wiki/Component_Object_Model
           | 
           | which is an elaboration of
           | 
           | https://en.wikipedia.org/wiki/Dynamic_Data_Exchange
           | 
           | A common use of COM was scripting with Visual Basic in the
           | 1990s, for instance, ask Excel what is in cell B7, or
           | dynamically load a GUI component out of a DLL and script it
           | into a Visual Basic application.
           | 
           | This blends the boundaries between applications in that you
           | might have a Word document that has an Excel spreadsheet
           | embedded in it, and it really does boot up Excel and has
           | Excel render itself in a rectangle inside the Word document.
        
             | vortex_ape wrote:
             | Thank you for the links!
             | 
             | > A common use of COM was scripting with Visual Basic in
             | the 1990s ...
             | 
             | This sounds nifty!
        
               | cheschire wrote:
               | It was! Then the malware came. Those links opened a
               | million security holes that were effectively untestable.
        
               | AnIdiotOnTheNet wrote:
               | Nowadays you still interface with COM through PowerShell
               | scripting, and it is pretty nifty.
        
             | brazzy wrote:
             | So basically what Amiga OS had with ARexx in the 1980s.
             | 
             | Edit: I misremembered, that was the 90s as well because it
             | was a later development in the Amiga ecosystem.
        
             | ptx wrote:
             | This use didn't go away after the 1990s - Office still uses
             | Visual Basic which still uses COM.
        
       | pshc wrote:
       | Codebases are, in my mind at least, a virtual space. I believe
       | that one day programs will look like factory floors or cities.
       | They will produce and consume physical analogues for values and
       | types, which you can pick up and examine. Want to debug a
       | function? Strap on your VR headset, teleport into its physically
       | reified room and watch the execution. Tinker with the pipeline in
       | real time.
       | 
       | I've been dreaming about this forever, and there have been many
       | attempts, but with remote work and VR going mainstream I think
       | someone will eventually build something usable and scalable.
        
         | Tyr42 wrote:
         | I mean, pay Factorio and you can see it.
        
         | djrobstep wrote:
         | Sounds cool, although a long way away when we're still dealing
         | with text-based development interfaces right now. Definitely
         | need more immersive environments and fully inspectable
         | programs, and actual graphics in our terminals and editors!
        
       | samsquire wrote:
       | I call this idea If you can see it you can use it and right click
       | use.
       | 
       | So if you see a filename on the CLI, you can right click on the
       | file name and interact with the file with a GUI.
       | 
       | Or you could hover over a <pre> tag in the browser of some dot
       | syntax or table and right click and click Use. It would run
       | various heuristics over the data to work out what the data is and
       | then import it to the right program.
        
         | djrobstep wrote:
         | I like your thinking!
        
         | mcguire wrote:
         | Like the Acme or Wily editors?
        
       ___________________________________________________________________
       (page generated 2020-11-07 23:01 UTC)