microsoft / devhome

The new Dev Home experience for Windows!
https://aka.ms/devhomedocs
MIT License
3.59k stars 317 forks source link

Projects in Dev Home - Feature Exploration! #2043

Open hamza-usmani opened 9 months ago

hamza-usmani commented 9 months ago

Dev Home Feature Exploration: Projects

Please Provide Feedback & Ideas!

Please let us know what you think about this feature by commenting on this issue! We'd love to hear your ideas and feedback! We will share out our list in the near future but want to hear from you first so we don't influence your feedback.

Let us know:

Overview

This issue outlines a suggested new Dev Home feature: Projects, which aims to improve the configuration, launching, and sharing/moving of developer flows. "Projects" encompass apps, packages and repositories at the minimum, getting developers into their flows as quickly and seamlessly as possible.

The Problem

Developers often work on a variety of different tech stacks, using different apps, repositories and tools for various Projects. The ability to manage these as atomic/bundled units, launch them, context-switch between them, and move them are pain points we've heard from developers time and time again. Projects in Dev Home aim to reduce developer toil in these areas, and supercharge workflows.

A well-requested feature on GitHub and in customer-research is the ability to see and manage projects, leading to this highly-upvoted PR which is an excellent proof-of-concept: #1049

Project Definition

At a minimum, Projects contain repositories, apps and packages. We are investigating other relevant items that users can add to the Project definition, such as:

Goals

# Goal
1 Projects reduces toil for developers and allows them to get into their flows quickly and seamlessly
2 Projects helps developers context-switch locally between their various "Project environments"
3 Projects helps user move, share, and setup their PC with the right resources

User Flows and Design Mockups

This section contains user flows with design concepts for the Projects feature. These flows/concepts are not final - we'd love to hear your feedback on these!

Launching a Project

Sally has sat down at her PC and wants to start developing. She chooses to launch one of her Projects from Dev Home.

  1. Sally navigates to the Projects tab in Dev Home.
  2. Sally sees the Project she would like to launch and clicks Launch.
  3. Sally’s Project opens her applications on her current desktop in a designated window layout, with her repositories and packages, applying Project settings
    • Visual Studio launches full-screen on Monitor 1 with her solution open
    • Terminal launches on Monitor 2 snapped to the left with the directory set to the repository path
    • Edge launches on Monitor 2 snapped to the right with a certain set of tabs open

What does Launch imply behind the scenes?

  1. Prerequisite check + hydration

    • For a new Project, Dev Home checks for required resources on the PC (apps, packages, repositories)
    • Don't do the check again on subsequent launches, this will speed up Project launch. If the user launches without required resources present on the PC, Dev Home will present an error dialogue informing the user and asking for permission to download the required apps, packages or repositories.
  2. Once the prerequisite check is complete, Dev Home will launch the user-defined launch apps

image image

Creating a new Project

Users can choose exactly how they want their Project to be defined. Specifically, users can choose:

  1. Required Resources (that must be installed for the Project), such as:

    • Apps
    • Packages
    • Repositories
  2. Launch Parameters:

    • Launch Apps (what apps actually open when a user clicks launch on a Project)
    • App Configuration (for example: what solution to open in Visual Studio code, what tabs to open in Edge, what file to open in Notepad...etc)
    • Window Layout (what is the window orientation for the apps that launch)
    • Project Settings (such as environment variables)

image

Moving or Sharing a Project

Assuming Kevin has a Project in Dev Home that he wants to share:

  1. Kevin navigates to Projects tab in Dev Home
  2. Kevin right clicks his Project, hits “export”
  3. Dev Home informs him where his Project configuration file has been exported, and optionally asks him if he would like to share it (GitHub, Email, Teams...etc)
  4. Kevin shares his Project configuration file to his peer Mike
  5. Mike navigates to the Projects tab in Dev Home and hits “import”
  6. Dev Home installs all of the Project's dependencies (such as apps, packages and repositories) for Mike and he is ready to launch the Project

We're looking forward to all your feedback on Projects in Dev Home!

AathifMahir commented 9 months ago

I like this, I guess this bring us to inner-loop seamlessly

slurpo commented 9 months ago

It's one of the best ideas for DevHome and for the developers! You talk about VS Code, but what about Visual Studio 2022? Add it!

blogcraft commented 9 months ago

As suggested in https://github.com/microsoft/devhome/issues/1038 It would be quite useful to have some GIT Client functionality.

CanePlayz commented 9 months ago

Like it 👍

GaoZi2014 commented 9 months ago

make a start button into project page and make it auto detect the file extension to choose what program should start with. (html - edge / chrome | electron app - npm run start)

TaintedIron commented 8 months ago

For someone that has been learning Python on my own, I been leveraging all types of educational material/repos on GitHub. I would love to see some sort of integration for curricular focused repositories like Data-Science-For-Beginners.

leo-schick commented 7 months ago

I think this export/import function from Kevin to Mike sounds nice but is kinda the way you did it some years ago. I think there should be a option to specify the general project in the repository and when you clone the repository, it automatically creates/updates the project settings. There should be as well a security feature to separate some config properties as "secrets" or "local" so that they shall not be saved in the repository.

skanda890 commented 6 months ago

Yeah, this is nice. This should be implemented.