moving Linux filesystem

I figured I was about to install a bunch of things on my shiny new Linux subsystem, then realized my SSD would soon run out of disk space at that rate. Hoping I could improvise a solution, I tried moving the folder C:\Users\USER\AppData\Local\lxss to my D: drive and creating a (hard) symlink to it from the original location. This backfired though, as I was no longer able to boot bash afterwards (nor after moving it back or disabling/re-enabling the feature), which resulted in either no response (if opened from the start menu) or with Error: 0x8007001f (if called from a command prompt).
I'd be glad to know if anyone has successfully managed to move their Linux subsystem to save SSD space.

Same thing happened to me. Tried with junction first, then symlink

This would be really nice, as I generally keep my system disk not so big

Same issue. Hope it could move to disk D totally.

Since directly editing the lxss user home from Windows software is not supported right now, why not have the lxss filesystem (outside of the /mnt stuff) just be a drive image, similar to the option in RDS in Windows Server 2012 R2 to make user home directories mountable images?

I uninstalled via lxrun /uninstall /full /y created the folder %localappdata%\lxss, created a 20GB .vhdx in diskmgmt on my side hdd, mounted it to %localappdata%\lxss, reinstalled via bash.exe, and it's working!

Great, thanks! Haven't tried yet but looks good. Marking as solved.

