TOSP-wide plans, part 3: Developers, developers, developers…

So far, I have mostly focused on TOSP from the point of view of end users, because that is the scenario which matters most: if you don’t want to use an OS, you won’t want to develop software for it either. However, developer user experience is also of extreme importance, which is why this post will focus on it.

Rights and duties of a TOSP developer

  • This is a workflow-oriented operating system, a generalization of the document-oriented OS concept which encompasses work that isn’t based on local files
    • Applications are thus defined by what they do, not what they are or look like
    • Consistency and interoperability are valued more than bunches of features
  • Applications should thus be considered as operating system extensions
    • If an operating system is what allows you to operate the machine, then third-party applications do this job just as much as first-party ones
    • There shouldn’t be tasks which only first-party applications can perform
    • On the flip side, third-party apps should integrate as well as first-party ones
  • Centralized and decentralized software distributions should both be supported
    • Through a system repository, hosting both first-party applications and third-party ones that are considered of excellent quality by TOSP standards
    • Through a set of tools, provided free of charge, which allows developers to distribute software and updates themselves without arbitrary limitations
    • This should be a good balance between open and closed distribution models
  • Applications should only depend on system-provided libraries and services
    • Third party libraries and services will have to be statically included
    • Popular libraries can also be proposed for inclusion in the system
  • Automatic updates should be so seamless that no one wants to disable them
    • The upside is that developers do not need to support old versions of their applications, only the settings and documents which they leave behind
    • The downside is that updates must undergo rigorous before being pushed to user PCs, so as to ensure that they are unlikely to break anything
    • This implicitly favors an iterative approach to software development, where updates provide gradual evolutions rather than brutal changes

Software development tools

  • All APIs which are intended for public use should come with documentation
    • The name and purpose of all public interfaces should be specified
    • Simple example code should also be provided, whenever possible
  • TOSP should come with an official IDE, that is good enough for most high-level and low-level development needs, and enforces good coding practices
    • Said IDE should provide access to the aforementioned documentation
    • It should make expected practices easy and unwanted ones hard
    • All internal TOSP development should be gradually switched to it, so as to stress-test its usability on the full range of possible software projects
  • For lighter-weight coding needs, it should be easy to script away things
    • Command-line scripting should use a modern language, like Python
    • GUI software should be scriptable too, through front-/back-end separation
    • In MVC designs, an option would be to expose both models and controllers
  • Dataflow programming (like UNIX pipes) should also be supported
    • If one can express a workflow as successive or parallel operations on a stream of data, then it should be programmed in a dataflow fashion
    • Users should be able to dynamically redirect the flow of data the way they wish, as can be done when using JACK and ReWire in the audio world
    • To remain general-purpose, the underlying message-passing architecture should offer negligible latency for graphs involving a dozen of processes

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s