GitHub is fucking broken fucking again



  • Guess what the bug is. Go ahead, guess. You'll love it, it's one of my favorites.

    Give up?

    Here's the email I got back from GitHub's support team:

    @GitHub Support said:

    You're hitting a known bug that popped up in the latest release of GitHub for Windows. We have tracked this issue down, and will be shipping out a fix soon.

    There is a workaround you can use to fix this:

    1) Open CMD and run 'ECHO %HOMEDRIVE%%HOMEPATH'
    2) Open explorer and navigate to %USERPROFILE%
    3) Copy the .gitconfig file in %USERPROFILE% to the location output of step #1

    Once we ship out the update, I'll be sure to email you back so you can remove the .gitconfig from the %HOMEDRIVE%%HOMEPATH% location.

    Let me know if that doesn't work out for you, or if you have any further questions.

    Yes! Like all amateurish moron open source developers, GitHub has no fucking clue about how user folders work in Windows and they've decided to go from the (working, although still wrong) %userprofile% folder to the completely and utterly wrong %homedrive%%homepath% folder! Why did they make this change? WHO FUCKING KNOWS. I guess they were upset that it hadn't caused me any pain in the last couple months, so their sadism was getting out of control.

    Of course, despite being a "known issue" they didn't seem to feel any need to actually post it on the website or tell anybody about it, God forbid. No, we have to send in a support email and wait a day for a response, that is obviously the best way to communicate this problem.

    Oh as an added bonus? %homedrive%%homepath% happens to point to Z:, our old file server we retired about 6 months ago and is set to read-only so people don't use it. Meaning, I can't even use their workaround.

    Fuuuck.


  • BINNED

    Did anyone else guess from the title that this would be another blakeyrant?



  • @blakeyrat said:

    Guess what the bug is. Go ahead, guess. You'll love it, it's one of my favorites.

    Give up?

    Here's the email I got back from GitHub's support team:

    @GitHub Support said:

    You're hitting a known bug that popped up in the latest release of GitHub for Windows. We have tracked this issue down, and will be shipping out a fix soon.

    There is a workaround you can use to fix this:

    1) Open CMD and run 'ECHO %HOMEDRIVE%%HOMEPATH'
    2) Open explorer and navigate to %USERPROFILE%
    3) Copy the .gitconfig file in %USERPROFILE% to the location output of step #1

    Once we ship out the update, I'll be sure to email you back so you can remove the .gitconfig from the %HOMEDRIVE%%HOMEPATH% location.

    Let me know if that doesn't work out for you, or if you have any further questions.

    Yes! Like all amateurish moron open source developers, GitHub has no fucking clue about how user folders work in Windows and they've decided to go from the (working, although still wrong) %userprofile% folder to the completely and utterly wrong %homedrive%%homepath% folder! Why did they make this change? WHO FUCKING KNOWS. I guess they were upset that it hadn't caused me any pain in the last couple months, so their sadism was getting out of control.

    Of course, despite being a "known issue" they didn't seem to feel any need to actually post it on the website or tell anybody about it, God forbid. No, we have to send in a support email and wait a day for a response, that is obviously the best way to communicate this problem.

    Oh as an added bonus? %homedrive%%homepath% happens to point to Z:, our old file server we retired about 6 months ago and is set to read-only so people don't use it. Meaning, I can't even use their workaround.

    Fuuuck.

    Wow. I'm glad I don't use GitHub for Windows, that sounds stupid.

    Now, I am not in anyway trying to defend this, but if you're looking for a workaround for their workaround, maybe this will work. Create a batch file with this content:

    @echo off
    SET HOMEDRIVE= SET HOMEPATH=%USERPROFILE% <path to github for windows here>

    Ideally, this will override the offending variables to point github at the right place. Just run this batch instead of github, and you won't even have to copy stuff around.

    Note: Not tested, no warranty, etc.


  • Considered Harmful

    Your weird setup where all your special folders are scattered all over everywhere seems to have caused you a lot of grief with various programs. Sure, programs should handle this correctly, but after slamming your fingers on this a sixth time, maybe they're not the sadistic ones - maybe you're the masochistic one.

    I've seen it completely bar you from using some programs; programs that apparently most people don't have such horrifying experiences with.



  • @joe.edwards said:

    Your weird setup where all your special folders are scattered all over everywhere seems to have caused you a lot of grief with various programs.

    1. It's not my weird setup, it's the setup at the computers of my various workplaces over the last few years. And it's not weird, we're not doing anything that goes against the design of the system or how it's intended to work.

    2) It wouldn't cause ANY grief if programs were written by dumbshits who don't even fucking know how the operating system they're writing programs for EVEN FUCKING WORKS.

    @joe.edwards said:

    Sure, programs should handle this correctly,

    Congratulations, you said one not-stupid thing.

    @joe.edwards said:

    but after slamming your fingers on this a sixth time, maybe they're not the sadistic ones - maybe you're the masochistic one.

    Are you saying I should only choose to work at a place after I've investigated their network drive setup, and evaluated all software they use and are likely to use? Is that seriously what you're suggesting?

    Of course when I was hired here, I have no idea I'd be put on a project that used GitHub and I'd have had no way of predicting it, so your retarded little solution doesn't even work. Edit: oh and when I was hired here, that network drive wasn't read-only, so that too.

    @joe.edwards said:

    I've seen it completely bar you from using some programs;

    Yes, broken programs written by dumbshits.


  • Considered Harmful

    @blakeyrat said:

    so your retarded little solution doesn't even work.

    Yes, my retarded solution that I came up with. It certainly wasn't whispered in your ear by shoulder aliens.

    @blakeyrat said:

    Yes, broken programs written by dumbshits.

    This apparently includes almost every Java program.



  • @joe.edwards said:

    @blakeyrat said:
    Yes, broken programs written by dumbshits.

    This apparently includes almost every Java program.

    Indeed it does, but that's kind of a different situation since a Java programmer might not even know they're being a dumbshit, the runtime is being a dumbshit on their behalf. I'd actually give a little (tiny bit) more tolerance to Java programs that make this mistake, just because until it hits their bug tracker they might not even have been aware how broken the JRE is.

    Java programs like Aptana that have had it in their bug tracker for many years and still haven't fixed it? They get no mercy.



  • @PedanticCurmudgeon said:

    Did anyone else guess from the title that this would be another blakeyrant?
     

    Yep. The choice of vocabulary just gives him away.

    Blakey, do you have a reference handy of what the Windows convention is for saving data where, and what environment variables one should use? I dug around a bit but couldn't find a solid list...



  • Wow, two curse words in the title. That's how you know the person writing the post is super cool and awesome!



  •  @JBotAlan said:

    @PedanticCurmudgeon said:

    Did anyone else guess from the title that this would be another blakeyrant?
     

    Yep. The choice of vocabulary just gives him away.

    Blakey, do you have a reference handy of what the Windows convention is for saving data where, and what environment variables one should use? I dug around a bit but couldn't find a solid list...

    I'm surprised that Blakey didn't point out that %USERPROFILE% is also wrong.

    Applications are supposed to use %APPDATA% for data that isn't machine specific.  This folder is copied into your roaming profile and has existed since at least Windows XP's launch in 2001.   There is also an area for machine-specific data, but stupidly it has no associated environment variable in XP.  Vista and newer can use the environment variable %LOCALAPPDATA%, while Windows XP has to check if "%USERPROFILE%\Local Settings\Application Data" (the default location) exists.

     



  • @JBotAlan said:

    Blakey, do you have a reference handy of what the Windows convention is for saving data where, and what environment variables one should use? I dug around a bit but couldn't find a solid list...

    That's part of the problem, Microsoft doesn't document it very well. Of course even if they did, nobody would fucking read it.

    The main thing to know is this:

    • There is no Linux-style "home" folder in Windows.
    • There is no requirement that user folders are in the same hierarchy, on the same drive, or even on the same network. (By convention Windows has a "userprofile" folder, but it's not safe to save files in there as it could very well be read-only. AFAICT its only purpose is to define where a Special Folder gets created if it doesn't exist and some program asks for it.)
    • There's no requirement that user folders stay at the same path between logins (especially for networks using roaming profiles.)

    The first thing to note is that you shouldn't be using Environment Variables for this. The only truly correct way to retrieve these paths is by using the API function SHGetFolderPath. Do not cache the results of this function. Call it each time you need a special folder path. Special folders can move, even while a user is logged-on, and your program should correctly handle that condition.

    This is a list of Environment Variables which can be used safely (leaving out the %):

    APPDATA (where to store your application's permanent data that the user shouldn't be able to see, this points to the "roaming" folder so don't put large amounts of data in here if at all possible.)

    LOCALAPPDATA (same as above, but for permanent data that should not roam-- the classic example is a web browser's cache goes here.)

    TEMP/TMP (self-explanatory, remember Temp is per-user in Windows.)

    What's more interesting is the Environment Variables that Windows lacks-- there's none for the Documents folder (the place you store files the user should be able to see and manipulate), none for Downloads, none for Music, Video, or Pictures. So... don't use Environment Variables for this, basically.

    File this entire post under, "I can't believe I had to actually explain this to a forum full of programmers."



  • @powerlord said:

    I'm surprised that Blakey didn't point out that %USERPROFILE% is also wrong.

    @Blakeyrat in the OP you didn't bother to read even though it's posted here twice said:

    the (working, although still wrong) %userprofile% folder



  • Yeah, I'll engage that.

    @blakeyrat said:

    File this entire post under, "I can't believe I had to actually explain this to a forum full of programmers."
     

    Forum full of programmers? Yes. Forum full of Windows programmers? Not necessarily.

     



  • @JBotAlan said:

    Yeah, I'll engage that.

    @blakeyrat said:

    File this entire post under, "I can't believe I had to actually explain this to a forum full of programmers."
     

    Forum full of programmers? Yes. Forum full of Windows programmers? Not necessarily.

    MARK THAT ONE UNDER ENGAGED!!!!



  • I don't use GitHub. I'm not understanding how it gets from "update your name and e-mail settings" to copy the .gitconfig file to %HOMEDRIVE%%HOMEPATH% (I have never seen those env variables until now). Is this the file that contains your name and e-mail settings? I would have assumed anything pertaining to e-mail would be stored on the server side.



  • Personally, I consider both sides WTF-y. Microsoft for making something simple so complex that hardly anyone gets it right (I've seen C:/Program Files on non-English computers, and the amount of junk that accumulates in temp dirs and LocalAppData or whatever it's called is just appalling), and Github for not taking the trouble of reading the manual.



  • @OhNoDevelopment said:

    I'm not understanding how it gets from "update your name and e-mail settings" to copy the .gitconfig file to %HOMEDRIVE%%HOMEPATH%

    You and me both. But literally everything in Git is this convoluted, obscure, and annoying-- trust me. It's by far the worst source control I've ever used.

    @OhNoDevelopment said:

    Is this the file that contains your name and e-mail settings? I would have assumed anything pertaining to e-mail would be stored on the server side.

    No because that would be sane.

    But back up a step. It's a private repository, belonging to my company. There's 5 developers on it. We all have descriptive user names, which consist of our real names. Why the fuck does it even need to send my real name and email address? What's the fucking point? Why is it literally IMPOSSIBLE to check-in code without it?



  • I find it amazing the amount of Windows software programmers that have no idea how Windows actually works. I'm an IT person at a company that employs a handful of programmers and I have programming experience so I have occasionally helped out with some of their projects. Every couple of months I will get asked to help track down why our software has problems with certain computer configurations and after looking at their code it's always because somebody has assumed that a certain path exists on every freaking computer and hard-coded it in. I regularly have to explain to them that this crap is highly variable and their ridiculous, re-invent the wheel, attempt path coding is f'n stupid, especially when their programming environment has built-in functions or APIs to do this.



  • @TGV said:

    Microsoft for making something simple so complex that hardly anyone gets it right

    It's a hell of a lot less complex than most other things in IT. Compare getting familiar with this system compared to, say, trying to determine in your head what a particular CSS rule does without guess-and-check.

    Anyway, how do you find the path to the documents folder in Linux? What if the folder name's localized? What if it's on a network share? What if you want a different quota for documents than you do for videos? It's more complex because it solves more problems.


  • Considered Harmful

    @TGV said:

    I've seen C:/Program Files on non-English computers

    Yeah, they shouldn't be using forward slashes.


  • Considered Harmful

    @blakeyrat said:

    trying to determine in your head what a particular CSS rule does without guess-and-check.

    This is stupidly easy if your markup and selectors are sane.



  • @blakeyrat said:

    Anyway, how do you find the path to the documents folder in Linux? What if the folder name's localized? What if it's on a network share? What if you want a different quota for documents than you do for videos? It's more complex because it solves more problems.
     

    To my knowledge (which I'll freely admit is rather limited) everything in the Linux world is held in one unified home directory. Your videos, documents, etc all go in your home folder. The only real line is between the user's data (in home) and other stuff (outside of home). I don't know offhand what the "correct" way to find the home folder is, but I know a user can use "~" as the path to the home directory (~/somefileblah....).

    What use case do you have for having finer divisions than that? To me, splitting Videos from Music from Pictures from Documents seems like a bit of unnecessary complexity.

     



  • @blakeyrat said:

    Like all amateurish moron open source developers

    Yeah, Linus should've known better when he developed Git for Linux and not for some broken ass OS.

    Right, it's not about Git itself, but the main problem with GitHub is Git, which was made for Linux.

    Anyway, blakeyrat, maybe you would feel more comfortable with, I don't know, SourceSafe? Now that's a road filled with WTF's I'm sure you enjoy.



  • @JBotAlan said:

    To my knowledge (which I'll freely admit is rather limited) everything in the Linux world is held in one unified home directory.

    Well derp, because that's how things were done in 1973 and God-forbid Linux ever change anything ever in history ever! Why it might (shudder) actually advance the art!

    @JBotAlan said:

    What use case do you have for having finer divisions than that?

    I gave three in the post you're replying to. You just ignored them.



  • @ubersoldat said:

    Anyway, blakeyrat, maybe you would feel more comfortable with, I don't know, SourceSafe? Now that's a road filled with WTF's I'm sure you enjoy.

    SourceSafe has been deprecated for, what, 8 years now? Christ. Is everybody on this forum today just popping out of hibernation pods?

    TFS, the replacement for SourceSafe is actually quite nice and has a lot of features you don't see elsewhere. Like being able to actually link the bug report with the source code check-in that fixed it, or being able to add images to check-in comments, and some other nifty stuff.



  • @blakeyrat said:

    @JBotAlan said:
    What use case do you have for having finer divisions than that?

    I gave three in the post you're replying to. You just ignored them.

     

    Upon further investigation, you'd call into getpwuid to get the home directory's path--at this point, localization is not an issue as you just follow the path you are given. The whole enchilada could be on a network share/another partition...that's made transparent to us. To figure out if you have free space in that directory you'd use statvfs(), I believe. As far as different quotas for video/documents, I guess I simply don't understand why anyone would want that.



  • @blakeyrat said:

    @joe.edwards said:
    @blakeyrat said:
    Yes, broken programs written by dumbshits.

    This apparently includes almost every Java program.

    Indeed it does, but that's kind of a different situation since a Java programmer might not even know they're being a dumbshit, the runtime is being a dumbshit on their behalf.

     

     Example: if your username has an exclamation mark. It's perfectly legitimate. Everything else seems to work with it. Except Java. You cannot run ANY java program from a .jar file, because they decided that ! would have a special meaning to the class loader. This bug was filed with Sun in fucking 2003, and they, nor Oracle, have done a fucking thing about it.  And if you write a Java program launched through a jar, you can't fix this- there is no workaround, aside from forcing your users to use usernames without Java's "Special characters". So much for write once run anywhere.

     



  •  @JBotAlan said:

    As far as different quotas for video/documents, I guess I simply don't understand why anyone would want that.

    As a personal user, you probably don't.  In a business environment, restricting the size of a user's video folder so they can't store twenty torrented TV shows on your network that way is probably a good thing.



  • @JBotAlan said:

     I guess I simply don't understand why anyone would want that.

     

     

    YOUDON'TNEEDTHAT(tm)

     



  • If you want specific quotas, you simply set them up either through fstab if you want it on the dir or with with grpquota (think that's the right command, haven't used it in awhile) if you want it at the user level. This is no less/more complex than Windows.



  • @rampaging-poet said:

    As a personal user, you probably don't.  In a business environment, restricting the size of a user's video folder so they can't store twenty torrented TV shows on your network that way is probably a good thing.
     

    Well, for torrenting you'd have a network filter set up, some network monitoring software/utilities to watch the size of your user's folders/disk utilization that would catch weird activity like that, and on top of it, the user's overall quota would cap that. Otherwise, what's to keep Joe User from saving his torrented videos in his Documents folder? I must be missing your point.

    In the two workplaces I've been with and the university setup I've seen, there is no separation between Documents, Video, etc...you get just a "home"-like space. I still don't understand why you would want anything else.

     



  • @JBotAlan said:

    In the two workplaces I've been with and the university setup I've seen, there is no separation between Documents, Video, etc...you get just a "home"-like space. I still don't understand why you would want anything else.

    You don't have to understand it. Suffice it to say organizations do want that, and Microsoft set up their permissions system to support it.



  • @blakeyrat said:

    Suffice it to say organizations do want that

    That was the part I was questioning. People actually set it up this way? Presumably you've seen this--what does it look like?



  • In this topic: BlakeyRant misconfigures his system, asks for support, gets back a "we know and we're working on it but if you're good with batch, here's a fix" response, then complains on a forum while using bad words in the title not once, but twice, and not even in the correct grammatical position.

    A few posts later, someone posts a summary of the topic



  • @Ben L. said:

    In this topic: BlakeyRant misconfigures his system,

    When did that happen?



  • @Ben L. said:

    In this topic: BlakeyRant misconfigures his system, asks for support, gets back a "we know and we're working on it but if you're good with batch, here's a fix" response, then complains on a forum while using bad words in the title not once, but twice, and not even in the correct grammatical position.

    A few posts later, someone posts a summary of the topic

    Don't forget the part that he runs a non-standard setup as well which has a Environment variable available for userdata set to read-only.. and is confused when it asks you to put something in that path.



  • For once I have to agree with Blakey. His system configuration might be unusual, but it's not broken. Windows has API calls for retrieving the paths to store different kinds of data in for a reason, and developers should learn to use those. Empirical evidence is not a substitute for documentation, especially if your sample consists of three of your friends' home computers.



  • @blakeyrat said:

    The first thing to note is that you shouldn't be using Environment Variables for this. The only truly correct way to retrieve these paths is by using the API function SHGetFolderPath. Do not cache the results of this function. Call it each time you need a special folder path. Special folders can move, even while a user is logged-on, and your program should correctly handle that condition.

    The SHGetFolderPath API (now deprecated in favor of SHGetKnownFolderPath, available only post-Vista) is actually a pretty good example of a Windows design antipattern I personally find quite irritating: the special-purpose API that exists only to work around the lack of a general-purpose feature that would actually have been less work to implement.

    If a Unix sysadmin wants the kind of flexibility offered by the Known Folders in Windows, all that's required is the creation of a bunch of symlinks in users' home folders. Windows 95 (where the Win32 API set, including SHGetFolderPath, first appeared) was designed around the FAT16 filesystem inherited from DOS, which doesn't have symlinks. But it did have Explorer shortcuts. I would have thought extending the DOS filesystem code to allow Explorer shortcuts to work as filesystem symlinks would have been pretty easy, and would have had a whole bunch of uses beyond making SHGetFolderPath redundant.

    NTFS came with a whole new way of doing symlinks (Reparse Points) for which there has never been a native UI; as a result, they're scarcely used.

    Unix existed long before DOS, and regardless of whether or not you think it still deserves to exist, it functioned as proof-of-concept for a stack of useful ideas that should have been no-brainer inclusions in any subsequent system. I've long been disappointed at the half-arsed way MS went about splicing them into Windows.



  • @gu3st said:

    Don't forget the part that he runs a non-standard setup as well which has a Environment variable available for userdata set to read-only..

    It's a standard setup, the Environment variable isn't read-only the path it points to is.

    @gu3st said:

    and is confused when it asks you to put something in that path.

    I'm not confused; it's just impossible for me to put something in that path as it's read-only.



  • @blakeyrat said:

    @JBotAlan said:
    In the two workplaces I've been with and the university setup I've seen, there is no separation between Documents, Video, etc...you get just a "home"-like space. I still don't understand why you would want anything else.

    You don't have to understand it. Suffice it to say organizations do want that, and Microsoft set up their permissions system to support it.

    What's stopping anybody from storing videos outside the 'Videos' library or folder? I really don't get this restriction.



  • @flabdablet said:

    The SHGetFolderPath API (now deprecated in favor of SHGetKnownFolderPath, available only post-Vista) is actually a pretty good example of a Windows design antipattern I personally find quite irritating: the special-purpose API that exists only to work around the lack of a general-purpose feature that would actually have been less work to implement.

    Regardless of whether or not that API is the pinnacle of design elegance, it's the designated official way to get these paths. If you go like "I don't like this API, so screw it, I'm doing things my own way", your program won't play well with the operating system and will end up looking bad and broken. When Microsoft issues an official specification consisting of fixed paths and symlinks or whatever to manage the actual location, then you can use fixed paths in your programs.

    @flabdablet said:

    If a Unix sysadmin wants the kind of flexibility offered by the Known Folders in Windows, all that's required is the creation of a bunch of symlinks in users' home folders.

    Except that there's no single place for programs to store their configuration. The dot-files and dot-directories are all over the user's home directory. You can't symlink all of them since you don't necessarily have an exhaustive list of the programs your users will have on their machines. It's perfectly acceptable to store files directly in $HOME, so symlinking the Desktop and Documents directories won't work either. You could have local home directories for config and a separate network share for files, but many programs default to $HOME in file chooser dialogs, so someone is bound to save an important file locally and then wonder why it isn't available on another machine.

    And what about per-machine configuration in an environment where the same user might be using a laptop and a desktop for example? Most programs don't separate per-machine and global settings to different files, so symlinks aren't going to work. If you store the config files locally, users will have to manually sync them to different machines. If you store them in a network share, video and audio settings will be wrong.

    We can dream about a perfect world with pretty APIs and detailed specifications all we want, but reality is crap and we have to deal with it.



  • @Severity One said:

    @blakeyrat said:

    @JBotAlan said:
    In the two workplaces I've been with and the university setup I've seen, there is no separation between Documents, Video, etc...you get just a "home"-like space. I still don't understand why you would want anything else.

    You don't have to understand it. Suffice it to say organizations do want that, and Microsoft set up their permissions system to support it.

    What's stopping anybody from storing videos outside the 'Videos' library or folder? I really don't get this restriction.

    Or, if the videos location has a bigger quota, faster drives or whatever, storing their other big files there.



  • @blakeyrat said:

    GitHub for Windows

    costanza.jpg

    I'm sure you're able to temporarily use Git's powerful command-line interface while this problem with your favourite GUI application is resolved.



  • @blakeyrat said:

    1) Open CMD and run 'ECHO %HOMEDRIVE%%HOMEPATH'
    2) Open explorer and navigate to %USERPROFILE%
    3) Copy the .gitconfig file in %USERPROFILE% to the location output of step #1
     

    on my machine, %homedrive%%homepath% == %userprofile%

     what the f... oh, that's actually the name of the page I'm on. makes sense now.



  • @JBotAlan said:

    Presumably you've seen this--what does it look like?
    Typically it involves moving the Documents folder to a network share. User still sees it as "My Documents", programs still default to it, but everything is actually saved to a network drive, and can be managed (and backed up) centrally.


  • ♿ (Parody)

    @ender said:

    @JBotAlan said:
    Presumably you've seen this--what does it look like?

    Typically it involves moving the Documents folder to a network share. User still sees it as "My Documents", programs still default to it, but everything is actually saved to a network drive, and can be managed (and backed up) centrally.

    But that wasn't really the question. It was about splitting up (and actually maybe putting them in very different places, of course) your Documents folder into Videos, Music, etc as "official" places to put such things. And then use permissions to enforce it.



  • @GNU Pepper said:

    @blakeyrat said:

    GitHub for Windows

    costanza.jpg

    I'm sure you're able to temporarily use Git's powerful command-line interface while this problem with your favourite GUI application is resolved.

     

    I was just about to post something similar...

    look at him and laugh

    Edit: if it's not clear, this is about blakey using "GitHub on Windows"


  • @tdb said:

    Except that there's no single place for programs to store their configuration. The dot-files and dot-directories are all over the user's home directory. You can't symlink all of them since you don't necessarily have an exhaustive list of the programs your users will have on their machines. It's perfectly acceptable to store files directly in $HOME, so symlinking the Desktop and Documents directories won't work either. You could have local home directories for config and a separate network share for files, but many programs default to $HOME in file chooser dialogs, so someone is bound to save an important file locally and then wonder why it isn't available on another machine.

    Sure, but that's all about convention rather than mechanism. I have no objection at all to the MS conventions about where things ought to go; I think they're very useful. My point is that given the desire to set up a way to do that stuff, it's pretty typical for MS to choose to build a dedicated API for that purpose only rather than making the exact same capability and a whole bunch of other useful capabilities possible by implementing a well-known, well-understood, general-purpose but Not Invented Here mechanism like symlinks.

    Windows seems to me to be absolutely chock-a-block with little dedicated APIs for things that a little more thought, and a little more willingness to concede publicly that designers outside Microsoft have actually invented some useful things, could have let them achieve with a lot less design. Windows doesn't really do synergy to anywhere near the extent Unix does, and I personally find that to be among its more irritating aspects. Your own irritation mileage may naturally vary.

    For what it's worth, there is some kind of move in the Linux world to sticking config stuff in a subdirectory of ~/.config rather than in dotfiles or dotdirs directly under ~, which helps a bit; there's also generally a compile-time configuration option for where the user-level config stuff should go. But in the real world the whole dotfiles business is indeed messy enough that most sysadmins will generally just whack ~ on a NFS mount and declare it Job Done.

    @tdb said:

    And what about per-machine configuration in an environment where the same user might be using a laptop and a desktop for example? Most programs don't separate per-machine and global settings to different files, so symlinks aren't going to work. If you store the config files locally, users will have to manually sync them to different machines. If you store them in a network share, video and audio settings will be wrong.

    Lots of Unix desktop config stuff is stored per-user rather than per-session and yes, that's poor. You can do clever things with union mounts but it's usually not worth the complexity.

    The Windows idea of separating local and roaming config stuff is better but still not ideal (it breaks when you're running multiple concurrent Terminal Server sessions for a single user, for example). I also don't think there's any reasonable way to stop apps from using this stuff all wrong, either. It took Mozilla quite some while to move the Firefox cache from roaming to local profile; Java still creates huge and essentially useless cache files inside roaming profiles.

    None of this stuff is ideal and being a good sysadmin does indeed involve lots of cost/benefit evaluation while solving whatever problems exist by making the best use of the tools available - that's what makes doing sysadmin work fun. Personally, though, I find it more fun when the design of the tools strikes me as elegant. Windows doesn't really do elegance either - it gets by with brute force and Spakfilla.

    None of this is in any way a defence of dumbshits who refuse to use SHGetFolderPath when that's clearly what's required, or who make life miserable for Windows admins by pretending that Windows is just another Linux distro. Devs ought to think about the separation of functions that SHGetFolderPath implies, and ought to stick stuff where it fits.



  • @PedanticCurmudgeon said:

    Did anyone else guess from the title that this would be another blakeyrant?
     

    *raises hand*



  • God I hate the client in the OP. I use msysgit and even though ugly as hell it does the most of the job. What little it doesn't do, I do via bash.


Log in to reply