Since build 14388 the vhdx method did stop working. :(
I have been using an external bash.vhdx for weeks and attached to an empty %AppData%/Local/lxss folder WSL worked great.
Now when running bash.exe it says Error: 0x80070003
It seems now it tests the lxss folder and if it wasn't created by lxrun.exe then refuses to run.
I hope someone finds another way to export the WSL filesystem outside of the system partition. Compiling a project like Cyanogenmod13.0 (needs +60Gb of disk space) is just impossible for me without it.

ooh good catch man I'm not on 14388 yet but I hope they fix this.

Does Cyanogenmod13.0 compile without issues on DriveFs?  (/mnt/d/...)

@benhillis On build 14372 there were some problems on repo sync. https://github.com/Microsoft/BashOnWindows/issues/124
I'm going to try now on 14388.

@benhillis eep my whole setup got nuked. I guess I will find a way to get my home folder and configs back >.>.

I managed to move lxss folder to another partition in build 14390. It's not as elegant and flexible as the vhdx method but at least it works.
First uninstall your current WSL with lxrun /uninstall full. Before installing WSL again you need to move LocalAppData folder to another partition and then make in the AppData folder a junction pointing to the new location. mklink /J C:\Users\onoma\AppData\Local E:\Local
After that lxrun /install will work like always.
As LocalAppData is a folder always being used by the system you need to move/copy it from "outside". I created another admin user and did it from there.

I haven't tested onomatopellan's new workaround yet, but I'd be inclined to consider this an open issue until Microsoft would start considering and support this use-case. Not every SSD-owner may have found this thread. :(

Yes, we need an option to move or install lxss folder in a desired location.
My method is working but it killed Edge browser. Every time I open Edge it crashes because it depends on LocalAppData folder. Also didn't survive to an upgrade to a newer build. Next will be trying moving the entire AppData folder instead.
I'm trying to understand how lxss folder works. It can't be a junction anymore (thus VHD method wont' work) and only lxrun.exe can create it. Folder can't be copied or moved but can be renamed and like this I have various lxss folders (lxss.xenial, lxss.trusty, lxss.base) with different environments. To change from trusty to xenial I just have to rename lxss.xenial to lxss and it works. So the special attributes of WSL files are conserved in their original lxss folders. And that's what I can't understand. What makes this folder special? There are no reparse points, its attributes are just hidden and system, there aren't alternate data streams either... so where is the special info stored?

I feel your pain as a 100 GB SSD user.  I've kicked of a thread with some of the developers to think about how we can support this Post Windows 10 Anniversary Update.
Just so I have the full story, is the install location the problem or would creating a separate VolFs mount on a different volume serve your purpose?  Apt packages etc would still end up on your main OS volume but you could use all the features of VolFs on a larger drive.

Hm. I think I could definitely fill some GB just from installing things, so going by that, the ability to allow having the whole thing off the SSD would be nice. I dunno what VoIF stands for though!

@tycho01 VolFs folders are the / and /home type folders and have linux-like attributes. DrvFs are the /mnt/* folders.
Great to hear you are considering this. I'd vote for an entire different install location. And if it was possible to install on a VHDX file it would be the best. Being able to backup an entire WSL environment so easily has been the best feature until build 14388 was released.
All that said as second option mounting VolFs folders on external partitions sounds sweet.

@benhillis Actually, the earlier workaround solution of installing on a vhdx was working really well for me (and apparently a bunch of other people).  Not really sure how it broke, but what would be ideal is to fix things so we can do that again (maybe automate it?) as well as allow us to create other vhdx files "formatted" for VolFS use that can be mounted.

I'll vote for this option.
The lxss is killing my disk space :(

@onomatopellan
I might be wrong, but maybe you can consider just create lxss folder under appdata\Local and only link this folder to another directory, so that Edge won't crash? I'm not sure if you link the whole local folder because the bash system requires, or you didn't have the lxss folder before creating the subsystem?
Although vhdx is more elegant, mklink seems to be faster right? My poor table has very slow disk i/o (I'm using a sd card, which is slow and sometimes windows just can't detect it, maybe someone can help me make it stable), and I do hope I can have a faster way.
After reading this post, I'm considering moving Office 365  (or maybe the whole program files) :)  No idea why Edge crashed actually, I thought mklink worked the same way as linux and Edge should put its files wherever the address is, regardless the actual location.

@zidongtuili Exactly, lxss can't be a link anymore. That's why I tried moving and linking Local folder. I think Edge crashed because the method I used to copy the LocalAppData folder wasn't the best. I changed the way I copy the "Local" folder now (I use robocopy after booting to command line) and I had better luck. Edge works like it should and WSL installs without problem. Now I only need to know if the link will survive to a new build install. I'll try with next Insider build.

@onomatopellan I tried your solution, use another admin user and robocopy the Local folder to another parition, then made a junction link. Everything seems ok after reboot and I installed WSL successfully. But one  day later the system goes wrong. All of the ump apps disapeared and the setting app crashed.
The command i used:
robocopy C:\Users\XXX\AppData\Local D:\Local /e /xj /copyall
mklink /j "C:\Users\XXX\AppData\Local" "D:\Local"

@utick Is that user a Local account or a Microsoft Account? It's weird everything did work and suddenly didn't. Sounds like if Windows changed the drive letter where you stored the Local folder. Is that a fixed partition or a removable one? It also seems you used the old method, creating another user and copying from there in desktop. That method gave me trouble so now I use native Command Prompt.

Create a new admin local account for testing. Let's call it Test for example.
Login to Test and see which drive will store the Local folder. In my case is E:
Now restart to Advanced Startup (Shutdown button -> Restart with SHIFT key pressed)
Select Troubleshoot -> Advanced Options -> Command Prompt.
Login to Test and a command prompt window will appear. In this environment drive letters could have changed so we need to know which one is the windows partition and which one is the E: where we want to copy Local folder.
Type diskpart and then list volume In my case the windows partition is D: and the other partition here is F:
Type exit to exit from Diskpart. After this type:
mkdir F:\Local
cd D:\Users\Test\AppData
robocopy Local F:\Local /E /COPYALL Make sure there are no errors.
rename Local Local.old
mklink /J Local F:\Local
exit
now Continue Windows 10 restart and everything should work.

I can confirm that on build 14393, creating a VHDX for the entire AppData/Local folder and mounting on boot works fine without any issues, it might be worth trying for anyone that encounters issues with @onomatopellan 's method.

Great @chocol4te!  Are you sure that works again?

@fpqc Moving the lxss folder itself did not work, but moving one directory up did the trick. Unfortunately I can only login as root, but I doubt security is really a priority this early in the feature. A rough guide for any readers would be:

Completely uninstall the subsystem with lxrun.

Create another admin account, fully log out of your current account and sign in to your new account.

Navigate to the original AppData folder in your normal account folder, rename "Local" to "LocalOld", and create a new empty "Local" folder.

Open Disk Management and create a new virtual disk on your target drive. Select VHDX, mount in the Local folder you just made, format as NTFS. Once done, if it has not mounted automatically, select Attach VHD.

Copy all files from the old folder to your new mount point, click retry for any prompts for administrator, and skip for any other prompt (I have not experienced any issues doing this, but it would be wise to check with someone more experienced.).

Create two files, I recommend in the same directory as your VHDX file. I chose "local" as the name for both. Create a .txt file with the following contents:

select vdisk file="directory_to_vhdx"
attach vdisk
assign mount="C:\Users\yourusername\AppData\local"
exit

and a .ps1 file with this contents:
diskpart /s local.txt
exit

Open Task Scheduler and click Create Task.  At a trigger to run "At Startup". In actions select "Start a program" and e enter "PowerShell" as the program/script. Add the following as the arguments:

.\local.ps1
and "start in" the directory of your ps1, txt and VHDX file.

Reinstall the subsystem as normal.

Nice workarounds.
An lxrun option to set the Linux root dir would be much better, though.
I hope Microsoft will do something on this.

Maybe I will bring a good news today. Lxss will run happily by mounting a vhdx to lxss and creating some dirs.

@qingxbl what build do you have?

@dreyks Microsoft Windows [Version 10.0.14393], RS1 release.
It's much simpler than I thought.

Uninstall if necessary.
Follow this guide to create and attach vhdx to %LocalAppData%\lxss  https://github.com/Microsoft/BashOnWindows/issues/449#issuecomment-223732558
Install Ubuntu On Windows as usual, lxrun /install or bash.
You will get an error after entering UNIX username. Relax, we will pass it.
Open a file explorer windows and enter %LocalAppData%\lxss.
Rename directories cache, data, mnt to ჻cache, ჻data, ჻mnt. Yes, prepend a ჻! I don't know why.
Create directories ჻home, ჻root, ჻rootfs.
Run lxrun /setdefaultuser and type your username. You will get an error AGAIN.
Return to file explorer. Move (not copy!!!!) everything in ჻rootfs to rootfs.
Now, swap ჻rootfs rootfs. For examle, rename ჻rootfs to aaa, rename rootfs to ჻rootfs, rename aaa to rootfs.
Run lxrun /setdefaultuser. It will work this time.
Run bash. Enjoy.

@qingxbl Where did you got this method from?

@utick I figure out myself after doing some research using Process Monitor

That's hell of a job =) Thanks a  lot, will try today

@qingxbl Great work. So this means that we need to keep folders with names like ჻ xxx? Just googled this is "georgian paragraph separator (U+10FB)". Do these folders also exist in original lxss folder (without using vhd)? I just wonder if there's an update and suddenly we have to something else, as I'm just doing this for fun and my tablet is very slow.

@qingxbl Step 11 and 12 doesn't work. Error: 0x80070003. :( This is on build 14393.51.
On step 9 you mean Move everything in rootfs to ჻rootfs.`?

@onomatopellan maybe meant 14901?

@fpqc 14905 is out. I'll try there too.

Sorry for my poor english.
@zidongtuili Yes, you must keep these ჻xxx folders AND xxx folders at the same time. These folders doesn't exist in original lxss folder. But if lxss is a Reparse Point, these ჻xxx folders will be used instead of xxx. xxx folders will be create if missing, so just keep it.
@onomatopellan I'm using 14393.51, too. After step 10, lxss must contains following folders.

჻cache
჻data
჻home
჻mnt
჻root
჻rootfs
cache
data
home
mnt
root
rootfs

჻rootfs is the real rootfs for ubuntu, rootfs is empty.

@qingxbl It doesnt' work. Which Windows Language are you using? If you type chcp on CMD what it shows?
BTW your step 9 is backwards. As ჻rootfs is empty, It should be:
for /f %i in ('dir /b rootfs') do (move rootfs\%i ჻rootfs)

The magic char ჻ will CHANGE after reboot!!!! I think this is the reason why vhdx method is broken after build 14388. M$ uses an uninitialized variable to construct file path.

Run Process Monitor. Press OK button in Process Monitor Filter.
Run lxrun /setdefaultuser, type username and press Enter.
Stop capture in Process Monitor (the 3rd button in toolbar or Ctrl+E).
Ctrl+F, search for rootfs. And you will see a log like this. The char before rootfs is the magic char.

@qingxbl Thanks a lot. Following your last instructions I discovered magic char was  and now following your steps it works perfectly. I didn't try to reboot yet though.

Is it possible to move the /usr or /(root) to another directory. Even in this case we still have lxss in C:, we can have a very small folder. Sorry this may be a naive question, as I never did things like that.

@zidongtuili Not now.  In future builds we should be able to have VolFs folders (/home, /usr...etc) in other partitions outside of C: .

@onomatopellan I mean not from the windows side, but when using linux, there could be a way to change the default directory of /usr /bin etc.

@zidongtuili It doesn't matter in that case because you can't move /usr folder outside of lxss folder. All the linux folders need to be inside lxss as it's a special folder and the only one with extended attributes.

Have there been any updates on this issue elsewhere? This is a feature that may be critical for some setups.

Any update?

Maybe someone can give us an update about this issues?
I`ve tried to follow instructions above but each time something goes wrong....

Hey guys , have there been any updates?

@bestcodecomua I have updated my instruction below. Hope this help.

@qingxbl have you worked it out?

Looking for update on this issue, it's better to have configurable rootfs path for portable environment in worst cases which I need to reinstall Windows or C driver exhausted.

I tried with a hard link and I now cannot proceed to install the Linux files, when I press "y" when prompted, the window closes immediately... any update on that feature that has been asked for quite a long time?

@all - Apologize for the super delayed response on this. It slipped out of our radar. Unfortunately, WSL does not support this is any official way. Neither will the 'Creators Update' build will have support for this. But, we are looking to support this in the next release cycle. Please bear with us until then. We are trying to manage a lot of feature requests, and some do happen to not fit the immediate bill. Also, please open a user voice ticket (and up vote) for this feature, which we look at feature prioritization.

For reference the relevant user voice ticket is here.

Anyone attempt this with symlink/junction since Creators?

Looks like @qingxbl solution from a while back may still work, but using a directory symlink (mklink /d) instead of a junction.  I didn't go beyond the attempted lxrun /install, though, because i don't want to mess with all that stuff with the "magic character".  At least the lxrun was successful.  Bash doesn't run, ofc.

Is there anything new on this thread? I'm investigating how we might be able to use WSL on our campus lab machines which use Deep Freeze. I need to put the / directory somewhere other that C:.
I note that you can now mount network and other drives on /mnt. See this for example:
Is there anything new on this topic?

@frohro - Thanks for your post and excited to know that you are looking at WSL as a viable option for you labs. What you are looking for should come when the distro apps start showing up in the Windows store. Here is an excerpt from a recent post from @bitcrazed. Hopefully that answers your question:
You can install your distros to secondary fixed drives (i.e. not C:!)

Thanks!  This is helpful, but I need the root directory to be on a network drive or possibly a removable drive.  Changes made on the C: drive are wiped out by Deep Freeze every night.  Students use the OneDrive and a local network drive for things they want to keep.  I am now trying to see if I can mount a network drive and chroot to it, so they can keep changes they make under WSL.  I'm a bit worried because the interesting news you pointed me to says the new distro has to be on a fixed drive.  I don't think that will work the way our IT guys do things.  It looks like mount in the most recent versions allow you to mount network drives or removable drives, and chroot was recently implemented.  Is it possible to use mount and chroot to a network drive, to move the root directory, so that Deep Freeze doesn't destroy student's data every night, when the computers are rebooted?

WSL setup is tied to the user. I don't have insight into how the users are provisioned in your lab setup, but, I am not sure how putting the root on a network folder would solve the user provisioning problem as all the users accessing the root will have a single shared view. Other option here is to use WSL bash for SSH. But, then it would turn it into a thin client kind of a setup. Sorry, don't have any solutions here for you or if this is even helpful.

Glad to see progress has been made on this -- it'll be really really helpful to be able to have VolFs on a disk that is not a tiny (relatively) SSD.  Some of the things I want to use require a lot of space, and won't work on DrvFs.
As an aside, but sort of related, at least to part of my goal for wanting this feature -- anyone know if there's any way to create a second DrvFs that lives somewhere else on the WinFS, and mount it in WSL ?

Thanks Sunilmut,  The users on our network each have their own network directories.  What I would like my students to be able to do, is to install and use Linux programs via $ sudo apt-get install whatever, and it would install the stuff on their own network drives, each student uniquely.  Deep Freeze is a utility the school uses that resets the C: drive back to the specified state on every boot.  IT has a nightly scheduled reboot.
The thin client isn't that attractive, but WSL looks like someday and maybe soon it could allow us to make all our computer labs Windows.  Linux users would just use WSL on the Windows computers.  As a professor, I like the ability of users to install a Linux program or two, in the middle of the quarter.  In general IT only allows that a few weeks before the term starts.  If we could use WSL to do it this way, it would be better for current Linux users than the present system; most of the students are used to Windows, and so they would have many more workstations to pick from.  This is a real win-win situation.  In some labs, we actually have two physical computers, with KVM switches to one monitor and keyboard, so students can pick to use Linux or Windows.  And in present thin client Linux setup, they don't have sudo privileges either.
At this point the IT staff in not opposed to an install like this, even if the students have sudo on WSL, if I can figure out how to do it.
Thanks again for the helpful replies!
Rob

Have you evaluated using containers as a possible solution? It can be personalized per user as you envision and has the flexibility of storage etc.

@sunilmut You can use Windows containers for WSL environments and deploy them to client Windows 10?  Pretty sure that if Windows containers are supported on client Win10, it's only on internal builds.  On public builds, we only have hyper-v containers (in which case you might as well virtualize Linux)

@fpqc - I was curious to see if @frohro had evaluated the use of containers as a possible solution, in theory. Practically there are some limitations in running these on Windows and WSL also does not currently support them. But, if support for it improves over time, then it becomes a viable option, if in theory the solution works for the user. If WSL had support for containers, I imagined the solution to look something like; one would have the base WSL image as part of the OS image and then allow users to manage their own containers using WSL. There are some limitations (NTFS case preferring) that makes it difficult to provision WSL as part of the OS image, but that issue is quite well known here and talked about.

@sunilmut yeah I think that Windows container support would have to at least make it out to Win10 Enterprise for that to be viable right now.  Afaik, that's only supported on server 2016 SKUs

Thanks for the note on containers.  I haven't really looked into that in any detail at all.
I did do some testing with mount and chroot, and found that the differences between the file system types are problematic.  For example when I mount a network directory, even ls doesn't work there.
root@DESKTOP-T7N7MBO:~# ls /mnt c  slash  testing root@DESKTOP-T7N7MBO:~# mount -t drvfs E: /mnt/testing root@DESKTOP-T7N7MBO:~# ls /mnt/testing ls: reading directory '/mnt/testing': Invalid argument root@DESKTOP-T7N7MBO:~# cd /mnt/testing root@DESKTOP-T7N7MBO:/mnt/testing# touch test root@DESKTOP-T7N7MBO:/mnt/testing# ls ls: reading directory '.': Invalid argument root@DESKTOP-T7N7MBO:/mnt/testing# ls test test root@DESKTOP-T7N7MBO:/mnt/testing#
I guess my hopes at this point are not very high for this working for next fall, but I'll keep an eye on things and hopefully by next school year this will be a possibility.  Thanks to all you guys who are working on WSL.  It looks very hopeful that it will eventually be a great solution for computer labs someday.
Thanks,
Rob

@frohro What is E: in this case?

It is a "network" drive actually shared using VirtualBox from my main Ubuntu install.  \vboxsrv

Oh, them it definitely won't work

If anybody has seen an update on this, let me know. I'd love to use bash on Windows, but I want to install it on my hard disk (not my SSD).
I'm on OS build 15063.483

@psavery  Join Windows insider, switch to Fast Ring (maybe Slow Ring is enough) and install Ubuntu from Store.

@taroxd : care to elaborate? what would the benefit of doing that be? has Microsoft addressed this issue yet? How about some more detailed feedback on where things stand with this now. Also eager to get this working so I can ditch VMware in cases where BashOnWindows could provide a more native, elegant solution

It won't work right now. Rich said they're planning to add it later in another thread.

Yes, I see the link now where it was addressed: https://blogs.msdn.microsoft.com/commandline/2017/05/11/new-distros-coming-to-bashwsl-via-windows-store/
Just not sure if that insider build is actually out yet.

@psavery
Yes. Ubuntu is now available in Store, requiring Windows 10 Build 16215.0 or higher.
However, installing it to secondary fixed drives is not available currently. Hopefully it will be supported some time according to the blog.
@fragtion
See the post that @psavery mentioned. Ubuntu is now available in Store, but it cannot be installed to an alternative drive. I am sorry for my previous misleading answer.

@onomatopellan
I have just followed your procedures and it works! I'm very glad to see your solution and follow it. The default built-in Administrator account, in fact, can be activated by some commands with a terminal. Here's the reference:
https://www.ghacks.net/2014/11/12/how-to-enable-the-hidden-windows-10-administrator-account/
I think this note is very simple and clear about how to enable and disable the built-in account.
Just a supplementary materials to your solution. Thanks!

I'm not sure how this might affect overall performance but for those of us with SSD storage limits how about instead of trying to symlink places like "%localappdata%*" (* being for any subdirectories that might include) just relocating the entire user folder to another internal HDD with plenty of space. In theory, this would save enough room on the SSD for select build projects assuming they can be compiled successfully outside of the lxss folder... Using one of the methods found here If the entire folder our user accounts are stored in is changed using a normally inaccessible environment variable that is in-tern inherited to the ones we care about. Maybe this would eliminate any bash or lxrun errors returning since we wont be moving a single folder with a clever hack but with (native code hopefully well-written and debugged & long past the testing phases... it's already in release updates so it should work well enough for end-users who expect it to, unlike us who expect bleeding edge fast-ring updates to have problems on principal and willing stay there for access to stuff like this)... Anyways I could be entirely wrong about it working, as all of this is supposition- though it seems logically sound not everything makes sense ;). Let me know if anyone tries this out and can confirm it working & without a major performance loss due to IO bottlenecks associated with HDD. Start-up time (log-on) is the only thing I think would be noticeably slower.  Clean installation sounds better, but is IMHO a larger task due to app reinstallation & configs. Sorry for the huge post but this has been a discussion for long enough that I think we all would love a working solution without it breaking due to version updates (VHDX, and the magic-char after every restart sounds beyond irritating). Thanks! Hope to hear your opinions! Feel free to run the idea into the ground as hard as you can, maybe some of the issues that arise are easier to find solutions to than waiting on lxrun & WSL to mature to the point we want where this isn't a problem. (The post mentioning relocation of lxrun /install /dest, was edited with that line being crossed out and dropped for the recent update(s?) for those of you that didn't notice.

@rivehafintosh - You can relocate the entire BasePath (ie \HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss\{12345678-1234-5678-0123-456789abcdef}\BasePath) to another place with robocopy. I can confirm that works fine.
But at base, we need mount -t lxfs. I have been meaning to submit a dedicated issue request here, but being sent to User Voice will just make me sad inside.

@therealkenc - Thanks for giving me a heads up with the current state of things, was a long thread and wasn't entirely sure where things stood for current lxrun versions. Looks like the issue had closed a few times only to re-open, sadly it's to be expected.. but that being said.. if one were to start from a clean-install with the folder "(SSD)C:\User" relocated to (HDD)D:\ by setting it up via audit-mode while installing the majorities of the issues mentioned shouldn't be relevant anymore.
The point you're trying to make is is if you were trying to use a manually moved lxss folder via powershell/CLI using robocopy and after fixing the registry key you specified you end up unable to remount the existing user folders because bash isn't auto-mounting the lxfs partitions with the new path such as /home, which would otherwise be mounted with. mount -t lxfs _______ - Error
So it sounds like, manually moving it until mount is fixed isn't an option until the mount binary has been reworked to enable manually created lxfs mount-points.
If I'm understanding your post correctly...
The mount binary seems to be an important one to circumvent from our relocation plan until the WSL binaries are less buggy and we can rely on mount to work.
Maybe this issue won't be present if Windows has been clean-installed, as I'm sure it's possible their are extra registry keys related to the relocation of the entire user folder so that any other %localappdata% related child-items aren't broken for the rest of windows apps too.

Okay...Sorry for the delay, I finished getting around to testing this out...and as far as I can tell it works perfectly! I used the windows store distribution of ubuntu instead of the legacy install method "lxrun /install" but I doubt that makes much of a difference... but I did notice my WSL installation is located somewhere else entirely but still where I wanted it, off the boot partition... the lxss folder is actually gone and the store places your installation in the following folder....  D:\Users\Sudomin\Appdata\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs\
So Hopefully this workaround will be of some use to someone other than myself...I don't know if we can officially close this issue but, I think it pretty much covers the problem behind why everyone wants it moved. I would still like to see the ability to choose a custom installation path somewhere down the road.
Let me know what happens good & bad for everyone.. I'm curious to find out the results of your testing it out as well. Cheers, RIVE_Hafintosh

I don't know if we can officially close this issue
No ways mate.... this is absolutely still an issue because not everyone wants to (or can, for that matter) relocate their entire 'Users' or 'AppData' folder (which isn't a function officially supported/provided by Windows's UI anyway) purely for the sake of relocating their WSL deployment?
The user should be able to explicitly determine the rootfs path of their choice (ideally via a designated registry key or something like that, and which not be restricted to the C: partition or even the system hard drive for that matter). @sunilmut : any news on us seeing something like this and which build we can expect it? We've been super patient and the silence from MS as of late is quite deafening to say the least..? :/

user should be able to explicitly set the rootfs path of their choice (ideally via a designated registry key or something like that

HKCU\Software\Microsoft\Windows\CurrentVersion\Lxss\[UID]\BasePath
Okay, so you want a CLI or UX. It's a reasonable ask. I am looking into it on and off. Rich has already stated:

Yep – we’re very keen to allow you to install/move your distro’s to non-system drives too. Requires some more work to make this experience really solid though.

You can vote for the User Voice here.

@fragtion I was being sarcastic bud, MS shouldn't make you have to reinstall the OS in a strange manner to make use of software. Period.

@rivehafintosh Agreed totally.
Hmm ok so I've tried to get WSL up and running again with the aim of applying this suggested workaround to relocate the UID basepath, but in my case the UID key was not created. My reg key path ends at Lxss (Computer\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss) which contains the following entries: DefaultGid (REG_DWORD: 0x00000000), DefaultUid (REG_DWORD: 0x00000000), DefaultUsername (REG_SZ: "root") and State (REG_DWORD: 0x00000001). Am I perhaps missing something here, or was this described [UID]/BasePath field only implemented in a build subsequent to 1703/10563.608 ?

Am I perhaps missing something here, or was this described [UID]/BasePath field only implemented in a build subsequent to 1703/10563.608?

Yes, UID is used on Ubuntu from Store and you will need at least insider build 16215 or wait for Fall Creator Update next month.

I was wondering if I should write up an in-depth guide and throw it up somewhere for future reference, but I'm kind of hesitating because it would take up a bunch of time- which I would rather not spend if its going to be immediately forgotten...ya know? Probably will only take one or two people to convince me to write something up. Well, any takers?

Hi,
I would be interested if it will allow us to have a Linux file system on
a network drive in such a way that multiple users could use it.
Thanks,
Rob
On 09/19/2017 10:13 PM, rivehafintosh wrote:

I was wondering if I should write up an in-depth guide and throw it up
somewhere for future reference, but I'm kind of hesitating because it
would take up a bunch of time- which I would rather not spend if its
going to be immediately forgotten...ya know? Probably will only take
one or two people to convince me to write something up. Well, any takers?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/Microsoft/BashOnWindows/issues/449#issuecomment-330747144,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AA8tBVEDwGJDwBbWreiFU8NXpwj19J4pks5skJ78gaJpZM4IpDIp.

--
Rob Frohne, Ph.D. P.E.
E. F. Cross School of Engineering
Walla Walla University
100 SW 4th Street
College Place, WA 99362
(509) 527-2075

Now that the Windows 10 Fall Creators Update is available, is there an easy way to move on another drive?

from a recent test i figured out its possible to replace the LocalState folder with a symbolic link

A quote from this page: https://blogs.msdn.microsoft.com/commandline/2017/05/11/new-distros-coming-to-bashwsl-via-windows-store/
"You can install your distros to secondary fixed drives (i.e. not C:!) [Update 2017-07-24: Alas, this didn't fit in the Fall Creators Update schedule; we're looking into this feature for a future release]"
Unfortunately, I guess this didn't make the Fall Creators Update...

I do have one question -- why is it limited to system drive to begin with ?
How does that get engineered into a thing ?
On Oct 26, 2017 6:21 PM, "Patrick Avery"<EMAIL_ADDRESS>wrote:

A quote from this page: https://blogs.msdn.microsoft.
com/commandline/2017/05/11/new-distros-coming-to-bashwsl-
via-windows-store/
"You can install your distros to secondary fixed drives (i.e. not C:!)
[Update 2017-07-24: Alas, this didn't fit in the Fall Creators Update
schedule; we're looking into this feature for a future release]"
Unfortunately, I guess this didn't make the Fall Creators Update...
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/Microsoft/WSL/issues/449#issuecomment-339817854, or mute
the thread
https://github.com/notifications/unsubscribe-auth/ABYnR_w4n006GrlP72qC3m9Az8dqGc3nks5swQXTgaJpZM4IpDIp
.

@ericblade - Unfortunately this is due to a few limitations with the Windows Store infrastructure not correctly handling case-sensitivity.  We are working with them to resolve the issues.

I hope these issues get resolved soon because while i can make use of docker to provide me with a possible fix it has some noticeable overhead.

@jfmherokiller - we are looking into enabling distros to be installed onto a non-system drive, but no firm commitment until we've gotten further with our investigations.
@ericblade - we're a small team with limited resources and MOUNTAINS of work to do, some of which had to take a higher priority than this feature. It turns out that allowing distros to be installed/moved onto a non-system drive actually involves a fair amount of work, across a couple of teams. Please bear with us.

@bitcrazed @benhillis no worries here, i appreciate the openness (and I'll be moving a box to Fast as soon as I hear this is in :-) ) .  I was just curious how it came to be that it's locked to a system drive, because from an application developer's perspective, it seems like it would be more difficult to do something that ties it to a specific drive, rather than less difficult . .  so i was just trying to understand what the reason was.
Being that a lot of people boot from small SSDs, but use other drives for large storage requirements, it seems like it would've been something built in from the beginning

As I said before, this was not a design decision, rather working around issues with another component.

I've already gone and added my support to the user voice items for loop device support, but figured i'd mention it here -- loop device support would work for me for this, as well, so long as i could put the loop file onto one of the larger hard disks.  Mounting a 50GB loop device file into my home directory would solve the problem that I need more space available for the WSL system, just as well as being able to move the entire WSL system to the bigger drive.

@ericblade it would be even better if we were able to mount lxfs (VolFs) directories (mount -t lxfs D:\ubuntu\usr /usr)

Sure, but that probably does little to resolve the filesystem problems in
the first place. In a loop block device that should be no problem.
On Oct 29, 2017 5:08 AM, "Marco Groppo"<EMAIL_ADDRESS>wrote:

@ericblade https://github.com/ericblade it would be even better if we
were able to mount lxfs (VolFs) directories (mount -t lxfs D:\ubuntu\usr
/usr)
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/Microsoft/WSL/issues/449#issuecomment-340247366, or mute
the thread
https://github.com/notifications/unsubscribe-auth/ABYnR_SAgK--cQlIFJXRi1gfpVu4mdkfks5sxECNgaJpZM4IpDIp
.

it would be even better if we were able to mount lxfs (VolFs) directories

I am not clear on why that didn't happen from the get-go. Speculating; it's probably because people would stomp all over it from the win32 side, and dealing with the flood of duplicate 'my permissions got clobbered' issue posts in github isn't worth the pain until this User Voice is addressed. This is most unfortunate.

Sure, but that probably does little to resolve the filesystem problems in
the first place. In a loop block device that should be no problem.

Only if you put writing an ext4 clone on the table. Which is orders of magnitude more difficult than addressing the remaining lxfs gaps.

robocopy LocalState directory and change BasePath didn't work for me. bash exits immediately without any error when I try to run it.
I get it to work with the following steps instead (I'm using Ubuntu, other distros should also work):

robocopy package directory of the Ubuntu app to another directory where you want to install the app with /e /copyall specified. In my case, it's C:\Users\xxx\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc.

Remove everything under the copied directory.

Uninstall the Ubuntu app.

Create a junction point with the name CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc under
C:\Users\xxx\AppData\Local\Packages, pointing to the directory copied in step 1.

Reinstall the Ubuntu app from store. You should find that contents of the package including rootfs now appears in the linked directory.

All: Appreciate the interest in this feature, and attempted work-arounds are always fun to see, but we'd encourage y'all to avoid mucking-around(2) with the filesystem too much: there's work afoot to build a supported, reliable mechanism to address this ask so spending time on building a work-around is likely to be time not well spent.

but we'd encourage y'all to avoid mucking-around(2) with the filesystem too much

Yeahbutt the stuff that works in WSL is useless to us as a time sink(2).

Just to get it out there because I haven't noticed it yet: Since WSL is installed from the Windows Store and has an app associated that is like any other MS App and you can configure your apps to install to a different directory in Settings - System - Storage "New apps will save to..." Isn't at least some if not all of WSL's data already on a separate partition/drive if you changed the location of apps from C:/ to another drive letter? I personally see data from my Ubuntu and OpenSuse installs in my D:\ directory because I reconfigured that setting to install all new apps to my D:\ directory and don't have any issues from a WSL perspective in regards to this particular subject that I'm aware of.

@DarthSpock nope, if you attempt to set the new apps location to a different drive, when you click Install in the store, the store will warn you that it must be installed to a system drive, and then not install it.

@DarthSpock A few things:

WSL is not installed from the Store: WSL is an optional component that you enable via "Turn Windows Features on or off"
Distros are installed via the Store
Distros, like any other apps, can declare that they must be installed on the system drive if they have some reason to do so, which they currently do

Hi guys,
Any update about this issue? I tried this (https://github.com/DDoSolitary/LxRunOffline) and it worked well.

Did you perhaps install on a network drive?
Thanks,
Rob
On 12/07/2017 04:53 AM, fhh2626 wrote:

Hi guys,
Any update about this issue? I tried this
(https://github.com/DDoSolitary/LxRunOffline) and it worked well.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/Microsoft/WSL/issues/449#issuecomment-349958582,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AA8tBZavu7qVatojyExHEHu_uKXZH9ELks5s99_WgaJpZM4IpDIp.

--
Rob Frohne, Ph.D. P.E.
E. F. Cross School of Engineering
Walla Walla University
100 SW 4th Street
College Place, WA 99362
(509) 527-2075

@All:
Polite note:
This issue is known, understood, and we're working on improvements to be delivered in a future Win10 release.
When we know our solution works, and is fully supportable, we'll announce the feature in a post on our CommandLine blog site, and will update this issue.
If you want to know if we've shipped this feature, please check the blog above, and this issue for an announcement. Until then, assume this feature has not yet shipped.

I use https://github.com/yuk7/WSL-DistroLauncher and have 15 different distro's installed on my d:\ drive the rootfs tarballs installs inside the folder for the distro along side the launcher, which can be anywhere. I am in the process of creating a system that will build the distro's I have confirmed to work into downloadable artifacts just unzip and launch. No switching and can launch as many Ubuntu's or Gentoo's or Debian's as you like side by side.

I found https://github.com/DDoSolitary/LxRunOffline useful, too
I've already succeeded in installing Ubuntu on another disk by using this tool.

@CopperKun Yep I used that one too but I want to be able to do this without a dotnet requirement and also I like the way you can just change the name of the launcher executable and it will register as whatever it is named. This little trick allows you to rename multiple installs of say Ubuntu-Apache, Ubuntu-Data and so on to have multiple installs working together over tcp sockets if you wanted to do such a thing. But both projects are awesome with the one your using having a lot more features per se then the launcher. For example lxrunoffline can relocate a distro automatically where the launcher has no such feature.

@mrpastewart Win10 v1703 has .NET Framework 4.7 built-in and v1709 has v4.7.1 built-in. I don't think you'll encounter any problems with .NET Framework. And LxRunOffline also supports installing multiple WSL environments side by side.

Hello, MS folks, I read that WSL enables case sensitivity for a process regardless of the obcaseinsensitive registry value.
https://github.com/Microsoft/WSL/issues/718#issuecomment-237269979

We enable case sensitivity temporarily on a per-thread basis for pico processes that are running Linux binaries.

https://blogs.msdn.microsoft.com/wsl/2016/06/15/wsl-file-system-support/

As mentioned earlier, Windows and NTFS actually support case-sensitive operations, so VolFs simply requests the Object Manager to treat paths as case-sensitive regardless of the global registry key controlling this behavior.

I'm wondering if it's possible to enable this for a normal user process. I implemented extracting tar files and copying filesystems with C# and C++ code, but I still have to set obcaseinsensitive to to make things fully work.

@benhillis @bitcrazed Sorry for disturbing. Could you please take a look at my above comment? My project does need this feature. Setting the registry value and asking users to reboot is causing a lot of problems: DDoSolitary/LxRunOffline#21

It sure if this helps, but I've once just moved my entire user folder (f.e. C:\Users\username) to another drive. Maybe that works for everyone here? 😂

@trusktr This was the only solution for a time, but it causes a lot of issues -- for instance, it made installing Windows updates impossible for me, and is otherwise a pain to set up.

@DDoSolitary:
@benhillis can keep me honest here, but I believe you can only perform fine-grained case sensitivity control over object manager name resolution sensitivity from the kernel via _OBJECT_ATTRIBUTES used when calling things like ZwCreateFile(), etc.
You might also find this useful: http://www.nicklowe.org/2012/02/understanding-case-sensitivity-in-windows-obcaseinsensitive-file_case_sensitive_search/

Polite ask: Please create new issues for specific issues/asks rather than forking conversations ;)

But if obcaseinsensitive is set to 1 (which is the default setting), NtCreateFile is case-insensitive even if OBJ_CASE_INSENSITIVE is not set. This is just why I'm asking here...

Regarding original OP of officially installing distros to alternate drives, what is the progress here? Is this something we may yet see in the next stable release?

@DarthSpock I don't think it will be available for the next release because it is still not supported in the latest Insider Preview build. Maybe you can take a look at my project LxRunOffline supports installing to arbitrary directories.

With the release of Kali and Debian to the Windows Store, I prefer to install from there. Unfortunately, my SSD can't support it if I plan on doing any work in them. There's just enough space to install them and get a few updates. So doing any projects or installing and running pen-testing tools like Armitage  and Metasploit while having another distro installed isn't doable (those darn capture/log files you need filling up space).

I installed Debian earlier today and it worked just fine along with Ubuntu. However, when I moved it to another partition thru Settings-App & Features, it did not work. It is giving me Error: 0x80070003. Repair'in did not help. Reset'ing it (re-installing) seemed worked, but as soon as I tryped a user name I got the same error. Moving it back eliminated the error, but of course, defeated the purpose..
Any idea why this happens? If this works, then there is no need for third party tools.

@rasit WSL is currently linked to the system drive for obvious reasons. It made sense in the beginning of the project but at this point, it shouldn't matter, as long as the communication flow between WSL and the NT kernel isn't broken. It certainly isn't breaking at a filesystem level, proof-of-concept is these third party projects like mentioned above. Un-installation isn't very clean though, have to manually remove all data and then run some type of software/registry cleaner to remove erroneous files and entries. Which is why I gave up doing that solution. A cleaner method would involve the Windows OS team and the UWP team, perhaps it's the coordination between these 3 entities (third being WSL team) that's the delay.

@DarthSpock: Thanks for your response. I tried the same with Kali (after your mention about its availability). Trying to "Move" it was no successful. It gave "We couldn't move Kali Linux, the publisher of this app doesn't allow it to be moved to a different location." error. I thought this was almost the proper way of emphasizing the fact that currently WSL does not allow distros to be on a non-system disk. The right way would've been simply disabling the "Move" button altogether, as many apps do. I guess I have to wait to clear my 70+GB Ubuntu storage until WSL folks provide the relocation.

@rasit, @DarthSpock - The issue here is that Debian is missing some flag that says "requires system drive."  I'm following up with some people to see why their app is missing that flag.
There are underlying issues with Windows that prevent distributions from being movable via the Store API's.  Until those are fixed, install is limited to the system drive.

@benhillis Is it possible to bypass the Store APIs without resorting to third party projects? Perhaps creating type of symlink along with required files for the Store to be happy with but have the actual rootfs installed on another drive. This might prove useful also to getting WSL distros portable (you can run it on any machine via USB that has WSL enabled and usewsl.conf for fstab and add the USB drive there.

Well I don't understand all the fuss until the WSL, WIndows or whatever team makes it so we can install official images from the app store on any drive there are alternative solutions that work today. Like I said I have 19 distro's all installed to my D:\ drive @DarthSpock The 3rd party projects you don't want to use all tap into the windows WSLAPI so official or not they are using the proper Microsoft API and they work it's the windows store API that is messing up things and they are two different animals. I have 19 UNOFFICIAL distros available here:
https://github.com/x-distro/x.distro/releases
you can simply download the one you want or all of them unzip on any drive and double click the executable and it will install the distro to WSL you will see it extract the rootfs in the location you unzipped it to. This is using WSLDistroLauncher and rootfs's I pulled from Docker. If any of them don't connect to the internet edit the resolv.conf and try again I am in the process of automating a build system to create all theses distros

@mrpastewart - I was chastised for using the docker images when I tried to get support from #ubuntu freenode, you might want to repoint and use the cloud image from (https://cloud-images.ubuntu.com/bionic/current/bionic-server-cloudimg-amd64.squashfs) instead, at least with that base they will support me and my issues.

With the launcher open-source, we can sideload distros instead of using third party projects. In theory, that would mean the ability to install to an alternative drive (no Store being used, therefore no Store API in use). If we had a few volunteers bundle up a few popular distros that people could sideload, that would easily replace these other methods. Can't test the theory myself due to other obligations consuming my time but if someone wants to give it a go and let the rest of us know if it's possible to install distros using the side-load option on an alternative drive, that would be great.

@lewisdonofrio the Ubuntu image is not pulled from docker it is the rootfs from the original official image provided by microsoft

16.04 oh ok, I was talk in regards to 18.04 mybad.....#keeponrockin

@lewisdonofrio I agree completely and when I do use docker images I pull only official ones from the distro creator so as I move forward on the build system all rootfs come from official upstream providers. @DarthSpock I will try and integrate in Microsoft's launcher and see what It can do.

Cleaner installation and de-installation. When you uninstall Ubuntu for example, there are no traces of it left.  If you installed using some other method than the Store, that is NOT the case. I have also experienced less issues with Store version distros vice installing in another way. Side-loading isn't a solution but a cleaner work-around than these other methods. Plus now there's no more guess-work when it comes to the launcher. so your project for example can be optimized and/or tweaked. I will admit I haven't tried your particular project but I haven't wanted to basically perform all the build-steps to get a distro running either. At least knowing an official code from Microsoft is available (and works for anybody who downloads from the Store who remembers to enable WSL first), I can only blame myself when something goes wrong instead of guessing it's an issue the project maintainer needs to address. Really point blank is I trust Microsoft's code over somebody else's for use on their OS because they own the source-code. This same logic applies to why we don't have more distros on the Store. Alot of people including me trust the authoritative source more.

@DarthSpock welcome to try mine (to proof the documented steps) its 18.04 ubuntu with xfce4 from http://www.tinyurl.com/donofrio1804 (skip unneeded login)

Is there any update on this? I was hoping to be able to install the Linux filesystem on Dropbox or OneDrive to be able to use it between multiple machines.

@Plinpod I don't think it's possible because the the filesystem NTFS extended attributes to work, which the cloud drives apparently don't support.

There is something in wslconfig.exe in build 17686 about moving/upgrading filesystem. But it's not documented.

@DDoSolitary Do you know of any solution for portability? I wanted to setup WSL as a development environment and be able to use it across different computers easily.
@Biswa96 Thanks, I'll keep an eye on it.

@Plinpod If you want the whole filesystem synced, the best way is using a VPS.

@Plinpod Why not you install WSL in other systems or other drive/folder?

@Biswa96 : The whole thread is about the lack of support to move WSL installations to non-system (not C) drives. Do you have a suggestion for that?

@rasit You can use Biswa's project or DDoSolitary's project or even the official Microsoft project for building your own distro. Each of these will allow you to install to a drive other than C:\

There is something in wslconfig.exe in build 17686 about moving/upgrading filesystem

@Biswa96 Does this functionality work and if so, have you reversed it?

@Biswa96 Installing WSL on the other systems wouldn't be an issue however since the purpose of this for me is to run a development environment I want a way for all the WSL installs to be in sync with each other so when I work on one I don't have to go over to the rest and make all the same changes. Installing in another folder would be a possible solution for me however if there was a way to do it.
@DDoSolitary My current solution is actually using a VPS but I wanted to try WSL to get over a few development hurdles and streamline my dev process. I may try your project and see if I can get it to work for my purposes.

@Plinpos Then why not install the filesystem to a USB stick :)

@DDoSolitary I could use your project to do that or is that possible out of the box?

@Plinpod Microsoft doesn't provide that feature out of the box, but both my project and @Biswa's can work on USB sticks.

@DDoSolitary Is it possible to hook a function in wslapi.dll?

@DDoSolitary Is it possible to hook a function call in wslapi.dll and call exported function in that same DLL simultaneously?

To move my wsl location I followed this link: https://docs.microsoft.com/en-us/windows/wsl/install-on-server
But instead of choosing a location on system drive (C:) I used a VHDX mounted to %LocalAppData%\lxss and installed Ubuntu 18.04 distribution to %LocalAppData%\lxss\Ubuntu-18.04. Installing directly to lxss folder doesn't seem to work.
I used the official Ubuntu 18.04 distribution from Microsoft.

@gj86 Why mount your VHDX to your user's app data folder? I don't see any benefit to mounting a VHDX to %LocalAppData%\lxss\ - this was where we put the distro when WSL was in beta - it's no longer used for store apps.
Also, distros are provided by distro owners, not Microsoft - we just deliver the bits - we don't distribute the distros.
Also note that if you choose to extract and install your distro as per the server instructions, you forego any servicing and several of the benefits of the Microsoft Store infrastructure. And when we do eventually ship a supported way to move your distros, we won't be able to move and manage your manually extracted distros.
If that works for you, then go ahead, but do be aware of the above when considering manually extracting distros.

I keep my install within the %userprofilepath%/Downloads/rootfs (I run ubuntu 18.04 and our corporation/education doesn't allow the ms-store or onedrive apps (actuallt removes them before the user gets the desktop - http://www.tinyurl.com/donofrioworkdesk) anyways I figure the wsl is per user based or?

@bitcrazed Actually there is one benefit that I needed, was to move the rootfs location from system drive to a much larger drive. I need the space as my system drive is ~120GB.
About the distribution what I meant was I downloaded official Ubuntu 18.04 package linked in the tutorial from Microsoft servers. Which kind of implies you are distributing them (Also distros are available from Microsoft Store.).
However, the point of my post was if anyone looking to move the WSL file location there is possibility, unofficial albeit. Which also implies foregoing any official support.
Thank you for the amazing work on WSL. Which makes it a viable development environment and not just for scripting with Bash.

@lewisdonofrio NICE :)
Yes, WSL distros are installed kinda-per-user. In fact, the APPX itself is downloaded once per machine and unpacked in a fodler under c:\program files\.... But when run, the app runs using per-user data folders where, in WSL's case, your distros are extracted.
This way, multiple users can have their own private instance-data, but share the same (largely) immutable exe package. This works particularly well for large apps with small per-user data, but less well for small apps with large per-user data … like WSL.

@bitcrazed I used to use ubuntu on three desktop's and one hid using synergy but these days ther is no "VMWare Airwatch" client for linux as of yet.  So I got Information Assurance to sign off on this WSL goodness and use W10 as a 15gb bootloader to usermode ubuntu xfce4 gui goodness.....
--Favor can you folks work on your own X11 for W10 so we get Directx accelerated video within DE as well :)

I found the solution to opening Question.
It's a tool called LxRunOffline (https://github.com/DDoSolitary/LxRunOffline)
You can move WSL lxx installation directory C: to another drive(needs to be still NTFS).
(On different drives you have copy so you need to remove old files manually).
Create and restore backups from/to tar file.
Register exiting directories so can use this with different users and many more.
Short all the stuff Microsoft should have implemented in his LxRun tool from the beginning.
This works for me and still learn something new in the source.

@WolfFree  Before complaining about Microsoft implementations, you should of done a little more investigation. While we'd love for Store installed distros to be moved and still waiting for that reality, we do have the ability to install to other drives thanks to Microsoft: https://github.com/Microsoft/WSL-distrolauncher. This method is the official supported method of installing distro's without going through the Store.

Short all the stuff Microsoft should have implemented in his LxRun tool from the beginning.

I suppose it is possible that the devs at MSFT are simultaneously (a) capable of implementing an entire Linux syscall emulation layer while (b) are oblivious to the fact you can install WSL on another drive with a static tar and a tiny powershell script (or equivalently any of many LxRun******* related projects).
But... you might want to consider the likelihood of that being the case. And in the off chance it isn't the case that the MSFT devs are oblivious, you might want to reconsider the veracity any conclusions drawn from false assumptions. Please use their online communities to report any problems you may have with their product.

@therealkenc
Sorry it was only just a personal comment. I just wanted to show how much I like the LxRunOffline tool I found. Like in opening post I had my frustration with the installation in %userprofile%\appdata\local\lxss (about 2 years ago). I couldn't use junctions. I searched and searched and didn't found any solution to change the path. And the comment was for what time. Now with this tool I can resuse my old lxss installations.
@DarthSpock your right I didn't make much research recently, I found this tool and wanted to share this information. But thanks link the official way.
Ok maybe comment is a little misleading, but would it have been so hard to have something like lxrun /install /dir  in the beginning. I know we have now many other methods including store and lxrun isn't the official way anymore. So sorry I didn't wanted to offend anyone.

Moving WSL distribution is somehow documented in Windows 10 insider build 18305. Use wsl.exe --export export installed distribution. Then use wsl.exe --import with diffenrent folder path to install it in another location.

@Biswa96 I can confirm that this works in the latest 1903 update (build 18362.175).
Thanks for the pointers

@transcriptomics It was available since the beginning of WSL, in 2016. Just it was not documented.
There should be an API in wslapi.dll which will be very useful cc. @Benhillis

if you export then import, how do you get the binary shortcut (ie ubuntu.exe) back, and how do you get it to default to your user account instead of root? :-D

@ericblade Hmm if you had the binary you could run:
DISTRO_BIN.exe config --default-user NEW_USER

But if the binary isn't installed properly after the restore that makes things a bit more complicated...

But if the binary isn't installed properly after the restore that makes things a bit more complicated...

It isn't. This is #3974 (message) and currently in state chirping cricket. Work-around for now is to set the default UID in the registry by whatever means of choice.

That works great, thanks again, therealkenc.

Simplest way i found to have the wsl on another partition:
Create a dynamic vhd and attach it to "C:\Users\USER\AppData\Local\lxss" and now u can install wsl as u normally would or copy your old wsl inside the vhd ... BUT don't forget to mount your vhd

Another way is by using powershell u can manually install the wsl distribution:
Example for installing Ubuntu 16.04:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux New-Item D:\Ubuntu -ItemType Directory Set-Location D:\Ubuntu Invoke-WebRequest -Uri https://aka.ms/wsl-ubuntu-1604 -OutFile Ubuntu.appx -UseBasicParsing Rename-Item .\Ubuntu.appx Ubuntu.zip Expand-Archive .\Ubuntu.zip -Verbose cmd ubuntu1804.exe
FIRST , you create the folder where we want to install the wsl distribution and cd into it
THEN , you download the wsl distribution that u want from the Power Shell using
Invoke-WebRequest  -Uri <LINK> -OutFile <distribution.appx -UseBasicParsing
AFTER the download is finished , you rename the file extension from APPX to ZIP and extract it
INSIDE the extracted folder you will have a executable file with the name of the distribution (eg ubuntu1804.exe)
Run the executable file and the installation process will begin

@cbits06 Powershell method works with wsl 2! Thanks!

@cbits06 Thanks you for the Powershell method. It's working perfectly here with WSL 2.
In my case, the appx package download failed (due my shitty Wi-Fi I guess), solution was manually download it and paste it to E:\Ubuntu.

https://github.com/microsoft/WSL/issues/5044 was closed as a dupe but I'm reposting some of that info because I think there is a bit of a unique ask in that issue.
tldr: the unique ask is to respect Windows 10 storage settings Change Where New Content is Saved and New Apps will Save to.
Is your feature request related to a problem? Please describe.
My C drive is near capacity.

When using WSL + Ubuntu, I ran Add-AppxPackage from my storage drive (D:).

I also previously configured my Windows 10 Storage settings to "Change Where New Content is Saved" including "New Apps will Save to" my storage drive, but I notice the files are put on C: anyway. I would argue this is a bug, but Stack Exchange states it's simply not supported.

Describe the solution you'd like

If I run Add-AppxPackage on a remote drive, the subsystem files are stored on that drive.
From inside subsystem, if I install a package it can be saved to a folder I chose, potentially on another drive.
The two above can be implemented separately. For implementation on WSL side, I think it's easier to continue WSL installation on my main drive, but when I sudo apt-get install unzip, for example, that stuff can be put on my storage drive.

Another way is by using powershell u can manually install the wsl distribution:
Example for installing Ubuntu 16.04:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
New-Item D:\Ubuntu -ItemType Directory
Set-Location D:\Ubuntu
Invoke-WebRequest -Uri https://aka.ms/wsl-ubuntu-1604 -OutFile Ubuntu.appx -UseBasicParsing
Rename-Item .\Ubuntu.appx Ubuntu.zip
Expand-Archive .\Ubuntu.zip -Verbose
cmd
ubuntu1604.exe
FIRST , you create the folder where we want to install the wsl distribution and cd into it
THEN , you download the wsl distribution that u want from the Power Shell using
Invoke-WebRequest -Uri <LINK> -OutFile <distribution.appx -UseBasicParsing
AFTER the download is finished , you rename the file extension from APPX to ZIP and extract it
INSIDE the extracted folder you will have a executable file with the name of the distribution (eg ubuntu1804.exe)
Run the executable file and the installation process will begin

2004 version link
https://aka.ms/wslubuntu2004

Make sure that you're checking out the directory structure as well once downloading the distro with the above method. It appears that the directory structure may have changed, it definitely did for Kali.
Note: I used the wsl-kali-new distro as it was the latest WSL version, but wsl-kali worked as well and utilized a more simplified directory structure.
For example I went to install Kali, using the above method, created a D:\Kali directory:
Invoke-WebRequest -Uri https://aka.ms/wsl-kali-new -OutFile Kali.appx -UseBasicPasring
Rename-Item .\Kali.appx Kali.zip
Expand-Archive .\Kali.zip -Verbose
Open the directory or use the ls command and you will see a few different .appx files:
DistroLauncher-Appx_<IP_ADDRESS>_scale-100.appx
DistroLauncher-Appx_<IP_ADDRESS>_scale-125.appx
There is one that contains the main Kali.exe file:
DistroLauncher-Appx_<IP_ADDRESS>_64x.appx
Rename-Item .\DistroLauncher-Appx_<IP_ADDRESS>_64x.appx DistroLauncher_<IP_ADDRESS>_64x.zip
Expand-Archive .\DistroLauncher_<IP_ADDRESS>_64x.zip -Verbose
cd into this new folder, and install the distro:
.\kali.exe
This installed Kali, prompted me to enter my UNIX username and password, and successfully mounted Kali to my D:\...
username@computer-name:/mnt/d/Kali/Kali/DistroLauncher_<IP_ADDRESS>_x64$
bash works as well from PowerShell/cmd.
sudo update && upgrade worked, bundled software worked, and everything is in the root directory of the distro.
Now that I have it working, I'll probably uninstall and see if I can't simplify the directory structure a little more. It appears that multiple versions of the DistroLauncher are present to launch varying sized bash windows.

使用 LxRunOffline 可以简单的解决这个问题啊
Using LxRunOffline can easily solve this problem.

我一直在使用 LxRunOffline 管理wsl，目前来看，使用 LxRunOffline 任然是解决这一问题的最好的方法
用 wsl --export 和 wsl --import 这两个命令可以对 WSL 进行打包再自定义目录安装，就相当于转移。我以为这已经是相当完美的解决方案了.直到我发现 LxRunOffline，它可以安装任意发行版到任意目录、转移已安装的 WSL 目录、备份 WSL、设置默认用户和修改环境变量等操作，相反 wsl、wslconfig 这些原生命令确实有点不足

Still no updates on this one after 7 years?!

This issue was opened the same day Harambe died. This day, Roe has already been overturned and we are still trying to move our WSL's from C: to D:

Can simply move installed distro to other location
stop wsl first: wsl --shutdown
Path to distro stored in registry: "Computer\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss{some guid}\BasePath"
move distro to another location and update path in registry.

Can simply move installed distro to other location stop wsl first: wsl --shutdown Path to distro stored in registry: "Computer\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss{some guid}\BasePath" move distro to another location and update path in registry.

'simply', may as well just install linux as the main OS at this point

Can simply move installed distro to other location stop wsl first: wsl --shutdown Path to distro stored in registry: "Computer\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss{some guid}\BasePath" move distro to another location and update path in registry.

'simply', may as well just install linux as the main OS at this point

LMAO

You can now manage distribution locations through a new command line option:
--manage <Distro> <Options...>
        Changes distro specific options.

        Options:
            --move <Location>
                Move the distribution to a new location.

            --set-sparse, -s <true|false>
                Set the vhdx of distro to be sparse, allowing disk space to be automatically reclaimed.

Usage Example:
PS C:\Users\thadg> wsl --manage ubuntu --move F:\wsl_ubuntu
The operation could not be completed because the vhdx is currently in use. To force WSL to stop use: wsl.exe --shutdown
Error code: Wsl/Service/MoveDistro/WSL_E_DISTRO_NOT_STOPPED
PS C:\Users\thadg>

You can now manage distribution locations through a new command line option:

Amazing! Great addition to WSL!

Can simply move installed distro to other location stop wsl first: wsl --shutdown Path to distro stored in registry: "Computer\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss{some guid}\BasePath" move distro to another location and update path in registry.

Can simply move installed distro to other location stop wsl first: wsl --shutdown Path to distro stored in registry: "Computer\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss{some guid}\BasePath" move distro to another location and update path in registry.

'simply', may as well just install linux as the main OS at this point

If you are using WSL and struggle and complain to edit registry, then literally what are you even doing?


new currency error save & time_zone error on booking

Q
A

Bug report?
[ ]

Feature request?
[ ]

Support request?
[x ]

Hello how are you? I'm having two problems, one with the currency exchange and the other with the time_zone, the
First problem was that I created a new currency adapter although it worked and it shows me the prices in ARS (Argentine pesos) when the reservation is saved it saves me a totally different value, and the second problem is with the reservation too, both users (the which reservation and the one that publishes) are in the same time_zone (America / Argentina / Mendoza) but at the time of confirming the reservation it shows me 3 more hours on the start date, there is some recommendation of how the correct step by step would be to make run this ??
The 3 hours difference corresponds to the difference between UTC and America / Argentina / Mendoza
I hope you understand the problem greetings!

Hi and Happy new year @pablovilla4 !
Concerning your first problem you need to change the default currency in which prices will be stored : src/Cocorico/CoreBundle/Resources/config/parameters.yml:26
Concerning the second one you need to define the users default time zone  cocorico.time_zone  parameter here : src/Cocorico/CoreBundle/Resources/config/parameters.yml:67
You also need to set the default PHP timezone to  UTC as described in the doc :  doc/installation.md:67
Hope it helps!

Thanks I could make everything work


xs breakpoint doesn't works with mt

Describe the bug
When I try to add an array for marginTop (space) the smaller breakpoint doesn't work (mobile)
To Reproduce
<StyledDiv mt={['100px', '200px']}/>

Could you please provide a link to a codesandbox or other reproduction of the issue?


Feature req: Dynamically set state

Thank you so much for a great mocking tool - I love how easy it is to use!  One thing that is a causing me some problems is going to a specific state with a single req
Scenario:
StateHappy: returns 200
StateBad: returns 404
StateException: returns 500
...
[implement n states]
Some states (non-sequential / dependent on each other) check behavior around StateHappy, some around various errors, etc.
Current ways to have a test hit a specific endpoint:

Use a unique ID in the query to determine which scenario catches things.  Downside: Things get tangled when using more than one mock in a sequence (with the same body passed between them), messy to keep track of which IDs do what
For each scenario have one request that sets newScenarioState to 'go to it'.  Downside: Doubles the number of mocks needed / tracked - for each mock you have to have a second stub to reach it
Call the same endpoint multiple times, each time 'moving to the next state' until you reach the expected state.  Downside: super messy, have to remember how many times to call things to get to a specific state

Ideal Outcome
{
  "scenarioName": "Some Scenario",
  "request": {
    "method": "GET",
    "urlPattern": "/state_change/.*"
  },
  "response": {
    "status": 200,
    "body": "State changed to {{request.path.[1]}",
    "transformers": ["response-template"]
  },
  "newScenarioState": {
     "scenarioName": "Some Scenario"
     "state": "{{request.path.[1]}",
     "transformers": ["response-template"]
   }
}

Extending the response-template option to newScenarioState to allow dynamically setting the new state for a given scenario.  Then a user / test can call this endpoint to set states, then that endpoint can be checked normally and will respond based on their state

Hello,
There is any update or workaround on this feature? Can't figure out an way of doing a chain of requests/states with the last one knows the response of the first.
I think it's similar with the issue #1027.

I was thinking with Dynamically state to allow users to set a specific request body field or part of the url to keep track of the state.
for example http://api/jobs/4312/status Created
for example http://api/jobs/4312/status Pending
for example http://api/jobs/4312/status Completed
for example http://api/jobs/9876/status Created
for example http://api/jobs/9876/status Pending
for example http://api/jobs/9876/status Completed
then in the mapping we can specify the order of states and also a unique key, then the code will figure out what state to return based on the unique id. This means that multiple request in different order for 9876, 4312 or any unique id can be sent to the server.
The only worry is how many can you keep in memory but can be limited by a config.

It will be nice imrovement. Especially with ttl when we can clear sleeping scenarios in given time. Alsow is should be cleared after the completing of its life cycle.
End user will take all responsibility of memory restrictions with ttl mechanics.

I've been thinking about this on and off, and I agree it would be very useful in some circumstances.
However, I think there are a number of tricky design choices to be made, including:
How do we express the logic for retrieving/transforming/storing state?
I've actually spiked this in the past using templates and it was pretty ugly, so I'm not hugely in favour of doing this.
Alternative options might be a hook that runs Javascript to push/pull things from storage, or some kind of restricted expression language.
How far do we go?
We could just say there's a simple key/value store and it's up to you to munge things in and out of this.
OTOH we could go further and have primitives for lists, stacks, nested maps etc.
I also tried this in my template-based spike, and felt I'd gone too far with several of the above primitives. So perhaps simple k/v would be best.
How do we ensure memory and storage aren't exhausted?

Wiremock is intended for test cases. Below are my suggestions.
How do we express the logic for retrieving/transforming/storing state?
I trust you as a maintainer in this question. If templating is ugly and hard to support then some kind of EL will be suitable solution. All we need is to associate the steps with some attribute or multiple attributes. It can be any json object (number, string, etc.)
Memory/storage
We don't keep that data for a long. Test infrastructure usually isn't high loaded.
QA engineers almost always do the same things - the checking  of one or another specific process.
So there is no problem with memory in most cases.
We can set default ttl for 1 minute for each scenario step if not manually specified.
Of course, in cases of stress testing mem/storage can be overflowed. But this kind of testing needs to be properly prepared, especially by the hardware.
Every application can be broken due to bad maintenance. What happen's if someone will generate different stubs inside infite loop?
Kind of storage
Sure, k/v is simple and does not require complex approaches.

@lfalcantar for the scenario you provided,
I guess we can achieve via a workaround using transformer and caching
`public class DynamicResponseTransformer extends ResponseTemplateTransformer {
Cache<String, Integer> responseCache = Caffeine.newBuilder()
.expireAfterWrite(1, TimeUnit.HOURS)
.build();
public DynamicResponseTransformer() {
    super(true);
}

@Override
public ResponseDefinition transform(Request request, ResponseDefinition responseDefinition, FileSource fileSource, Parameters parameters) {
    // Extract the job ID from the request path
    String path = request.getUrl();
    String[] pathSegments = path.split("/");
    String jobId = pathSegments[pathSegments.length - 2];

    // Get the current count for this job ID
    Integer count = responseCache.get(jobId, key -> 0);

    // Update the count for this job ID
    responseCache.put(jobId, count + 1);

    // Build the response based on the job ID and count
    ResponseDefinitionBuilder responseBuilder = ResponseDefinitionBuilder.like(responseDefinition);

    switch (count) {
        case 0:
            // Return "Created" for the first call for each job ID
            responseBuilder.withBody("Created");
            break;
        case 1:
            // Return "applied" for the second call for each job ID
            responseBuilder.withBody("applied");
            break;
        case 2:
            // Return "done" for the third call for each job ID
            responseBuilder.withBody("done");
            break;
        default:
            // Return an error message for any subsequent calls for each job ID
            responseBuilder.withStatus(500)
                    .withBody("Maximum number of calls exceeded for job ID " + jobId);
    }

    return responseBuilder.build();
}

}`

Using transformers & Cache
public class DynamicResponseTransformer extends ResponseTemplateTransformer {
    Cache<String, Integer> responseCache = Caffeine.newBuilder()
            .expireAfterWrite(1, TimeUnit.HOURS)
            .build();

    }

    @Override
    public ResponseDefinition transform(Request request, ResponseDefinition responseDefinition, FileSource fileSource, Parameters parameters) {
        // Extract the job ID from the request path
        String path = request.getUrl();
        String[] pathSegments = path.split("/");
        String jobId = pathSegments[pathSegments.length - 2];

        // Get the current count for this job ID
        Integer count = responseCache.get(jobId, key -> 0);

        // Update the count for this job ID
        responseCache.put(jobId, count + 1);

        // Build the response based on the job ID and count
        ResponseDefinitionBuilder responseBuilder = ResponseDefinitionBuilder.like(responseDefinition);

        switch (count) {
            case 0:
                // Return "Created" for the first call for each job ID
                responseBuilder.withBody("Created");
                break;
            case 1:
                // Return "applied" for the second call for each job ID
                responseBuilder.withBody("applied");
                break;
            case 2:
                // Return "done" for the third call for each job ID
                responseBuilder.withBody("done");
                break;
            default:
                // Return an error message for any subsequent calls for each job ID
                responseBuilder.withStatus(500)
                        .withBody("Maximum number of calls exceeded for job ID " + jobId);
        }

        return responseBuilder.build();
    }
}

Hello mates. You can close this issue due to https://github.com/wiremock/wiremock-extension-state is able to simulate complex scenarios with states.

I am closing it based on the feedback. Given the importance of the feature, I retrospectively added it to the project roadmap, and I will wok with @dirkbolte @ioanngolovko and other contributors to properly document and announce it. Thanks to all contributors!


fixes #4968 and only retrieves the latest version of packages from chocolatey

This should fix retrieving the wrong package version when expecting the latest and should also significantly improve package query performance. It also supports some feeds that do not implement the all versions capability.
We now only query the chocolatey feed for the latest version and use that as the candidate version unless an explicit version is requested and then that is the candidate.
This does prevent us from validating valid versions and allows a resource with a bogus version. In these cases we will bubble up the error from choco.exe.

cc @lamont-granquist @ferventcoder

LGTM 👍

👍

👍


Posibility of new world types and CustomCubic and FlatCubic preset sharing

I was trying to port one vanilla custom world preset and i got a high and smooth mountains world, would be great to have a world where you con go to very high through big island and mountains, and have great caves far down? I am thinking about that world types!
And Flat and Customized Cube world shareable presets, of course.

Other world types will be something other mods can do, CubicChunks will just port vanilla functionality to cubic chunks. Vanilla presets will be ported.
Parts of the code to directly convert vanilla configurations to cubic chunks CustomCubic configuration, it's just not used, there is no GUI for it. And I don't think it works correctly now (I may have missed a factor of 2 in a few places).
Converting vanilla advanced config to cubic chunks advanced config based o current possibly slightly wrong code (starting with cubic chunks defaults):
lowNoiseFactor = 512 / lowerLimitScale;
highNoiseFactor = 512 / upperLimitScale;
depthNoiseFrequencyX = depthNoiseScaleX / 32768
depthNoiseFrequencyZ = depthNoiseScaleZ / 32768
(note: depthNoiseScaleExponent is ignored by vanilla)
selectorNoiseFrequencyX = (coordinateScale / mainNoiseScaleX) / 128
selectorNoiseFrequencyY = (heightScale / mainNoiseScaleY) / 128
selectorNoiseFrequencyZ = (coordinateScale / mainNoiseScaleZ) / 128
lowNoiseFrequencyX = coordinateScale / 32768
lowNoiseFrequencyY = heightScale / 32768
lowNoiseFrequencyZ = coordinateScale / 32768
highNoiseFrequencyX = coordinateScale / 32768
highNoiseFrequencyY = heightScale / 32768
highNoiseFrequencyZ = coordinateScale / 32768
Currently these aren't converted (and I don't remember why, I probably just forgot, now that I remember about it I will probably go back there and fix it): baseSize, stretchY, biomeDepthWeight, biomeDepthOffSet, biomeScaleWeight, biomeScaleOffset, seaLevel. All of them will probably in some strange convoluted way map to Height Factor and Height Offset.
Note1: It won't generate exactly the same terrain because I use different noise generator
Note2: It won't generate vertical far lands because this noise generator has this issue fixed
Note3: The terrain may seem to not have some shape features vanilla has because this noise generator isn't broken the way vanilla noise generator is
Non-advanced options are currently mostly unimplemented so using most of them won't change anything.

I was talking about default presets like in vanilla

as i said, vanilla presets will be ported, it's just low priority right now.

Preset sharing is done in https://github.com/OpenCubicChunks/CubicChunks/commit/f6b80cdb7cc123d8520c727735acd7a211ef85a4, issue will be closed once some derfault presets are added.


Access denied when downloading synology package file

I got 403 error when downloading synology package files. I would be grateful if anyone could fix file's permission issue and upgrade to latest version. Thank you!

https://perkeep-review.googlesource.com/c/perkeep/+/17746 now merged.

@mpl download and install successfully, thank you!


Fix typos in README: !dbg => dbg!

Thanks for the pull request, and welcome! The Rust team is excited to review your changes, and you should hear from @brotzeit (or someone else) soon.
Please see the contribution instructions for more information.


Revise trestle project structure & documentation to clarify public vs private signatures.

Issue description / feature objectives
Currently trestle has most methods scoped publicly. This creates uncertainty around which methods are acceptable to change w/o breaking backwards compatibility.
Identify all critical public api signatures

OscalBaseModel
load distributed
repository api
CLI signatures
certain drawio and markdown apis and IO
load_distributed
trestle.oscal.*

Document these then:

Refactor exisiting code to 'hide' imports as appropriate from public consumptions.

@butler54 This could help create some boundaries for this proposal - https://github.com/oscal-compass/community/pull/68. Should we close or keep this open?


Deploy scripting for QA environment

Acceptance: Jon can deploy to the staging "nectar" box.

Closed by PR #144 thanks to pairing with Conor.


Fix nil pointer error when access sticky cache

This is to fix https://github.com/uber-go/cadence-client/issues/526.

Coverage increased (+0.04%) to 67.861% when pulling 408aed070fdf31d961bd063e7497d20e75cecfbd on yiminc:fix_nil_pointer into 50dd3870a633189073dfda6cf38b03d7c30ba50f on uber-go:master.


Add language toggle into the tutorial, now support English and Chinese

Thank you very much PeachScript! This is amazing!
Before it goes live though I need to compile it. I just tried to but it didn't immediately work. I'll play with it a bit today.

 I like this framework and use it to build the official website for our company, it's nice! So I want to translate the tutorial and let more people knows it :P

This is a fantastic PR :)
I've now compiled your changes and deployed it to https://www.synthjs.com where it's now live, thanks again!


Proof of progress reviewer

What is the problem you are seeing? Please describe.
Measuring active users is proving difficult. PBC needs more time and resources to tackle this challenge. Meanwhile we want to find some signal that indicates an app quality is improving.
How is this problem misaligned with goals of app mining?
In theory, each reviewer should measure a spectrum of quality or success, not binary attributes. App Mining is stronger if we can measure true quality improvements.
What is the explicit recommendation you’re looking to propose?

Proof of progress reviewer
App builders would report release notes into some central location each month.
The reviewer will review each set of notes, and attempt to verify the new features, fixes, or improvements. The reviewer will qualitatively judge the value these improvements to the app use case and users. If there are no release notes, or the notes are false, the app would receive a -1 score. The apps that have made confirmed progress will get a score and corresponding z-score rank (the exact criteria or range of the score is TBD).

Describe your long term considerations in proposing this change. Please include the ways you can predict this recommendation could go wrong and possible ways mitigate.

Apps could dispute the findings of the reviewer. Although, I would claim it is a net positive if apps need to state how they are improving and those improvements are meaningful, evident, and easily realized in the app by a user. In other words, not all app improvements are equal and we should recognize that.
The reviewer could get swamped by the amount of labor. Yes, this reviewer would need to hire interns or something to help with testing. And maybe only test the first, or maybe first-third, claim made by each app.

Additional context

NIL could be this reviewer they are checking each app monthly anyhow.
This idea was inspired by @friedger thanks!

cc @larrysalibra
Just an idea, looking for feedback.

Related for those curious: https://github.com/blockstack/app-mining/issues/132

The updates should be stored on a decentralized user-owned storage ;-)
On Fri, 2 Aug 2019, 20:05 Mitchell Cuevas<EMAIL_ADDRESS>wrote:

Related for those curious: #132
https://github.com/blockstack/app-mining/issues/132
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/blockstack/app-mining/issues/138?email_source=notifications&email_token=AALBYWJSEEZEL7273A5UFCLQCRZPXA5CNFSM4II732V2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD3OOYSY#issuecomment-517794891,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AALBYWOLPGGGD7IVGOSGLHDQCRZPXANCNFSM4II732VQ
.

This could be a dimension in #147

Starting a new thread on a similar idea: https://github.com/blockstack/app-mining/issues/174


Creating a github account and open 3 branches

Completed by Viranga

Send the invitation to Gajesh and Karvindperpal and connected to github account


Add data stream support

depends on https://github.com/livekit/rust-sdks/pull/533
writing stream:
thoughts about writing: for STT we need a way to optionally also override the chunk index with this API
const greeting = 'Hi this is just a text sample';
  const streamWriter = await room.localParticipant?.streamText({
    destinationIdentities: [recipient.identity],
  });

  for (const c of greeting) {
    await streamWriter.write([c]);
// for overriding the chunk Id, you'd simply have a second value in the array like
//     await streamWriter.write([c, myChunkIndex]);

  }

  await streamWriter?.close();

reading stream:
room.on(RoomEvent.TextStreamReceived, async (reader: TextStreamReader) =>
    for await (const { current } of reader) {
      console.log(current);
    }
    // whole stream content
    console.log(await reader.readAll());
  });

Can you add docstrings to all of the exported classes?

added some, the annoying thing however is that docstrings don't show up on class instances. And we're only returning class instances to users, so they won't really profit from them.

There's also at least one error handling TODO left in here still

errors are currently being logged to console, the TODO is in there for later improvements around re-requesting missing chunks or similar repair mechanisms. Deleted the TODOs


Move "Safe Layout" article to fuse-docs, fix broken link, update old …

Seems that our docs pipeline does not support linking to markdown files inside fuselibs, just including them inline.
This moves the "Safe Layout" article to fuse-docs, changes doc comments that "include" that article so that they link to it instead, and fixes a broken link.
This PR contains:

[ ] Changelog
[x] Documentation
[ ] Tests

Note that this is not critical for release, as it's only docs changes.


New config option: "always ask remote when publishing branch"

When you're going to push a new branch, VSCode shows this icon:
If you have more than one remote, it will ask you where to push it. If you just have one remote, it will publish the branch to that one.
I contribute to a FLOSS community where sometimes I have push access, but I almost never want to use it when publishing. Instead, I push to my team's fork almost always and open a PR.
Now, this is how my dev environment looks like:

See? Lots of repos. I can't remember which one of them has configured my team's remote and which one just has upstream.
So, my suggestion is that we have a new setting labeled "Always ask remote when publishing a new branch". This should make me aware that the remote isn't configured and let me configure it before pushing an undesired branch upstream.

We closed this issue because we don't plan to address it in the foreseeable future. If you disagree and feel that this issue is crucial: we are happy to listen and to reconsider.
If you wonder what we are up to, please see our roadmap and issue reporting guidelines.
Thanks for your understanding, and happy coding!


build fails on RHEL 6

This is on RHEL 6 with current master source (13ee02909f1c6d80448426bf6f85423d8e9ec210):
gcc -DHAVE_CONFIG_H -I.  -DSYSCONFDIR=\"/usr/local/etc\" -DLOCALSTATEDIR=\"/usr/local/var\" -DLIBEXECDIR=\"/usr/local/libexec\" -DNS_CLONE_NEWPID -DNS_CLONE_FS -DNS_CLONE_FILES -DNS_CLONE_NEWNS  -Wall -g -O2 -MT sexec-loop-control.o -MD -MP -MF .deps/sexec-loop-control.Tpo -c -o sexec-loop-control.o `test -f 'loop-control.c' || echo './'`loop-control.c
loop-control.c: In function ‘obtain_loop_dev’:
loop-control.c:55: error: ‘LOOP_CTL_GET_FREE’ undeclared (first use in this function)
loop-control.c:55: error: (Each undeclared identifier is reported only once
loop-control.c:55: error: for each function it appears in.)
make[2]: *** [sexec-loop-control.o] Error 1
make[2]: Leaving directory `/home/dlove/rpmbuild/SOURCES/singularity/src'

That is disconcerting. I'll debug shortly.

RHEL 6 apparently just doesn't have loop-control.

I am quite curious how losetup does it on RHEL 6 and will investigate shortly!
Let me know if you come across anything before I do. Thanks!
Sent from my iPhone

On May 6, 2016, at 7:36 AM, Dave Love<EMAIL_ADDRESS>wrote:
RHEL 6 apparently just doesn't have loop-control.
—
You are receiving this because you commented.
Reply to this email directly or view it on GitHub

I rewrote obtain_loop_dev() such that it works the same as systems seem to work without /dev/loop-control... That is, they use brute force and iterate through a given number of loop devices and checking them. Eww, but it works!


Add input text-type specifier "type"

"type" that specifies if input text-type is (text, password, email) or something else

Thanks for the pull request.
Based on your suggestion, I've included a similar concept to another commit I was working on, so I'll go ahead and close this.


Minor grammar updates

@salmaniqbal not sure if these minor improvements are what you're after....probably not

Every contribution is very welcome! Thanks @edwardmlyte


Implement base class for skill

Needs to be made according to UML specs found in the drive

Closed due to #820


Adding mlflow logging functionality to yolox

Needed integration of yolox to log experiments with mlflow, for that created this pull request that create another option in -l --logger argument to be "mlflow".
works on environment file (.env) in the root folder of the projects.
required additional dependency of mlflow and python-dotenv failing which error is raised if logger is set to mlflow.

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.jgoyalh1 seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.

committed with wrong username, deleting to push in different pull request.