microsoft / vscode

Visual Studio Code
https://code.visualstudio.com
MIT License
160.03k stars 28.03k forks source link

Visual Studio Code for ipad #70764

Open allessandrojs opened 5 years ago

allessandrojs commented 5 years ago

can use the Visual Studio Code on a ipad

lazerl0rd commented 4 years ago

@headmelted An app called Infuse 6 is able to “host” a website and or FTP service so I’m sure, if it doesn’t already, iSH could add support for that somehow.

But even if not, I think most of the core experience could be ported over to iOS. Sure we may not be able to use certain tools and or extensions but hey that’ll be like installing the Python Extension without Python installed and ready in the PATH (in an extremely generalised way), right? You could think of it as a whole new platform but with limited capabilities, which ironically it is.

I’m not an iOS developer, but I really think this would be a great application to have on an iPad Pro along with Photoshop, the Affinity Suite, iSH, the [in testing] GitHub app, and the new RDP Client.

thomasio101 commented 4 years ago

@lazerl0rd, could you clarify what you mean by the following?

core experience

I would consider the code editing functionality of Visual Studio Code to be the main aspect we need to replicate. To be honest, it'd be a huge stride forward if we could just get a working proof of concept with a code editor, an FTP file explorer, and an SSH terminal working.

Flutter

Maybe we could initially develop the app using Flutter. That way anyone, including those of us who do not have access to a Mac (or an iOS device for that matter), could work on this project. As a bonus, it would give us a seamless cross-platform experience as Flutter is not only available for iOS and Android, but also for desktop and web.

Name

Has anyone thought of a name yet? I was thinking of calling it Visual Studio Code Lite as it wouldn't just be Visual Studio Code for mobile. It would be a reduced Visual Studio Code experience for all platforms if we aim for cross-platform support as would be the case if we use Flutter.

Proof of concept

I think we just need to get a minimum viable product or a proof of concept out as soon as possible to encourage people to get started with this, but I think we should get a design down before we do such a thing.

gganley commented 4 years ago

Bystander here but it seems iPadOS 13.4 apps can now interpret direct keyboard events ¯\_(ツ)_/¯ I’ll see if I can find the docs

gganley commented 4 years ago

UIPress having a new key event must have been what I was thinking of. Sadly I don't think this is the magic bullet but a good sign never the less

uyarn commented 4 years ago

Ipad Pro and Magic Keyboard! It is prefect to be a development machine now! I cann't wait to buy it if I can run VScode or the other IDE on it

felipefdl commented 4 years ago

The iPad version will be awesome! At least one VSCode Remote version.

GainSury commented 4 years ago

Now days, Apple just announced the new cursor for the iPad in iPad OS 13.4, perfectly for text selecting!!!! I can't wait for the iPad version!!!!

theonlydaleking commented 4 years ago

Would love this. Happy to help where possible

lazerl0rd commented 4 years ago

@lazerl0rd, could you clarify what you mean by the following?

core experience

I’d say the core experience consists of the editor and feature set of VS Code without extensions, @thomasio101.

thomasio101 commented 4 years ago

@lazerl0rd, alright, I think we are on the same page then!

I'm still doubting between recreating the Monaco editor in either Flutter or Swift or using the existing version through a system like React Native. I'm not familiar with the latter, so could someone else take a look at it?

thomasio101 commented 4 years ago

Would love this. Happy to help where possible

