Thanks to Microsoft's fanatical dedication to compatibility I don't see how it will ever get fixed. I think they could take a lesson from Apple here and have DLLS/EXEs contain SDK versions against which they are built, then mandate that Windows 10 apps must support a larger MAX_PATH. Of course if they were into learning lessons, they'd have done fat binaries so a single install could easily support 64-bit and 32-bit (or a single DLL could contain 64-bit and 32-bit versions).
For those not in the know, MAX_PATH and PATH_MAX (ugh) are defined in the Windows headers as 255. Because it was public people copied that constant and spread it around. So many apps and libraries out there are hard-coded to expect 255 that even if you change it in the Windows headers a million things will still be broken.
Even if you overcame that limitation, you'd have a situation where paths no longer worked reliably if they got passed around (or worse, long paths would trigger buffer overflows in poorly written apps and drivers).
You could fix it by passing apps not declared as large-path aware a shortened virtual path but the testing/edge case burden would be enormous.
So this is an example of a really quick decision one programmer probably made by themselves many years ago that we are forced to live with because the pain of changing it is too great compared to the benefit we'd receive.
Otherwise, yeah - we don't like it either... here's the not-closed uservoice request ;-)
Re: fish: Indeed - we have some big fish to fry, but luckily msft is a big company that can fry multiple fish at a time. Personally, I'm excited to help improve the Node tooling story by frying this fish, and passing our learnings and feedback onto the the other teams @ msft so that they can improve their recipes. Ultimately, we strive to have a complementary set of fried fish. And maybe some vegetables too... :)
With regards to the technicalities of max_path itself... the issue is with the .NET file I/O API, which doesn't allow you to use \\?\ paths to work around it, and is too big for our team in particular to do much about. Here's a good article that might provide a little more context (it's a little old, and these "plans" they speak of never actually materialized.)
That said... we don't like it either, and we are still thinking about what we can do.
- connect is for filing bugs
- uservoice is for "ideas and suggestions"
How people use it, of course, is a completely different story...
And then some teams (like us) have public issue trackers, which are the best approach if available because everything goes directly to the team: https://nodejstools.codeplex.com/workitem/list/basic
I think Ms is doomed to get people complaining about unrelated junk any time they open a platform up.
If you need developer feedback maybe require the UX to be creating Pull requests describing the issue? Kind of like how pullup.io works?
I don't know, I was cussing out both node.js and Windows. "Let's put all the dependencies in subtree even if they repeat 20 times throughout or paths start wrapping around 3 times at the terminal".
But the fact that Unicode functions don't expand adds an interesting problem for us; the MAXPATH respecting (and outdated) _A filesystem functions can cause a collision for non-expanded paths we get to fun things where you can have different FILE objects if you use old _A functions vs _W functions. The inverse is also true where you can collide by moving from _W to _A.
So! If we do start using old _A functions we actually can cause problems by directing to new files that would cause expansion because of file expansion being turned on.
PS. Don't get me started on FS permissions...
Doesn't look great for node and it shouldn't be their problem.
More like "We landed on the moon but sometimes the door won't open"
Behind the times on web dev for so long, now busting out open source left and right, teaming up on Angular with Google, jumping on with nodejs, modernizing their tools, "gently" pushing locked in MS web devs out of the darkness of that Web Forms madness into the light of real web development.
I've always been a LAMP stack dev but they have at least caught my attention as of late.
Open Source is not just about opening up some source code, it is also about how you act in the larger interests of the community. Just earlier this month, Microsoft sued Kyocera over patents on Android. Microsoft has sued every Android phone maker so far, and have forced some of them to make Windows phones. Their position on Linux infringing unspecified patents has not changed or been clarified.
Microsoft is playing the Open Source game because they really have no choice. Open Source has thrived and will thrive without them. Microsoft doesn't deserve our attention until they stop abusing patents.
It's the Kabuki theater of patent suing in order to eventually end up at a table finding a way to forge ahead "together." It's something the large IP players have all been doing on the long tail of the IP consolidation wars.
IP royalty harvesting is separate enough from the open source efforts that it's picking nits a bit.
MS is growing open source because players and groups have beaten the drum to get there and the lumbering giant has shifted. The seeds planted years ago are bearing fruit.
You can sing the war song, but Open has won. Glory be! Nobody is looking for everyone to jump into Azure as if it were the latest awesome distro because a bunch of core dev tools, frameworks, and open-friendly advances have happened, but on the current trajectory, we will see the old walls of our discontent torn down by those who built them.
You get enough .net devs to come out of their caves and you could be wading through as many "MS + my favorite open source project" posts as not... and the communities, overlapping into harmony, will have bigger upsides for both than downsides.
It's becoming an increasingly good time to be a developer. When those you hate become undifferentiated from yourself, do you grow to hate yourself or to love the one you hated?
Minor nitpick on your otherwise positive comment, we have been using ASP.NET MVC for almost ten years now (ok eight). Webforms have long been a thing of the past, at least in the circles most devs I know move in.
I can't tell you how many conversations I've had with MS devs who only know how to develop with web forms. They've never heard of grunt, node, MVC (the concept in general, let alone the option in .NET), SASS, NoSQL, RWD and the list goes on and on. It's like they've been living in a closet.
Not that they have to use ANY of those I listed -- but to KNOW such things exist!
For so long it seemed MS's mantra was "keep using only our stuff, its okay, don't look out the window at everything else going on". And so many that I've met just said "okay".
Now I feel there is a concerted effort from them to reverse that and really push education beyond the MS closet; it is very interesting to watch devs come out into the sun, blinking.
Again, just amongst the MS devs I've had the pleasure of working around, talking to online and off, at meetups and at jobs. But yes, only from my limited circle. Never meant to imply anything other than: I'm excited for MS devs and myself, as I'm actually wanting to dip my toe in the water as well and pick up .NET.
So nothing but excitement from me on it.
How do you handle the super-long paths npm is so fond of? On Windows I often run into issues when searching or trying to manipulate a solution containing anything npm due to too-long paths.
1) warnings when you hit max_path that offer to run 'npm dedupe'
2) sometimes that doesn't work, so we also suggest people start their projects in a short path like c:\src (embarassing, I know)
3) patiently await a flat node_modules directory - http://blog.npmjs.org/post/111968476155/npm-weekly-6
4) groan very loudly when it happens - no good keeping those emotions bottled up ;-)
luckily #1/#2 cover most cases
The VS debugger is excellent, its probably the dev tool I miss the most since leaving C++ and going to JS, and tracepoints are the feature I wish for most frequently in a browser debugger.
So I was about to naively suggest the VS team could push for tracepoints in IE, but OMG! Tracepoints are in IE11. Where have I been? In prejudice-land. This might mean I have to open my mind and use IE for dev, though the bias runs wide, I still might have to use it in secret for a little while, at least at work. ;)
I don't think you need one of the paid versions, but I'll double check and edit this if I'm wrong.
Also, I've noticed that if I open a few files the IDE creates "Virtual Solution", but it's hard to tell which files are there, and which don't. For example: TypeScript files are, but no such luck with SASS.
P.S. And a CMD/Terminal in a panel (akin to the Output panel, but with an... well, input) - is that possible?
You can use the "From Existing Node.js Code" project template to create a project from a folder, but the project file itself is a requirement for visual studio and also allows us to include helpful metadata (whether or not to analyze a directory, etc - most IDEs/text editors include a project file for this very purpose - they just hide it a little better). That said, at some point we'd like to change things up so that the project does feel more similar to the folder/file experience you might expect.
This is to change the project file to be more "transparent". https://nodejstools.codeplex.com/workitem/1855
There's also another issue to directly open a folder without requiring the user to take steps to create the solution/project.
Additionally, like rlp mentioned - make sure that "show all files" is turned on so that you can see everything in the folder, not just files you've defined as being a part of your project.
Hope that helps - let me know if you have any other questions.
In the meanwhile, I noticed that you support intellisense. What are the limitations to this? What patterns will get correctly picked up? I assume prototypal inheritance will work fine (of course), but will any of the BaseClass.extend()-style inheritance mechanisms that some frameworks seem to favour (e.g. Backbone) work?
While we're at it, is the static analysis tools you built for this public? I'd love to have a look at them.
Also - any way we might get "break on exception" like with C#?
Also - any plans to support debugging promises better?
We have SO MANY PLANS, so please upvote or request the ones you think are important :)
Love Azure, but had a hard time getting my NodeJS stuff up to Azure without some major issues.
Windows is not a priority for most node.js devs, so unless you're doing something pretty simple/mainstream, you're likely to run into trouble.
YOu should really just stop developing on windows and learn to embrace docker.
I actually heavily modified sublime-better-coffeescript to support highlighting function-calls and I added proper CSJX support.
Been meaning to make a pull request; but these Sublime plugins are always so easily abandoned and under maintained that there's no point.
That was almost a year ago, so how do the things stand now?
I mean... desktop environment on your application server ... lol?
There's so much friction legality and culture wise to getting a windows server to spin up, get developers to use good practices, encourage automation and resusability...
I take it you haven't done .Net development? It's incredibly easy though Docker and similar tech wasn't developed for Windows so some of that has lagged behind.
> I mean... desktop environment on your application server ... lol?
This is a pretty old way of thinking; it's simply another way of managing your application server. This really isn't a big deal anymore.
Not Microsofts problem.
I just really cannot ever see mass use of azure and visual studio in the web ecosystem. The people writing nodejs code are all using vim and unix, and you're asking them to give up their workflow and change operating systems. I want to be able to poke around in bash. (edited back in)
Sure, some people new to web programming might go this route. But the next big web framework certainly will be on unix first. MS is now in this perpetual state of trying to keep up, and I just can't imagine why anyone serious about web programming wouldn't be on *nix.
This appears to be consistent with npm's data as well (see this infographic - % devs accessing npmjs.org http://blog.modulus.io/growth-of-npm-infographic).
We also try very hard to make sure that NTVS works well with people's existing tools and packages - so if you run into an issue, please let us know (or better yet, make a PR!)
I've worked with some of these people on the web agency end of the spectrum. They're good at what they do, but they're absolutely not interested or specialized in anything sysadmin-related. For them, Unix is a hairy old beast and Microsoft is the company whose solutions are imperfect but accessible, and that has allowed them to concentrate on their job for the past 20 years.
As Microsoft adds new technologies to their palette, these users will pick it up. They'd never do it on their own as long as it involves steps like "just spin up a virtual Linux box on AWS"...
On HN, it's easy to start assuming that everyone speaks Bash as a second language, but that's very far from the truth.
No they aren't, that's just your perception because you are surrounded by those that are.
AFAIK Windows Node developers are still a minority, but that doesn't mean they're not a sizable group of people. A lot of code is written in corporate environments in C# and Visual Studio - adding Node to that mix is a sensible bet on Microsoft's part.
It's really scary for someone new, but power users like environments where everything is modifiable and hate GUIs.
I like being able to configure nginx a certain way. I like being able to get into a psql shell and play around with my data. I don't want to just give someone a git repository and magically press some buttons in their UI and have it work, because when you inevitably realize you want to do something special, you're stuck.
Different strokes for different folks, but there's a lot more folks stroking the corporate way.
I see it ultimately as damage control. With the overwhelming majority of developers on unix, you're not going to see microsoft hang out in the server market for very long. I think they'll hang onto the office crowd, but nothing on the backend.
This, of course, is just the opinion of a 20 year old unix nerd, who became one because his father is a microsoft fanboy. I rebelled in my teenage years by infuriating my father and installing linux. I still think I raise some valid points.
(specifically the part that says "We will be adding Linux and Mac implementations of platform-specific components over the next few months.")
Or the part where ASP.NET vNext runs on Mono as the officially supported platform?
I doubt that it's true in either case. IT departments around the world employ programmers to make all sorts of business apps including internet/intranet web apps. Even some very small companies have custom apps to do business and the vast majority of businesses are using Windows.
I mean, who would want to sit on the left side of the car when they're driving? Nobody I know ever has. I mean yeah, you see them on the road every once in a while, but it must just be people new to driving who haven't learned better.
Everybody drives on the left side of the road (at least everywhere I'm aware of), so it just naturally follows that you need to have the wheel on the right. Switching things up would force everybody to completely change up their driving workflow.
I've been doing .Net development for over 5 years and my newest site is based in Node.js hosted on AWS. I am currently using Web Storm, which is great, but this plugin is definitely something I'll check out and is probably created for people like me: Someone who is a .Net developer, already has VS, but has a need for Node.js code.
There's a web based console that's sadly not that well known. Here's a screenshot: http://i.imgur.com/Lrw7lL1.png
Here's a video showing more of the features (it's from 2013, it looks better and more has been added since then, but it shows the idea): http://channel9.msdn.com/shows/azure-friday/exploring-the-su...
This is the first time I've seen this, which is a shame, because it solves a lot of my misgivings with Azure..
And I think you vastly underestimate how popular Visual Studio is among enterprise developers - they're doing web development as well.
My issue isn't necessarily azure and VS. It's the state of node on Windows. It's a second class citizen compared to the versions for posix compliant OSes. There are things that just don't work on Windows without installing VS, which is undesirable for deployment, and that's assuming they work even after VS is installed.
I'd rather spin up a local Ubuntu VM and write code in WebStorm, and that's what I do. I get debugger support, test runners, code completion, etc. Plus, I can then just deploy to cheaper VPS providers (DigitalOcean, Vultr, etc).
I'm not serious about web development though, I just do it for my job.
I also use Python Tools for Visual Studio, but that is a different story.
I think they are doing a good job at handling that change. I don't personally want to be constrained to doing everything within an IDE, and I'd rather use the tools directly than have them abstracted to look like native MS tools, but that's their business model, and it is slick and works for a lot of people.
Thoughts? I'm especially curious to hear how you think we can improve the existing experience so that it caters better to your workflow. What are some of the abstractions that get in your way?