Skip to content

Option to export projects to Android and/or iOS #22

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
cdsmith opened this issue Jun 25, 2014 · 11 comments
Open

Option to export projects to Android and/or iOS #22

cdsmith opened this issue Jun 25, 2014 · 11 comments
Labels
discussion Needs more information or major design decisions

Comments

@cdsmith
Copy link
Collaborator

cdsmith commented Jun 25, 2014

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.
@denim2x
Copy link

denim2x commented Jan 20, 2017

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...)

@cdsmith
Copy link
Collaborator Author

cdsmith commented Jan 20, 2017

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
Copy link
Collaborator Author

cdsmith commented Jan 20, 2017

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
Copy link
Collaborator Author

cdsmith commented Mar 7, 2017

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.

@alphalambda
Copy link
Contributor

alphalambda commented Mar 7, 2017 via email

@ghost
Copy link

ghost commented Apr 30, 2017

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.

@cdsmith
Copy link
Collaborator Author

cdsmith commented Apr 30, 2017

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.

@CodeFunction
Copy link

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.

@cdsmith
Copy link
Collaborator Author

cdsmith commented Aug 18, 2021

@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 #545, which might still contain some bits you can salvage.

@CodeFunction
Copy link

CodeFunction commented Aug 24, 2021

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 :-)

@ayushkumar63123
Copy link

@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.

nimec01 added a commit to nimec01/codeworld that referenced this issue Oct 28, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
discussion Needs more information or major design decisions
Projects
None yet
Development

No branches or pull requests

5 participants