# Frequently Asked Questions

## General

### What is Mosis?

Mosis is a virtual smartphone OS for VR games and applications. It provides a phone-like device that users can interact with inside VR environments, complete with real smartphone functionality.

### Who can develop apps for Mosis?

Anyone! Sign up for a free developer account to start building apps. There's no fee to register or submit apps.

### What can I build with Mosis?

You can build any app that works on a phone screen:
- Utilities (calculators, converters, timers)
- Productivity (notes, to-do lists, calendars)
- Games (puzzles, casual games)
- Entertainment (media players, readers)
- Social apps (chat, messaging)
- And more!

### How do users get my app?

Users discover and install apps through the Mosis App Store, which is built into the virtual phone. Published apps appear in store listings where users can browse, search, and install.

## Development

### What languages/technologies do I need to know?

Mosis apps use:
- **RML** - Similar to HTML for structure
- **RCSS** - Similar to CSS for styling
- **Lua** - Lightweight scripting language for logic

If you know HTML/CSS, you'll find RML/RCSS very familiar. Lua is simple to learn and has many tutorials available.

### Can I use JavaScript instead of Lua?

No, Mosis uses Lua for scripting. Lua was chosen for its:
- Lightweight footprint
- Easy sandboxing for security
- Simple learning curve
- Fast execution

### Can I use React/Vue/Angular?

No, Mosis uses its own RML/RCSS system based on RmlUi. Standard web frameworks won't work, but the concepts are similar enough that web developers can adapt quickly.

### What IDEs are supported?

Use any text editor! VS Code is recommended with these extensions:
- Lua Language Server
- XML/HTML tools for RML editing

### Is there a visual designer?

The Desktop Designer provides:
- Live preview of your app
- Hot reload on file changes
- Hierarchy inspection
- Screenshot capture

It's included in your developer tools download.

### Can I test on a real device?

Yes! You can:
1. Install the Designer on your PC
2. Build a .mosis package
3. Sideload onto a VR device with MosisService installed

### How large can my app be?

The maximum package size is **10MB**. This is plenty for most apps. If you need more:
- Optimize images (use TGA format)
- Remove unused assets
- Load large data from the network

### Can I use external APIs?

Yes, with the `network` permission. Make HTTPS requests to any API:

```lua
http.get("https://api.example.com/data", function(response)
    local data = json.decode(response.body)
end)
```

### Can I access the device camera/microphone?

Yes, with the appropriate permissions:
- `camera` - For photo capture
- `microphone` - For audio recording

Users will be prompted to grant access.

### Can my app run in the background?

Currently, apps only run when visible. Background execution is planned for future versions.

### Can I access native device features?

Mosis apps are sandboxed for security. Available device features:
- Storage
- Network
- Camera (with permission)
- Microphone (with permission)
- Clipboard
- Notifications

Direct hardware access (Bluetooth, USB, etc.) is not available.

## Publishing

### How long does review take?

Most apps are reviewed within 24-48 hours. Apps requesting sensitive permissions may take longer.

Automated checks run instantly. Manual review is triggered for:
- First-time developers
- Sensitive permissions
- Flagged content

### Why was my app rejected?

Check the rejection reason in your dashboard. Common reasons:
- Crashes on launch
- Missing required assets
- Policy violations
- Inappropriate content
- Misleading metadata

### Can I update my app?

Yes! Submit a new version with:
- Higher `version_code`
- Updated `version` string
- Release notes

Updates go through the same review process.

### Can I remove my app from the store?

Yes, go to your app's settings and choose "Unpublish". Users who installed it can keep using it, but it won't appear in searches.

### Can I have paid apps?

Currently, all apps are free. Paid apps and in-app purchases are planned for future versions.

### What's the revenue share?

When monetization launches, the split will be:
- **70%** to developers
- **30%** to Mosis platform

### Can I distribute outside the store?

Yes, you can share `.mosis` files directly. However:
- Users must enable sideloading
- Updates won't be automatic
- No store discoverability

## Technical

### What RML/RCSS version is supported?

Mosis uses RmlUi 6.x. The [UI Design Guide](guides/ui-design.md) covers supported features. Not all CSS3 features are available.

### What Lua version is supported?

Lua 5.4 with some restrictions for sandboxing. See the [Lua Scripting Guide](guides/lua-scripting.md) for details.

### Are there size limits for storage?

Each app has 5MB of local storage. For more data, use network storage.

### Can I use databases?

Use the `storage` API for key-value storage. SQLite is not directly available, but you can:
- Store JSON data
- Use a remote database via network

### How do I handle different screen sizes?

Design for the standard phone screen (1080x1920 logical pixels). Use:
- `dp` units for consistent sizing
- Flexbox for flexible layouts
- Percentage widths for adaptability

### Can I create multiple screens?

Yes, use the navigation system:

```lua
navigateTo("settings")  -- Load settings.rml
goBack()                -- Return to previous screen
```

### Can apps communicate with each other?

Currently, apps are isolated. Inter-app communication is planned for future versions.

### What happens if my app crashes?

Crashes are caught by the sandbox. The user sees an error message and can restart. Crash reports are sent to your analytics dashboard (if telemetry is enabled).

### Can I access the file system?

No direct file system access. Use:
- `storage` API for persisted data
- Bundled assets for static files
- `http` API for remote files

## Account & Legal

### Is there a developer fee?

No, developer accounts are free. There's no cost to register, develop, or publish apps.

### Can I transfer my app to another developer?

Contact support to request a transfer.

### What content is not allowed?

- Malware or security exploits
- Hate speech or discrimination
- Adult content (unless properly rated)
- Copyright infringement
- Privacy violations
- Impersonation of other apps/brands

See the full content policy in your developer agreement.

### Do I need a privacy policy?

You need a privacy policy if your app:
- Collects user data
- Uses analytics
- Makes network requests
- Accesses contacts, location, etc.

### Who owns the IP for my app?

You retain all intellectual property rights to your app. By publishing on Mosis, you grant a license to distribute it through the store.

### Can I use open source code?

Yes, but respect the licenses:
- MIT, BSD, Apache: Generally safe
- GPL: May require source distribution
- Proprietary: Check terms carefully

## More Questions?

If your question isn't answered here:

1. Check the [Troubleshooting](troubleshooting.md) guide
2. Search the developer forum
3. Contact support through your dashboard

## See Also

- [Getting Started](getting-started.md) - Create your first app
- [Troubleshooting](troubleshooting.md) - Common problems and solutions
- [API Reference](api/lua-api.md) - Complete API documentation
