Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature: Sharable ports #11486

Closed
16 of 19 tasks
mtojek opened this issue Jan 8, 2024 · 21 comments
Closed
16 of 19 tasks

Feature: Sharable ports #11486

mtojek opened this issue Jan 8, 2024 · 21 comments
Assignees
Labels
feature Something we don't have yet networking Area: networking ☂️ epic An issue of issues roadmap https://coder.com/roadmap. Only humans may set this. site Area: frontend dashboard

Comments

@mtojek
Copy link
Member

mtojek commented Jan 8, 2024

Problem

Customers want to be able to expose arbitrary ports to other users at different levels of permissions for how those ports can be shared. 2-3 major customers are already making workarounds for this missing feature, so we should build something first class to fit this need.

RFC

https://www.notion.so/coderhq/Shareable-Ports-4140e809958c457ba99f53b3e9ae1673?pvs=4

Related

Action Items

Required

Reach

@cdr-bot cdr-bot bot added the feature Something we don't have yet label Jan 8, 2024
@mtojek mtojek added networking Area: networking site Area: frontend dashboard labels Jan 8, 2024
@stirby stirby assigned f0ssel and unassigned spikecurtis Jan 9, 2024
@stirby stirby added the roadmap https://coder.com/roadmap. Only humans may set this. label Jan 19, 2024
@f0ssel f0ssel added the ☂️ epic An issue of issues label Jan 26, 2024
@ericpaulsen
Copy link
Member

adding this issue: #12232

@kylecarbs
Copy link
Member

kylecarbs commented Feb 20, 2024

Minor bug: I can specify port 0 ;p

image

"Application port 1 is not permitted. Coder reserves ports less than 9 for internal use." is our error.

@kylecarbs
Copy link
Member

It's not exactly clear to me why "Public" is greyed out here:

image

@stirby
Copy link
Collaborator

stirby commented Feb 27, 2024

#12232 will be a requirement for this to make GA.

@stirby
Copy link
Collaborator

stirby commented Feb 27, 2024

@kylecarbs the feature allows admins to restrict the maximum sharing level of ports in the template settings. If you're on our dev template the maximum sharing level is Authenticated.

We could add a tooltip if this is unclear.

@f0ssel
Copy link
Contributor

f0ssel commented Mar 4, 2024

Yup I was thinking a tooltip will fix that nicely

@matifali
Copy link
Collaborator

@kylecarbs the feature allows admins to restrict the maximum sharing level of ports in the template settings. If you're on our dev template the maximum sharing level is Authenticated.

Instead of the tooltip, we can also remove it from the dropdown if not allowed at the template level.

@bpmct
Copy link
Member

bpmct commented Apr 23, 2024

I added two items to the checklist since we're still in experimental. I think there are some other dependencies too related to listening ports. Can you add those in so we have a good sense of what is blocking us from making this GA?

Screenshot 2024-04-23 at 9 44 16 AM

@f0ssel @stirby

@stirby
Copy link
Collaborator

stirby commented Apr 23, 2024

Added #12832 since these are intertwined from a UX perspective.

@stirby
Copy link
Collaborator

stirby commented Apr 24, 2024

@bpmct the list is complete. Added docs and GA issues.

@pauliuspetk
Copy link

@kylecarbs the feature allows admins to restrict the maximum sharing level of ports in the template settings. If you're on our dev template the maximum sharing level is Authenticated.

We could add a tooltip if this is unclear.

@stirby What do you mean by "If you're on our dev template"?

I'm on an OSS deployment, upgraded from v2.10.2 to v2.11.0 today, and am seeing the same thing as @kylecarbs: "public" option is greyed out.

In the workspace settings, the "Public" option is pre-selected and unmodifiable, as expected.

The documentation on port forwarding says:

OSS deployments allow all workspaces to share ports at both the authenticated and public levels.

I can't seem to find a way to enable public port sharing via the port helper.

@pauliuspetk
Copy link

pauliuspetk commented May 8, 2024

I'd also like to suggest a simplification of the port sharing helper UI. I believe it's currently more confusing than it could be.

From the docs:
annotatedports

I'd suggest merging the detected ports section into the shared ports section, by simply pre-populating the shared ports section with the detected ports, and with the sharing level set to "Owner" by default, and the protocol set to HTTP by default, as that is essentially what happens when clicking on a detected port anyway.

This solves a few UX issues:

  • it's not obvious that the detected ports are clickable;
  • if you click on a detected port, it always uses HTTP, and you have to type in the port, select HTTPS, and click on the small icon should you want to override that;
  • the "new window" icon itself is not immediately noticeable and not clear as to what it does, and there is no tooltip;
  • for the above reason, the Share button next to the first detected port can be construed as "share the port I just typed in above"

If you just automatically add the detected ports to the shared ports with "HTTP" and "Owner" settings as defaults, and perhaps with some indication/separation on which ones were autodetected, the entire "Listening Ports" section could just go away.

I'd also suggest adding "new window" icon next to the port numbers in the list, to make it more obvious that they are clickable.

Here's a rough mockup of how all this could look like, for inspiration:
image

@matifali
Copy link
Collaborator

matifali commented May 9, 2024

@coder/ts @coder/pms some good feedback here ⬆️

@BrunoQuaresma
Copy link
Collaborator

@matifali do you think we should open a ticket for redesigning this UI? I think having a ticket can give us time to try different alternatives and solutions based on user feedback and the opportunity to think about it more deeply.

@stirby
Copy link
Collaborator

stirby commented May 9, 2024

@matifali @BrunoQuaresma We considered a design quite similar to this is one in the past and I like the consolidation. I'd like to review the mockups before we make a decision.

@BrunoQuaresma
Copy link
Collaborator

@stirby Sure, I think the first decision we have to make is if we want to spend some time working on the design before jumping into a fix/improvement. If yes, which I think we all agree, the person who creates the designs can share them with the team, including you and other PMs, to collect feedback and get approval. Wdyt?

@stirby
Copy link
Collaborator

stirby commented May 9, 2024

Sounds good, moved to new issue.

@stirby stirby closed this as completed May 9, 2024
@pauliuspetk
Copy link

Awesome! Looking forward to it.

@stirby could you please elaborate on #11486 (comment) ?

The observed behavior doesn't currently match what's stated in the docs...

@f0ssel
Copy link
Contributor

f0ssel commented May 13, 2024

Hey @pauliuspetk I can look into this behavior and get back to you, I think I understand from your description but want to investigate and see what is going on here to create this mismatch. Thanks for bringing this up.

@matifali
Copy link
Collaborator

matifali commented May 27, 2024

@stirby a question about releases. When a feature is made GA in a release, which has a bug that is later fixed in main. Is it expected to backport the fix and patch the release?

For example, #13259 fixes the port sharing level, which was made GA in v2.11.0, but it still needs to be released as a patch.

@julianpoy
Copy link

Ran into that bug as well.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature Something we don't have yet networking Area: networking ☂️ epic An issue of issues roadmap https://coder.com/roadmap. Only humans may set this. site Area: frontend dashboard
Projects
None yet
Development

No branches or pull requests