@theonlydaleking, oh, of course you can help. I see you have quite a lot of experience with JavaScript, so could you possibly take a look at whether React Native is a viable option for this project? (I have used React, but I've never used JS for native apps.)

bkniffler commented 4 years ago

@thomasio101 I think you are missing the point if you reduce vscode to the editor part only. There is a whole lot of code editors build with swift/cocoa, and you could easily wrap Monaco or CodeMirror in a webview with react-native. But what about the huge list of plugins, intellisense, code formatting, linting and what about actually running the code you're writing?

Most of these issues can be solved with a lot of time and effort. But running the code is still an issue, installing some node_modules, compiling native code, etc. If its just about writing another sftp/webdav code editor, you could go and use Panic Code Editor or Textastic, they are quite excellent in what they are doing. And if you need some file upload/download to make the code run anyways, you could easily use a remote code editor like Cloud9, VSCode Server etc.

I wished I could use only my iPad Pro as a daily driver, but I can't. I can connect a RaspBerry Pi4 via usb-c though and use VSCode Server though, and it works nicely. And with added cursor support, its even better now. Guess it won't get any better than that for now.

onionhammer commented 4 years ago

Yeah, i think you guys are missing the point as well...

This just needs to essentially be a thin client to vs online and vs remote imo

uyarn commented 4 years ago

@thomasio101 I think you are missing the point if you reduce vscode to the editor part only. There is a whole lot of code editors build with swift/cocoa, and you could easily wrap Monaco or CodeMirror in a webview with react-native. But what about the huge list of plugins, intellisense, code formatting, linting and what about actually running the code you're writing?

Most of these issues can be solved with a lot of time and effort. But running the code is still an issue, installing some node_modules, compiling native code, etc. If its just about writing another sftp/webdav code editor, you could go and use Panic Code Editor or Textastic, they are quite excellent in what they are doing. And if you need some file upload/download to make the code run anyways, you could easily use a remote code editor like Cloud9, VSCode Server etc.

I wished I could use only my iPad Pro as a daily driver, but I can't. I can connect a RaspBerry Pi4 via usb-c though and use VSCode Server though, and it works nicely. And with added cursor support, its even better now. Guess it won't get any better than that for now.

exactly, as for me, the result I want is to replace my MacBook(laptop) with iPad like what the slogan of iPad Pro said —— "your next computer is not computer". Although you can build the other editor quickly by using some excellent node modules, how about the editor ecology, especially those plugins.. I can't image the experience when I using vscode or atom without those plugins. It's a huge work.

marfier commented 4 years ago

I've just began developing on my iPad Pro 2018 12.9", and it's driving me nuts. I've tried code-server from Coders, and it works well on desktop or laptop, but poorly on iPadOS. Shortcuts don't work, navigation is a pain, and not all extensions work. It would mean so much for a version of VS Code, at least a lite version of it, for iPadOS. Microsoft has most of their apps, including Azure and Office, already on the App Store. I'm still not sure why this hasn't already happened.

bkniffler commented 4 years ago

@GalacticLion7 It makes sense to port Excel, Word etc because its part of a paid suite. VSCode in comparison is free and it already works on Tablets (Surface), so why should they put a huge effort into building a completely new software product only to support a competing product and help get it traction for the one thing where Surface is better than the iPad: productivity.

thomasio101 commented 4 years ago

@bkniffler, this is an open-source project! If we want the functionality, we'll make it!

And, @Uyarn, you've got a good point there. But I think we'll initially need to get VS Code's core experience to work, before we try getting systems such as extensions to work.

bkniffler commented 4 years ago

I encourage everyone to build stuff, but since the product you'd build, if done with flutter or swift, wouldn't really have anything to do with vscode except for maybe design similarity within architecture and visuals, I don't see why this needs to be discussed here. I'm genuinely interested in making vscode experience on iOS a thing though.

So, the one thing worth discussing here in my opinion, besides some complete remote solution, is trying to get vscode to run through a react-native webview on the device.

thomasio101 commented 4 years ago

@bkniffler, whether or not work related to this concept belongs in this repository might strongly depend on the manner in which we implement it, and, thus, I'd like to go over some of the options;

A progressive web application (PWA)

We could make an installable version of the existing web implementations of Visual Studio Code.

An app using React Native (Or similar frameworks)

We could port the Electron implementation (Or the web implementation?) of Visual Studio Code to a mobile framework.

A full native rework

This option would involve emulating the Visual Studio Code experience in a native application. It could potentially include support for VS Code's remote functionality. A potential hurdle to reworking the VS Code experience might be in its licensing. (Does anybody know if there are legal limitations on reusing (part of) Visual Studio Code's design?)

lazerl0rd commented 4 years ago

I’ll just chuck this here:

