Formally support on-prem hosting by allowing organisations to host their own teletype-server and pub-sub solution (to replace pusher).
Motivation
Currently, although I can run my own teletype-server, I am unable to run Teletype at my organisation because the pusher dependency suffers from connectivity issues via proxies and violates some regulations that my organisation is bound to in terms of restricting access to some code. It would be great to formally support an on-prem option including finding an alternative pub-sub.
Describe alternatives you've considered
Although teletype allows customising the server, the pusher dependency can not be customised.
I have also tried manually installing a branch of these modules from the PRs referenced below that inspired this issue, and although it is possible to do this, all participants of Teletype would have to go through this setup which doesn't scale very well given that for many Atom is not their primary IDE.
Since the PRs above actually go beyond just Pusher, including custom ICE and IdentityProviders, I suggest that for now this feature only focus on the PubSub, with socketcluster seeming like quite a good alternative.
I suggest the following changes:
teletype
Upgrade the atom API server base URL to a main configurable parameter rather than Dev parameter.
Add Dev parameters
PubSub provider [pusher, socketcluster]
SocketCluster URL
All Dev parameters act as an override only, and will be optionally passed to teletype-client
teletype-server
Add configuration parameters for PubSub (similar to the client-side)
Add a new end-point to retrieve the PubSub details (similar to how ICE discovery is provided now)
Increment api-version
teletype-client
After determining protocol-version, if compatible, request pub-sub details
Apply user overrides if provided
Instantiate the deduced pub-sub implementation
I'll be happy to elaborate in more detail in an RFC if required
Summary
Formally support on-prem hosting by allowing organisations to host their own
teletype-server
and pub-sub solution (to replace pusher).Motivation
Currently, although I can run my own
teletype-server
, I am unable to run Teletype at my organisation because the pusher dependency suffers from connectivity issues via proxies and violates some regulations that my organisation is bound to in terms of restricting access to some code. It would be great to formally support an on-prem option including finding an alternative pub-sub.Describe alternatives you've considered
Although
teletype
allows customising the server, the pusher dependency can not be customised.I have also tried manually installing a branch of these modules from the PRs referenced below that inspired this issue, and although it is possible to do this, all participants of Teletype would have to go through this setup which doesn't scale very well given that for many Atom is not their primary IDE.
Additional context
I have reviewed the existing PRs which attempt to do this, which took some setup before I managed to get them to work properly across multiple devices: https://github.com/atom/teletype/pull/393 https://github.com/atom/teletype-client/pull/67 https://github.com/atom/teletype-server/pull/50
Since the PRs above actually go beyond just Pusher, including custom ICE and IdentityProviders, I suggest that for now this feature only focus on the PubSub, with socketcluster seeming like quite a good alternative.
I suggest the following changes:
teletype
API server base URL
to a main configurable parameter rather than Dev parameter.teletype-server
teletype-client
I'll be happy to elaborate in more detail in an RFC if required