19:02:52 #startmeeting Fedora DotNet (2017-02-28) 19:02:52 Meeting started Tue Feb 28 19:02:52 2017 UTC. The chair is Rhea. Information about MeetBot at http://wiki.debian.org/MeetBot. 19:02:52 Useful Commands: #action #agreed #halp #info #idea #link #topic. 19:02:52 The meeting name has been set to 'fedora_dotnet_(2017-02-28)' 19:02:55 #meetingname dotnet 19:02:55 The meeting name has been set to 'dotnet' 19:02:57 #nick dotnet 19:03:02 #link https://fedoraproject.org/wiki/Meeting:DotNet_2017-02-28 19:03:10 #undo 19:03:10 Removing item from minutes: 19:03:18 #topic Agenda 19:03:22 #link https://fedoraproject.org/wiki/Meeting:DotNet_2017-02-28 19:03:24 #info (1) Roll Call 19:03:28 #info (2) Announcements 19:03:30 #info (3) Action items and Tickets 19:03:33 #info (4) Packaging progress 19:03:34 #info (5) Open Floor 19:03:38 #topic Roll Call 19:03:40 #info Name; Timezone; Sub-projects/Interest Areas 19:03:43 #action dotnet New members, make sure you introduce yourself on the DotNet mailing list [ https://fedoraproject.org/wiki/SIGs/DotNet ] 19:03:48 If this is your first time at a DotNet meeting, feel free to introduce yourself to everyone and say hello! If anyone has any questions before we get started with the rest of the agenda, now is also a good time to ask. 19:03:56 .hello rhea 19:03:57 Rhea: rhea 'Radka Janek' 19:03:58 #info Radka Janek; UTC+1; CommOps, Diversity, DotNet,... 19:04:31 First time here (bryan) - hello everyone 19:04:34 .fas nmilosev 19:04:39 nmilosev: nmilosev 'Nemanja Milosevic' 19:04:41 Hello bt_0003 and welcome! :) 19:04:43 .hello pcreech 19:04:44 pcreech: Sorry, but you don't exist 19:04:47 .hello pcreech17 19:04:48 pcreech: pcreech17 'Patrick Creech' 19:05:04 #info Amitosh Swain; UTC+5:30; DotNet, Go, Docker, Python 19:05:40 pcreech you don't exist :< 19:05:44 hi all 19:05:50 hello 19:05:54 Rhea: lol... difference btw nick and fas :( 19:05:59 meeting started already? 19:06:01 * nmilosev o/ tmds 19:06:02 rip 19:06:08 just about tmds 19:06:20 #topic Announcements 19:06:47 What's new.. hmm... nothing? 19:07:06 F26 builds live :) 19:07:13 nice 19:07:23 but that's'not new, is it? i have messy time perception 19:07:33 I mean since last week 19:07:34 :D 19:07:37 Yeah :D 19:07:43 last week in fedora is ancient history 19:07:45 nmilosev: have you tried building the source-build? 19:08:04 tmds, sadly no, didn't have much time for it - still only works on F23 19:08:32 #topic Action items and Tickets 19:08:32 ok, haven't tried it myself either 19:08:47 #link https://meetbot.fedoraproject.org/fedora-meeting/2017-02-21/dotnet.2017-02-21-19.12.html 19:08:51 tmds, we can work on it together, feel free to ping me :) 19:08:55 #link https://pagure.io/fedora-dotnet/issues?tags=meeting 19:08:59 #info How This Works: We look at past #action items from the last meeting for quick follow-up. If a task is completed, we move on to the next one. If it isn't, we get an update and re-action it if needed. If no status, we'll try to get a quick update and move forward. 19:09:02 nmilosev: subscribe to this one: https://github.com/dotnet/cli/issues/5854 19:09:11 #info === Ticket #5 === 19:09:19 #info === "wiki pages" === 19:09:21 #link https://pagure.io/fedora-dotnet/issue/5 19:09:28 #info I've done some gardening, please provide feedback and ideas for improvement in the ticket. 19:10:35 About that, I do not think, that we need to write anything other than what it has there... 19:10:59 It has references to both copr / microsoft for packages, which in turn has info about installing it 19:11:14 I included that asp.net microsoft training 19:11:18 Hey Rhea, should I make nmilosev/dotnet-sig 19:11:24 or it's fine like this? 19:11:31 (for now) 19:11:43 that we discussed already last time o.o 19:12:01 oh 19:12:02 sorry 19:12:05 I would like to see *all* the repositories deleted to prevent confusion, and have but one... 19:12:28 Since we already have all the links in place, maybe it's better to just delete the old ones 19:12:31 and leave dotnet-clean 19:12:52 "dotnet-clean" is not very professional name is it :P 19:13:24 it's better than dotnet-dirty :D 19:13:34 :D 19:13:44 Okay I will move to dotnet-sig or just dotnet 19:13:49 just dotnet 19:13:56 should there be a version number in it? 19:14:04 or is that a level underneath? 19:14:07 It should be something either generic, or dotnet-sig, to signify that it's maintained by this team / a team / 19:14:34 tmds, we can provide multiple packages in the same repo 19:14:42 Rhea, then dotnet-sig :) 19:15:24 Yup I would be for having one repository with multiple packages (1.0/1.1/2.0) 19:15:30 +1 19:15:53 naming would be just dotnet-version... 19:16:15 while `dotnet` would always point to the highest? 19:16:30 yes 19:16:31 omajid: hi 19:16:43 hi! 19:16:47 * nmilosev o/ omajid 19:16:48 oh hi 19:16:58 we are discussing the hardest thing in software: naming things 19:17:01 sorry for being late. 19:17:12 and versioning them ... 19:17:26 http://core0.staticworld.net/images/idge/imported/article/itw/2013/10/23/programmers_hardest_tasks-600x700-100521914-orig.jpg 19:18:34 #idea Single copr repository with multiple packages following the dotnet-version naming - e.g. dotnet-1.0 dotnet-1.1 which would always be the latest (ie 1.0.4 / whatever) 19:18:40 nmilosev: https://martinfowler.com/bliki/TwoHardThings.html 19:19:19 Rhea, I can see a couple of issues though 19:19:25 We can't have 1.0 and 1.1 side by side 19:19:30 i like this idea. but dotnet iteslf wants `dotnet` to do the version selection. what package would provide the `dotnet` binary? 19:19:48 nmilosev: we can't? why? 19:19:50 ideally, cli and framework should be separated in the future 19:20:01 omajid, the way we have it now, I mean 19:20:12 Well we are back in the begining then 19:20:13 /usr/bin/dotnet for example would be a conflict 19:20:45 shared framework is going to be fine, since it is just one directory 19:20:49 nmilosev: we could just have /usr/bin/dotnet-1.0 and /usr/bin/dotnet-1.1 symlinked to /usr/lib/dotnetcore/whatever/bin 19:21:06 omajid, yes that's a nice workaround :) 19:21:10 omajid: +1 on this 19:21:25 we currently don't have 1.0 packages, that is also an issue 19:21:32 yup 19:21:32 for example for using EF tools 19:21:35 you need it 19:21:53 it's not an issue, i don't think we need 1.0 packages... 19:22:03 we start packaging with the version at hand when we are ready 19:22:10 screw the old ones 19:22:17 =) 19:22:35 nmilosev: but i think (don't know for sure) .net upstream wants a /usr/lib/dotnetcore/dotnet that's shared across versions. it's supposed to be a tiny binary that finds a real dotnet (host?) to run. 19:23:35 omajid, in the 2.0 nightly there is already an option to specify framework version when creating a new app for example :) 19:23:48 so: dotnet new -f netcoreapp1.0 19:24:31 nmilosev: how do you get the 1.0 runtime? 19:25:34 for now, the ugly way: unpack it from microsoft tar.gz to /usr/lib64/dotnetcore/shared/Microsoft.NETCore.App/ 19:25:39 like you showed me :D 19:26:01 but which package will provide '/usr/lib/dotnetcore/dotnet' ? For instance,if i have 2.0 and then 2.1 lands? 19:26:13 omajid: indeed, the idea is there is one dotnet binary 19:26:29 ideally sdk (cli) would be separate 19:26:41 and frameworks would be separate also 19:26:51 So you install cli, and whatever frameworks you want 19:27:26 Can you guys explain to me why do we have frameworks? 19:27:42 I mean... if we can publish for whatever platform we want and don't need any framework there... 19:27:48 why would we still bother again? 19:27:53 Rhea, one use case is to run app compiled for older framework 19:27:59 frameworks are the different versions of .net, like we have .net 2.0 and .net 4.5.2 19:28:00 ...With separate runtime packages and sh... 19:28:35 Yeah but... why would someone publish their app without including all the necessary nonsense with it? 19:28:45 on windows, a .net 2.0 app from the old days will also use the .net 2.0 framework 19:28:46 publish/build/whatever? 19:29:05 Rhea, not sure, but entity framework tooling is this way 19:29:10 only works with 1.0 19:29:10 microsoft had a request for us. for packaging (like in this case) we should start a discusion upstream about what we plan to package and how we plan to do it and what issues we expect. so they can try and accomodate us and/or point out what we are doing wrong and/or fix things that are broken 19:29:12 What I mean is that we do not -need- runtime framework anymore... 19:30:16 we have two options: publish standlone (doesn't need runtime) and publish targetting a framework (needs runtime) 19:30:39 Exactly, why do we still have the 2nd option? 19:30:46 Is it to save 50MBs? 19:31:12 couple of reasons, i think. one is bundling/static linking (see fedora's packaging opinion on that) 19:31:16 disk space is another 19:31:33 hmm 19:31:35 https://fedoraproject.org/wiki/Bundled_Libraries?rd=Packaging:Bundled_Libraries 19:31:57 I don't'really mean we as fedora, i mean we as dotnet 19:32:31 suppose a security fix happens in dotnet. option 2 allows someone to update their dotnet version and magically all programs using it are fixed. 19:32:31 .net applications that come with the distro should rely on a runtime provided by the distro 19:32:45 Back on the original topic... In this case we should probably name it in a dotnet-sdk-1.0 way 19:32:53 and then in the future dotnet-runtime-whatever 19:32:54 .net applications that do not come with the distro should preferably use the linux-x64 rid 19:33:01 and publish standalone 19:33:04 that's my take on it 19:33:44 Or to follow better conventions... dotnet-devel-1.0 ? 19:33:46 we should look at how other languages do it. 19:33:56 I am not a fan of the rid graph and distro specific packages being published by microsoft to nuget 19:34:37 I don't think it is possible to include fixes in the fedora build of dotnet, and ensure someone else that publishes for fedora has those fixes 19:34:59 the other guy will pull the runtime from nuget, and it will be built by microsoft, and won't have the fixes 19:35:02 yes, that's really big issue 19:35:24 we should stay close as much as possible to linux-x64 in my opinion 19:35:25 Well we need to always go upstream, we should NEVER have "our own fork" 19:35:47 microsoft should think about where they see their responsability and where they see that of the distros 19:36:01 now they are just building stuff 19:36:08 They should not have any when it comes to distro specific stuff imho 19:36:17 I mean ... dude it's my job 19:36:21 xD 19:36:26 that's not how it works now 19:36:30 yup 19:36:32 your distro needs to be in a graph 19:37:17 they told me multiple times "you can add your distro's runtime id to any nuget package and it should be picked up by dotnet" 19:37:21 But hey, as far as current workflow goes, we should not have anything specific to fedora locally, we should always push it upstream 19:38:29 but there's going to be a lag between fix-in-fedora and fix-in-upstream-fedora-nuget 19:38:30 omajid: I read that too, some guidelines and a unified approach for all distros would be nice 19:39:10 it is always the goal to be close to the upstream but the practice often requires some patching 19:39:39 indeed 19:40:07 So we went off topic by far, can we please finish the naming topic? 19:40:14 What are we naming our packages 19:40:33 thebestsdkforcsharp-1.1 or what 19:41:30 We should have all of them available (well, say 1.1 and higher) 19:41:55 Now we could have them as `dotnet` be the highest version available 19:42:07 then lower versions could be specific `dotnet-1.1` etc 19:42:24 or compat-dotnet 19:42:28 When installing it, only one of them could be up at the time 19:42:44 i think we should ask for upstream's guidance here. see what they have to say. python upstream, for example, suggests python == python2 19:42:49 sdk-wise, i believe, we can only have one 19:43:04 you can have multiple sdks too 19:43:12 Yeah but is there a reason to? 19:43:30 you might like the dotnet new options better on the other sdk :D 19:43:31 If you can target whatever version you want from your highest sdk 19:44:22 tmds: oh, there's a way to say 'run dotnet new, but the way 1.0 runs dotnet new'? 19:44:56 otherwise, what does multiple sdk mean/look like in practice? 19:45:07 hmm 19:45:23 I haven't tried it, but I believe you can specify the sdk version in global.json and that will direct the dotnet binary to a specific sdk 19:46:21 tmds, that's only for .sln? 19:46:35 (which you can't create with dotnet new 1.1) 19:46:40 :D 19:46:44 no global.json 19:46:57 let's google 19:47:10 https://docs.microsoft.com/en-us/dotnet/articles/core/tools/global-json 19:47:19 hmm 19:47:52 and for msbuild, only the sdk property will remain: https://docs.microsoft.com/en-us/dotnet/articles/core/preview3/tools/global-json 19:48:01 The global.json file is used on .NET Core projects to define the solution metadata. 19:48:07 _solution_ 19:48:19 nmilosev: "owever, its main purpose is not to define solution metadata as in previous releases, but to allow selection of the CLI version being used through the sdk property." 19:48:19 which you can't create as far as I know without Visual Studio 19:48:47 for existing projects, it should work :) 19:49:05 Imagine there are different packages for these... dotnet-sdk-1.0 -> requires -> dotnet-runtime-1.0 ? Then... dotnet-sdk-1.1 -> requires dotnet-runtime-1.0 AND dotnet-runtime-1.1 ??? 19:49:22 (assume versions grow evenly) 19:50:03 yes, an sdk may support multiple frameworks, but it may also require multiple frameworks to work 19:50:07 ideally it should only need one 19:50:28 yeah, well, i guess that we would cross that bridge when we get to it 19:50:39 for now though, are we happy with calling it dotnet-sdk-1.1 19:50:44 the package we've got right now 19:51:18 nmilosev: the upcoming release can create solutions: https://www.hanselman.com/blog/TryingOutDotnetNewTemplateUpdatesAndCsprojWithVS2017.aspx 19:51:28 omajid: was there already place for the discussion about packaging you mentioned, or shall we spark it? 19:51:41 Rhea: not that i know of. lets start a new one. 19:51:54 Kay, we can get to that after the meeting 19:52:02 Now the name, dotnet-sdk-1.1 19:52:05 if dotnet-sdk-m.n needs dotnet-(m-1).(n-1) that could be huge 19:52:33 amitosh: can you define "need" in this context? 19:52:50 omajid: dependency 19:52:56 like what i asked about sdk 1.1 requiring both 1.0 framework and 1.1 framework 19:53:20 Rhea: yes 19:53:39 it should probably require only it's latest, where it's'optional to install another to be able to target it, don't'think it will go that well tho 19:53:53 fun fact: the upcoming sdk (call it tools 1.0) requires 1.1 framework. so if you want to target 1.0, you need 1.0 framework and 1.1 framework and the tools installed 19:54:12 yup 19:54:23 but it doesn't -require- 1.0 framework 19:54:29 you just need it to use it 19:54:33 correct? 19:54:47 would spit out errors if you would try to use it while you wouldnt have it i assume 19:54:58 yes, that you are missing the runtime 19:55:07 * omajid hasn't checked 19:55:26 like global.json tells dotnet which sdk to use 19:55:35 hmm 19:55:39 there is a *.runtime.config.json that tells dotnet which framework to use 19:56:01 so anyway, the naming... 19:56:03 for example if you have a look in the sdk folder, there will be a runtimeconfig for the c sharp compiler and one for the sdk dotnet 19:56:18 csc.runtime.config and dotnet.runtime.config 19:56:27 for our current package, what do we want to call it... just dotnet-1.1 until it is separated for sdk/runtime? 19:56:57 And after it's separate, go with dotnet-sdk and dotnet-runtime ? 19:57:16 I prefer to drop the runtime suffix 19:57:29 * omajid doesnt' have an opinion. thinks we should ping upstream first 19:57:58 or not 19:58:11 actually, people will install the sdk 19:58:17 i am also thinking that it should be dotnet core, not dotnet to distinguish this from .net framework 19:58:19 the runtime will come as a dependency of packages 19:58:32 so the sdk should have an easy name, runtime can include runtime 19:58:40 netframework is dead tho 19:58:46 and wont be present in linux packages 19:58:52 not for gui applications, not yet. 19:59:06 yeah, there's no .netframework for linux. 19:59:35 even still, we don't call mysql server sql-server because there's no sql server on linux ;) 19:59:56 anyway, i am okay with whatever others want. 20:00:22 is ms calling it "dotnet" everywhere? 20:00:37 I think so, and the executable is also named dotnet 20:00:41 so that's a good name 20:00:57 https://www.microsoft.com/net/download still says .net framework vs .net core vs xamarin 20:01:12 I mean, like package names for ubuntu etc 20:01:37 cli binary is dotnet as well 20:01:47 * Rhea shrugs 20:02:14 oh. https://github.com/dotnet/core-setup/blob/master/README.md 20:02:20 it's dotnet- 20:02:41 dotnet-host, dotnet-hostfxr, dotnet-sharedframework 20:05:25 So the ticket for github would have... 1) Our idea of versioning packages: a) present time/near future: dotnet-major.minor packages that can be installed at the same time, with `dotnet` being simlink to the highest version. 20:05:32 Correct? 20:06:47 dotnet is not a simlink 20:06:58 dotnet is the dotnet-host 20:07:07 Question omajid what's the difference between host and hostfxr - is the resolver the thing that specifies which thing we are using? 20:07:23 (all the things) 20:07:43 Rhea: some others: what do multiple packages look like (on disk and naming). are multiple sdks in parallel supported? 20:07:55 the dotnet-host is the binary that you call, the hostfxr is a library that is per version which contains the policy to select the appropriate shared framework 20:07:55 Rhea: sorry, not sure 20:08:08 I see 20:08:26 So based on that, comes the answer 20:09:09 so dotnet-host is dotnet-sdk? 20:09:12 xD 20:09:25 no wait the other way around 20:09:27 so users want to install sdks, and applications want to depend on runtimes, sdks depend on runtimes, runtimes depend on the host 20:09:38 can we ask "what are the components" in the ticket? ;) 20:09:53 ^ 20:10:18 Ticket: Linux Packaging 20:10:30 a) what are we packaging? 20:10:35 b) how do we call it? 20:10:36 perhaps an open ended question is best: how should we package .net core for our distro 20:10:40 c) how to we version it? 20:10:49 d) what of all of the above can we combine in what ways? 20:11:12 Anything i'm forgetting? 20:11:44 the dependencies between the packages 20:11:57 yep 20:12:21 can we move on with the meeting to end it, after which i guess i'll see about creating said ticket? 20:13:28 btw dotnet/core-setup issue? 20:13:30 Rhea: list looks good to me. 20:14:24 Rhea: what issue is this? 20:14:38 #action Rhea issue to dotnet/core-setup - Linux Packaging - what are we packaging, how do we call it, how do we version it, what are dependences between, and how can user combine versions/whatever at the same time 20:14:40 this 20:14:48 oh. 20:15:09 sdk is cli component. but sure, core-setup to starts with should be fine 20:16:32 #info === [COMPLETE] Rhea rewrite the Idea #1 to reflect recent findings === 20:16:43 I did not put it up yet but more-less it's fine i guess... 20:16:58 #link http://etherpad.rhea-ayase.eu/p/dotnet-gsoc2017 20:19:17 #info === [INCOMPLETE] nmilosev create a ticket tracking source build for f26 (25) === 20:19:29 #action nmilosev create a ticket tracking source build for f26 (25) 20:19:43 sorry, will do this, as soon as I try again with the source-build 20:19:55 yup no worries, no rush 20:20:12 Do you guys have anything else to chat about? We've been at it for a while 20:20:18 got stuck on ... naming and sh...stuff 20:20:26 sorry. 20:20:30 :D 20:20:35 #topic Packaging progress 20:20:45 #topic Open Floor 20:20:49 * Rhea shrugs 20:20:56 calling the meeting over once 20:20:59 twice 20:21:01 ... 20:21:09 #endmeeting