codeworld icon indicating copy to clipboard operation
codeworld copied to clipboard

Option to export projects to Android and/or iOS

Open cdsmith opened this issue 10 years ago • 11 comments

It would be really cool if students could generate links to install their projects as Android or iOS apps on a phone or tablet. The app would be a web view, wrapped as an application with a set of generated files.

Concerns:

  • The set of available events would be much smaller. It may be that we should simplify the event model anyway to include just mouse moves, clicks, and drags.
  • iOS might not be possible without the student either jailbreaking or getting a $100 developer license. Android would require enabling third-party apps.

cdsmith avatar Jun 25 '14 03:06 cdsmith

Are you in favor of writing an Android app specifically for this purpose? This way you'd be able to log into your account and simply load your projects (maybe even edit code if you've got a tablet...)

denim2x avatar Jan 20 '17 11:01 denim2x

I had always envisioned the feature using Cordova (https://cordova.apache.org/) to build applications out of specific student programs. So rather than having a CodeWorld application on the phone, one could create an application out of one program, and share it with friends.

That said, though, I can still see the benefit in also having a single CodeWorld home app that lets students choose and run any of their saved projects. This would avoid the problem with needing an iOS developer license, or needing to enable third-party apps in Android.

My vote would go for both. But if I had to pick one, I'd go for building stand-alone mobile apps, rather than having one centralized app. The reason is that I want the project to feel more real to students. I want them to say "this is the app that I made" rather than "this is the CodeWorld app, that I use to do my school projects."

cdsmith avatar Jan 20 '17 17:01 cdsmith

There's also been a consensus reached on the event model, which is not documented here. Here's what we want there:

  • The Event type stays the same.
  • On touch interfaces, treat the touch pad as the mouse. Obviously, MouseMovement events will only be delivered while dragging, since there is no such thing as hover. Other conventions like two-finger tap for a press and release of the right button are fine, as well.
  • For keys, we offer a choice of several common keypad types, in the UI for exporting to mobile. For example, "no keys" should be a choice, as should "arrow keys and space", "numbers", etc. The keypad will be rendered on-screen.

cdsmith avatar Jan 20 '17 18:01 cdsmith

I'm getting more and more interested in this.

To diverge into some philosophy, I think one thing that's missing with a lot of learning-to-code platforms for elementary school is a tangible result. This is fundamental: if coding is introduced as something you just do on a web site like an educational activity, the whole motivation for it is missing! But that's what platforms like Hour of Code, Tynker, etc. do. And, unfortunately, it's what CodeWorld does, too, today.

We want to change this. We'll go all in, for example by rebranding the in-browser window as "Preview" rather than "Run", and redoing any educational materials, to make it clear that CodeWorld isn't just an activity that you do and forget; it's a tool for making things -- tangible things, that you can keep and show off.

I will be filing more issues to capture other kinds of artifacts, such as: more easily exporting drawings as images; exporting animations as animated gifs, or as videos; exporting projects of all kinds to Facebook, Instagram, etc.

cdsmith avatar Mar 07 '17 00:03 cdsmith

I couldn't agree more! I was actually thinking about this myself. Images are OK, but one of my students wanted to create an animation that he had to submit to the College Board in video format. I wish I had been able to recommend Codeworld for it, but I had to settle recommending Processing, because it allows you to export (and import!) images and animations :-(

To diverge into some philosophy, I think one thing that's missing with a lot of learning-to-code platforms for elementary school is a tangible result. This is fundamental: if coding is introduced as something you just do on a web site like an educational activity, the whole motivation for it is missing! But that's what platforms like Hour of Code, Tynker, etc. do. And, unfortunately, it's what CodeWorld does, too, today.

We want to change this. We'll go all in, for example by rebranding the in-browser window as "Preview" rather than "Run", and redoing any educational materials, to make it clear that CodeWorld isn't just an activity that you do and forget; it's a tool for making things -- tangible things, that you can keep and show off.

I will be filing more issues to capture other kinds of artifacts, such as: more easily exporting drawings as images; exporting animations as animated gifs, or as videos; exporting projects of all kinds to Facebook, Instagram, etc.

-- You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub: https://github.com/google/codeworld/issues/22#issuecomment-284575820

alphalambda avatar Mar 07 '17 13:03 alphalambda

I'm interested in tackling this issue for the Summer of Haskell because I had the same issue when I was learning how to code with the lack of tangible motivation. It wasn't until I joined my school's FIRST program where we built an entire robot that it felt like I was doing something noteworthy. Then I moved to making a couple games with Unity and Android Studio with friends which felt a lot more satisfying than just reading through textbooks.

My vote would go for both. But if I had to pick one, I'd go for building stand-alone mobile apps, rather than having one centralized app. The reason is that I want the project to feel more real to students. I want them to say "this is the app that I made" rather than "this is the CodeWorld app, that I use to do my school projects."

Is this feasible to scale for iOS users? As far as I know there isn't a way for regular iOS users to download their own app on their device unless they shell out $100 for the iOS Developer license. It's possible on Android because users can download stand-alone apps without going through the App Store but if we did this for iOS Apple would require every user to pay $100 just to download their own app.

ghost avatar Apr 30 '17 18:04 ghost

I don't know much about iOS, really. I've recently been told that there is a way for students to run apps on their own phones without paying the developer license. (It's unclear if we'd be able to build it for them like this on a server, or if they'd need to download project files and compile locally with XCode.) It's a shame they wouldn't be able to share their app with friends. But I've also been told that Apple's rules about interpreters in the app store make it unlikely that they would approve an official CodeWorld app that runs student projects, anyway; so neither option is ideal.

All of this is a pain, but it's Apple's walled garden, and we can't win if they choose to make it costly (or impossible). Given that, and the fact that Android has something like 88% market share, I am not worrying too much about it.

cdsmith avatar Apr 30 '17 20:04 cdsmith

I take it that the bounty for this is still good and not just left open? Opened quite a long time ago now. If so, I will look into it over the next few weeks and if it looks good, will do it. Will let you know either way.

CodeFunction avatar Aug 16 '21 15:08 CodeFunction

@CodeFunction I set up that bounty a while ago and I'd forgotten about it, but yes it's still good. In fact, I just doubled it. Please let me know if you're interested in working on this. I'm happy to discuss designs, set up chats, review work, etc.

I should clarify that the bounty will be awarded for something I can merge and release. There is a history of half-working attempts on this issue, including an abandoned pull request at https://github.com/google/codeworld/pull/545, which might still contain some bits you can salvage.

cdsmith avatar Aug 18 '21 02:08 cdsmith

Just an update on that. Unexpectedly just received more work starting right away. Will keep it in mind and if there's time will continue looking into it. Its just not a high priority for the time being.

Could be the recent activity gets some fresh interest in it though so never know :-)

CodeFunction avatar Aug 24 '21 19:08 CodeFunction

@cdsmith I can use mit app inventor to create gui mobile apps and install them on android. Glide Apps is also good for creating android apps and desktop apps using spreadsheets or self created data. Please specify which type of app you want and I would make it for you using any of these two.

ayushkumar63123 avatar Nov 30 '21 11:11 ayushkumar63123