https://discuss.atom.io/t/electron-on-ios-android/18223/9 https://www.nativescript.org

theonlydaleking commented 4 years ago

@thomasio101 [opinion only] I think from a project management standpoint, it will be easier to get other developers to jump on board if it is a React Native project. Porting from Electron to RN is more straightforward than electron -> Flutter I believe. Definitely more straight forward than electron -> Native

[anecdotal only] - I think it's always important to start with the user and work backwards (thanks Steve Jobs for the quote) the ultimate end-goal for me would be to have the ability to work on a project at work, git push at the end of the day, then on the way home I could bust out the iPad, git pull the latest commit and continue working on it on the train on the way home.

In terms of licensing and the VS design - this package is under MIT which I gather would include the design files.

designMoreWeb commented 4 years ago

I think this would be great for people using iPad Pro’s as a coding machine and using it on the go.

marfier commented 4 years ago

@bkniffler I think Microsoft should take the same approach they did when they made mobile versions of their Office apps, by sacrificing some features in the desktop versions to make it "lite."

Edit: Honestly, I take back what I said. I would benefit more with a full version of VS Code just like the one on desktop. I can't stand a lite version like how they did when they made iOS versions of their Office apps. Also, please give us an update. We have never gotten a comment here by any officials, and it's been a year. (@chrisdias)

felipefdl commented 4 years ago

Hi @chrisdias, this issue was assigned to you in March 2019, are you believe you are the right person to discuss about it? if you not, can you assignee another VSCode member to discuss the possibility to get that feature done? since this issue has more than one year without any comments by you.

marfier commented 4 years ago

I think this Issue got forgotten about or ignored. It's been a year, yet still no comment or update.

thomasio101 commented 4 years ago

Can we try to contact the team directly, @GalacticLion7 ?

Besides that, I'd like to try getting the Monaco editor to run in React Native soon.

chrisdias commented 4 years ago

Porting VS Code to the iPad is not on our roadmap. While it may technically be possible to bring over the core editor, you really have to take into account the extensions to have a viable development experience. And that's a big problem, many extensions simply can't run on the iPad because there is no underlying version on iOS (e.g. Node, C++, Rust, etc.).

Instead, running VS Code in the browser with Visual Studio Online provides you a full development experience on the iPad powered by an environment where you can use all of your extensions, have a terminal, etc.

You can use a hosted VSO environment, or you can bring your own. For a more native experience, providing PWA support is on the VSO roadmap.

felipefdl commented 4 years ago

Thank you @chrisdias. However I never thought about running full vscode on ipad, only a remote mode, where I can manager easily connect on my Mac or on a dev machine running on cloud or even a raspberry pi. A native client make the editor more fluid and take advantage of keyboard shortcuts etc.

Anyway, thank for you answer!

marcusrugger commented 4 years ago

Ditto what @felipefdl said. My interest in VSCode on the iPad is so I can remote in to a Linux server in the cloud and remotely edit the code. I don't have any interest in developing on my iPad; just use it as a smart terminal.

rcanoff commented 4 years ago

Also waiting for the same thing, just a "Remote mode client" for the ipad

marfier commented 4 years ago

@felipefdl @marcusrugger @rcanoff this already exists. You would use code-server, which has been discussed here already. It's fine on desktop, but it is not optimized for iPadOS at all. To name a few issues, shortcuts don't work, navigation is very hard, not all extensions work, and it's laggy. Not the contemporary experience you're used to on iPadOS. You can see people on code-server's Issues page keep on complaining about the same issue.

And @chrisdias, VSO doesn't work on iPadOS: https://imgur.com/ggxjN9y

Even if it just got added to the whitelist, it would still not be a good experience for the same reasons I listed above.

So I really do think that a fully native experience is what would be suitable. I don't see why extensions would be an issue, since people have already done it before:

Rust: https://apps.apple.com/ae/app/rust-programming-compiler/id1486323711 C: https://apps.apple.com/ae/app/c-programming-language/id499545918 Python: https://apps.apple.com/ae/app/pythonista-3/id1085978097 Java: https://apps.apple.com/ae/app/pico-compiler-java-ide-api/id992268206

