Skip to content

The Future (version 1.0) #74

@jesperstarkar

Description

@jesperstarkar

This thread should be where we discuss and work together to shape the future branch. I suggest we link inn commits/branches and standalone Gists here to try ut and discuss structures an concepts. I will start off by listing my ideas and motivations behind introducing braking changes and change the future.

Project

  • casparcg-connection will not go into 1.0 before the Future is merged to Master.
  • Future will not be merged unless it has documentation and examples in the Wiki.
  • Future will have breaking changes, and this is OK, since the current Master not is widely spread, and not considered stable yet.

Two-layer structure

  • The top priority is to split casparcg-connection into two layers.
  • The top-level casparcg()-object of today will be renamed casparcg-amcp-connection(). The new casparcg-amcp-connection() will be a dumb layer only concerning socket connection and the AMCP protocol.
  • A new casparcg() object will be the top-layer, using amcp-connection() but with smart logics and convenience applied.
  • The main design goal is to not make any decisions on behalf of the user in the casparcg-connection(), like i.e. automatic querying of current server version etc.
  • casparcg() could have a separate casparcg-osc-connection() added later on.

Namespaces

  • I have yet to find out how to best implement multiple versions of the AMCP protocol. I'm not sure this is best done wit namespaces. This is one of the major concerns for the new structure.

Commands

  • I want to remove the idea of parsing strings into high-level command-objects at a command-level. Such a parsing could be added to casparcg(), but at the moment I don't see the point of this idea at all. It was a main premise for the first version of this library, but have never been used nor maintained. It should just go away, to open up for better concepts such as:
  • The promise of a command should live within the command (the command should be a promise?), not being created by the queue in casparcg()? If not, it should at least be possible to create promises from commands without adding them to the queue.
  • All parameters of an AMCP command should be native properties of that object. Perhaps we need some Proxy object here? This would help documentation a lot, especially when we split out the command objects from the top-level.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions