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

Improve experience for new contributors to repo #27380

Closed
mkArtakMSFT opened this issue Oct 30, 2020 · 10 comments
Closed

Improve experience for new contributors to repo #27380

mkArtakMSFT opened this issue Oct 30, 2020 · 10 comments
Labels
affected-medium This issue impacts approximately half of our customers area-infrastructure Includes: MSBuild projects/targets, build scripts, CI, Installers and shared framework design-proposal This issue represents a design proposal for a different issue, linked in the description severity-major This label is used by an internal tool task

Comments

@mkArtakMSFT
Copy link
Member

mkArtakMSFT commented Oct 30, 2020

Summary

The ASP.NET Core repo can be difficult to get started with for new contributors. We should make improvements to the repo setup and documentation to support new contributors on-boarding to the project.

Motivation and goals

Our build setup has a few gaps that make it difficult to get started for the wider contributor community:

  • Some aspects of the setup are opinionated about using Visual Studio
  • Some aspects of the build (e.g. Selenium tests) only work on Windows
  • Diagnosing build failures can be difficult for a repo of this size
  • Some contributors have trouble understanding our test quarantine process

In scope

  • Make it easy for users to contribute to a single part of the repo (e.g. SignalR or Blazor)
  • Reduce the likelihood that users will run into issues depending on their OS/editor
  • Reduce the time from clone to successfully making a change
  • Investigate integrating our repo with CodeSpaces on VS/VS Code

Out of scope

  • Improving build performance
  • Complete rehaul of our current repo infrastructure

People involved

@captainsafia, @Tratcher, @shirhatti, @wtgodbe, @dougbu

timheuer may be a person to get relevant information from regarding Codespaces bit here.

@mkArtakMSFT mkArtakMSFT added the design-proposal This issue represents a design proposal for a different issue, linked in the description label Oct 30, 2020
@mkArtakMSFT mkArtakMSFT added this to the Next sprint planning milestone Oct 30, 2020
@ghost
Copy link

ghost commented Oct 30, 2020

Thanks for contacting us.
We're moving this issue to the Next sprint planning milestone for future evaluation / consideration. We will evaluate the request when we are planning the work for the next milestone. To learn more about what to expect next and how this issue will be handled you can read more about our triage process here.

@captainsafia captainsafia added the area-infrastructure Includes: MSBuild projects/targets, build scripts, CI, Installers and shared framework label Nov 2, 2020
@captainsafia captainsafia changed the title Improve new developer experience Improve experience for new contributors to repo Nov 2, 2020
@captainsafia
Copy link
Member

captainsafia commented Nov 5, 2020

Below are the notes from the working group meeting on 11/5/2020.

Known Issues

  • Some aspects of the setup are opinionated about using Visual Studio
  • Some aspects of the build (e.g. Selenium tests) only work on Windows
  • Diagnosing build failures can be difficult for a repo of this size
  • Some contributors have trouble understanding our test quarantine process
  • People tend to build the entire repo when they want to contribute to a single section of it
    • We don't do this in our own developer workflows
    • Understandable because this is what we document in the BuildFromSource.md
  • Repo requires a lot of dependencies in order to build
    • E.g. you cannot even build without having VS Preview installed
      • A little bit out of our control
    • Java, Node, Yarn, Selenium, VS, etc.
  • Dependency checker seems to have regressed
    • Doesn't work as well as it used to (maybe not all)
    • Some of the defaults have been changed to build native and the build seems to fail for those
  • README is general for the entire repo as opposed to for specific areas (Blazor, MVC, Templates, etc) and associated templates
  • Lack of CTI tests for specific scenarios
    • We currently have a CTI tests for building/debugging on VS for Windows
  • IISExpress samples in the repo don't work because they rely on a native component that hasn't been built
    • MVC and Blazor samples don't work when run with IIS Express
    • No guidance we currently can give to users to get samples working with IIS Express
  • Users get confused when the CI build complains about things unrelated to their PR and how to address them
  • Users are tempted to use the top-level build.cmd to build the entire repo