Emulation is always an option, if something comes in the way.

felipefdl commented 4 years ago

The editor apps on Apple Store, and those apps is pretty bad experience, it's a platform not explored yet for developer tools, if @microsoft go on it, it will be a reference there. You guys can sell it, bundle on office 365 license, I don't care, I will pay for it. The only app is doing some similar that is the guys from @TablePlus it's SQL client, and it is amazing app.

yanshuf0 commented 4 years ago

@GalacticLion7 just looking at the 'C' app, it says you have to pay for compilations and internet connection is required. I'm sure you just send your code over the wire and they compile it for you for a price. This isn't native. All vscode would have to do is create a client app to use the remote ssh connection.

marfier commented 4 years ago

@yanshuf0 I didn't have high doubts about the C IDE I linked, but this one guarantees that it works offline and has a 5-star rating. The point is, while I wouldn't recommend using these poorly-written apps on a regular basis, it proves that any programming language can easily be compiled and run natively on iPadOS. Even if something comes in the way, emulation will always be an option. Just because these developers didn't do it properly, it doesn't mean that the fantastic developers over at VS Code can't do a much better job.

marfier commented 4 years ago

There should be more activity here.

bkniffler commented 4 years ago

Guys, you were begging for VSCode teams opinion on this matter and now you got it. Its not on their roadmap and there is probably a lot of reasons for that, one being the missing build tools. As you noticed @GalacticLion7, there is ways to compile c++ or interpret ruby/python/js, but these ways things do need to be implemented individually, while VSCode can just use default tools already available for each platform, as long as the use installs them (like cmake, nodejs, etc). They would need to build the whole build tooling, they would need to reimplement plug-ins, rewrite the whole UI (since its written in CSS which doesn't work on iOS), and rewrite lots of the core; its just not happening.

I don't think there should be that much more activity over here, because nothing meaningful can be said anymore, and I fear if the discussion continues to go back and forth like it currently does, the issue will just be locked. Its time for action and involvement if you want the situation to change. Start working on the react native port, try doing something new with flutter or get into code server to improve the experience on iPad. Make sure to link the repository you're working on to make others aware of it or link any alternatives you find along the way.

forrestthewoods commented 4 years ago

I don't think there should be that much more activity over here, because nothing meaningful can be said anymore

We can continue to politely express our desire for a native app with remote capabilities. The only way the roadmap will change is with clear user demand.

It seems like the feature request may not be clear. Maybe we should be asking for a Visual Studio Online iPad app. Compiling and running on local device is not going to happen anytime soon due to Apple restrictions. But something could run in remote/cloud mode and that would provide a lot of value to a lot of people. And the native app experience will be much better than a web browser experience.

bkniffler commented 4 years ago

Yes, but that's the point @forrestthewoods. We're not asking for a new feature, we're basically asking for a completely new product. If you want to express desire, adding a thumbs up to the first post is a great way. If you want to propose an iPad app for Visual Studio Online, there is a dedicated place to submit feedback and feature requests which is https://github.com/MicrosoftDocs/vsonline/ and I'm pretty sure you're more likely to get official responses over there since it is directly related to that specific product.

davidbarton commented 4 years ago

There is an open issue to track Safari support for vsonline here https://github.com/MicrosoftDocs/vsonline/issues/33

I agree that opening new issue for "iPad app for Visual Studio Online" in https://github.com/MicrosoftDocs/vsonline/ repo is the best move.

marfier commented 4 years ago

@bkniffler the whole point of this is to debrief for the team about a VS Code on iPadOS. It's not on their plan yet, but it doesn't mean it can't ever be.

Remember what I suggested, which is for Microsoft to take the same approach they did when they made iOS (and Android, but that's not related) versions of their Office apps from their desktop versions. They rewrote a lot of the code anyways, so I don't see how it could be any different for VS Code. I'm not completely sure about what you meant on how they have to do each language individually, but it's not much effort to implement the languages that users want to use. It's just putting and maybe even emulation, similar to the IDEs I showed earlier.

About plugins, remember that none of the plugins in the desktop versions of Office work with the mobile versions. So Microsoft could rewrite supported versions of the most essential ones, like the Java or Python extension packs, or eliminate it all and just keep it simple with syntax highlighting. Sure, you won't get all the plethora of plugins you have on desktop, but maybe there could be a similar API so people can choose to make plugins. Besides, what would you expect on such a port? Just like how the mobile versions of Office are lite.

I also wanted to point out that I'm pretty sure there are people here who thought that this a stupid idea. People have always portrayed iPad so incapable that it's simply a Netflix or e-book brick. However, ever since the iPad Pro and iPadOS got released, it completely altered that. To name a few, I went paperless using my iPad Pro as a note-taking device with GoodNotes 5 and edit video with the pro-grade LumaFusion (it's almost like Final Cut). Also, the A12X Bionic is faster than most PCs out there. In other words, the iPad Pro and iPadOS is also an evolving, professional, distraction-free, productivity machine. It has replaced my laptop for everything but development on VS Code, which I still have a desktop for. The reason why I'm saying all that is for people that are not too sure about whether the iPad is okay for development.

I get that there is a chance it may all go downhill and the developers close this issue, and I won't complain, since I get how these requests work. I just want to make sure the developers understand my points above so I can ensure that the variable "iPad is just a Netflix and gaming brick" is not what lead them to make their decision.

marfier commented 4 years ago

There is an open issue to track Safari support for vsonline here MicrosoftDocs/vsonline#33

I agree that opening new issue for "iPad app for Visual Studio Online" in https://github.com/MicrosoftDocs/vsonline/ repo is the best move.

That would be fine too.

bkniffler commented 4 years ago

I would love to, one day, use my iPad as a sole developer machine. It is a serious beast and in a year, I'm sure, it will have loads of great productivity apps. But I'd like to be realistic about it. Stating that it's "not much effort" does not help at all, because it will take a lot of effort to build the product you're asking for. To give you an example, try to find any resources for example of how to compile c++ on the iPad, you might be surprised about the lack of resources. Its not just a matter of apt-get install cmake. Look at https://github.com/mceSystems/node-jsc to see what it takes to run nodeJS on an iPad. Running the code remotely is a different matter, but then again I'm asking, why not participate over at https://github.com/cdr/code-server and maybe make a react-native port that will communicate with the code-server backend?

The office for iOS analogy does not help either. It was just a strategic decision as a result of Microsofts move to react-native (https://blog.appfigures.com/microsoft-goes-all-in-on-react-native-for-their-mobile-apps/), and part of a product that generates a big chunk of their revenue (you can look into their annual report if you're keen). Keep in mind, vscode is basically a free open source tool that might or might not one day replace Visual Studio. But that's also why I linked the visual studio online project, which in comparison is a paid tool that will most likely be more open to a huge task like having a dedicated iPad app, since they will be able to generate revenue off of it.

So yeah.. you can downvote my answer as much as you like, but let me state this clearly: Saying things like "microsoft, you are a huge company, why don't you do vscode for iPad" or suggesting them to adapt their roadmaps just for a few people in here will not help much. Making a product that gains serious traction, on the other hand, might help a ton. Participating at code server might help a ton, since its an open source concurrent product to their visual studio online, and if an iPad app makes it an even better tool with a larger community, they will most likely notice.

bkniffler commented 4 years ago

Here is a simple implementation of monaco editor as a webview inside a react-native app: https://github.com/bkniffler/vscode-native

Its only meant for dev mode currently and its only a POC of how easy it is to embed the editor in an offline app. From there on you could go and add remote ssh or try and implement https://github.com/JaneaSystems/nodejs-mobile, which will not be easy but definitely possible.

felipefdl commented 4 years ago

Full vscode on iPad, is almost improbable, but it's a second step for sure. The remote vscode on ipad is a first step, and it's a lot less effort, because, the extensions, terminal, and everything else will run on remote server. (as code-server but with native app).

tjdraper commented 4 years ago

+1 for VSCode remote and ssh support on the iPad. I'm already using remote SSH to my self-hosted machine so I only have to have one machine set up for dev. Having an iPad app to remote SSH into the dev machine would be fantastic!

onionhammer commented 4 years ago

@chrisdias

Instead, running VS Code in the browser with Visual Studio Online provides you a full development experience on the iPad powered by an environment where you can use all of your extensions, have a terminal, etc.

This is exactly what I want though; Visual Studio Online in a browser but without the browser chrome - i.e. a web view. This would be easy if iOS had PWA support, but it doesn't. A bonus would be being able to run it without any extensions but connect to machines over SSH

MaxFletcher commented 4 years ago

@chrisdias

Instead, running VS Code in the browser with Visual Studio Online provides you a full development experience on the iPad powered by an environment where you can use all of your extensions, have a terminal, etc.

This is exactly what I want though; Visual Studio Online in a browser but without the browser chrome - i.e. a web view. This would be easy if iOS had PWA support, but it doesn't. A bonus would be being able to run it without any extensions but connect to machines over SSH

IOS does have PWA support. It's possibly more limited than other operating systems but it's there. I have twitter installed on my iPad as a PWA.

Its not very obvious, you have to open the site in Safari, tap share, then tap Add to home screen. I believe the prompts you get on Android are not yet supported on IOS.

Anyways not sure if this helps, but PWA support for VS online sounds like it might be possible?

thomasio101 commented 4 years ago

@MaxFletcher, PWA support would also provide us with support for other mobile devices, not just for the iPad.

marfier commented 4 years ago

@bkniffler you're oversimplifying my points. First of all, you're making it look like I said that it's "not much effort" to make the whole thing. I was simply referring to the IDEs I linked above that successfully compiled external code offline. I may be wrong, but if these people were able to do it, who, judging from their other apps and the UI, are not very skilled yet (except for the Pythonista one, they're great), then I don't see how it would take more effort for a larger developer entity like Microsoft do the same thing. For the Node.js runtime, you would nodejs-mobile, which is much more complete and easier to use than nodejsc, which was last updated on October 2018.

The reason why I'm hoping for a native app instead is for completely offline work. I just don't see what's the point of remotely SSHing to your desktop, as you would need an internet connection on your iPad. We need to take advantage of its portability. Sure, there is a cellular model, but usages will be high. However, for the very least, compatibility for VSO or code-server on iPadOS would be okay too, as long as it's optimized very well for iPadOS to take advantage of the new adaptive cursor, keyboard shortcuts, etc.

Also, you should note that VS Code has some sort of indirect monetization. If you think about it, what kind of developers use it? Most likely web, since desktop or mobile usually prefer full IDEs. (And no, I don't think Visual Studio will replace VS Code, since VS is a lot more capable for certain workloads than VS Code) And then web developers would then need somewhere to put their work on, right? Enter Azure. Microsoft makes extensions for Azure in VS Code so that it’s easy to deploy there. They even show the extension on the recommendations without even searching for it. And they even have a free $200-credit trial. But then you would need a version control system for your code? Well, they have TFS. It supports Git, too.

I never said "Microsoft, you are a huge company, why don't you do VS Code for iPad." Read my first paragraph. Again, this Issue was made to debrief about some sort of VS Code on iPadOS for the team, whether it's a native app, VSO, etc.. It's clearly not a beg like how you described it. You're also stating that the web app will gain more traction than a native app, which doesn't make sense. Also, I don't what you mean on how this will reach a few people. Going back to my other comment (which is the case for a lot of the points on this comment), iPadOS a now-mainstream platform that is continually growing for many purposes. I'm even writing this on my iPad Pro, just saying.

jarvon commented 4 years ago

I think we can all agree that it needs to be a dedicated app. Who makes the app is besides the point, we're all developers. The thing that we need to figure out is what technology (framework) will best suit the project. Create a Git Repository and get to coding. Love the challenge, live for the finished product. I'm gonna take a crack at it in Javascript, using vue and nativescript if at all possible. I'll post more info in the coming weeks. Happy coding to you all... stay safe.