Quick Wins

Ambitious Investigations

  • Dynamically acquire dependencies the same way we do via dotnet (Dynamically acquire dependencies needed for each project #27633)
    • Only install the dependency when you're building projects that need them
  • Get the repo working on Codespaces/Nexus/cloud environment
  • Move away from Selenium (more cross-platform solution)
  • Investigate ways to trim down the number of projects in the repo
    • THERE ARE FOUR PROJECTS!
  • Investigate ways to split up the build within the repo Improve experience for working with individual projects in the monorepo #27634
    • Might be hard to do with restricted resources available in the CI
    • Runtime's split build approach is expensive from a repo perspective
  • (Optional) Containerizing each project area
    • Dockerfile for each project area

@Pilchie
Copy link
Member

Pilchie commented Nov 5, 2020

Had to miss a meeting today, but one pattern I see is that a lot of people want to start with a tag of a servicing build, make a change and then consume it in their own apps so that they can verify it fixes an issue.

This is currently difficult for a few reasons. At least:

  1. Many servicing builds are built internally and have authenticated feeds in NuGet.config that need to be removed.
  2. It isn't clear how to set versions and such so that you can produce a build that is easy to consume from an existing project.

Anyone have ideas about how to make those issues easier to deal with?

I know 1. is a bit hard, because we want to tag the actual commit that produced the build, which means we can't remove those NuGet feeds. I think some of the SDK repos used to actually tag twice though- once for the actual build, and once that was the same in spirit but with internal references updated to public ones after we ship. Maybe we should consider something like that?

@dougbu
Copy link
Member

dougbu commented Nov 6, 2020

@Pilchie at some point, Core-Eng was talking about marking the -int feeds as disabled by default but I'm not sure what came of that. @wtgodbe what's the current story❔

@wtgodbe
Copy link
Member

wtgodbe commented Nov 12, 2020

at some point, Core-Eng was talking about marking the -int feeds as disabled by default but I'm not sure what came of that. @wtgodbe what's the current story?

I'm not sure where we're at with this, @mmitche do you know?

@wtgodbe wtgodbe added affected-medium This issue impacts approximately half of our customers severity-major This label is used by an internal tool task labels Nov 12, 2020 — with ASP.NET Core Issue Ranking
@mmitche
Copy link
Member

mmitche commented Nov 12, 2020

That should be happening today.

The darc-int feeds should show up in the disablePackageSources section of NuGet.config, and the dnceng internal project builds remove those entries when setting up the restore operations.

@dougbu
Copy link
Member

dougbu commented May 10, 2021

@captainsafia what work remains here❔ If none, please close. If any, please add the details.

In the meantime, adding to the DoI board…

@captainsafia
Copy link
Member

@dougbu We're using this is a theme task. We've got most of the relevant stuff tracked in individual items. I think the plan is to generally keep these items open until the work is complete.

@dougbu dougbu removed this from the Next sprint planning milestone Oct 6, 2021
@dougbu
Copy link
Member

dougbu commented Oct 6, 2021

I'm not sure what milestone is appropriate for still-in-progress themes and cleared the milestone for now. Suggestions @adityamandaleeka @rafikiassumani-msft @mkArtakMSFT @Pilchie❔ Or, are we done on this from your perspective @captainsafia

@captainsafia
Copy link
Member

@dougbu We're not done but we are tracking a lot of this stuff with smaller issues in the DoI board: https://github.com/orgs/dotnet/projects/15

Specifically this issue: #27609

So, I think we can close this in favor of that one since it has concrete work items outlined.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
affected-medium This issue impacts approximately half of our customers area-infrastructure Includes: MSBuild projects/targets, build scripts, CI, Installers and shared framework design-proposal This issue represents a design proposal for a different issue, linked in the description severity-major This label is used by an internal tool task
Projects
None yet
Development

No branches or pull requests

7 participants
@Pilchie @captainsafia @dougbu @mmitche @wtgodbe @mkArtakMSFT and others