Code Monkey home page Code Monkey logo

openwebapps's Introduction

PreRequisite

  • Firefox
  • Python
  • Git
  • make

Getting setup

To pull and run openwebapps addon:

git clone https://github.com/mozilla/openwebapps
cd openwebapps
make pull
make run

You can build an xpi:

make xpi

You can run the tests:

make test

If you want to run (using make run) in a specific profile:

OWA_PROFILE=/path/to/firefox/profile make run

Tests cannot be run in a specific profile.

Prepare your firefox profile

You probably want a test firefox profile so open up the Profile Manager.

In the Mac:

/Applications/Firefox.app/Contents/MacOS/firefox -ProfileManager

On Windows:

firefox.exe -P

In the profile manager, create a profile with the name fxsharetest, then exit the profile manager.

Repository Layout

This is an experiment around installable web applications. What you'll find here:

addons/
Addons for different browsers that provide better support for web applications: including new features (like search and notification support) and better integration into browser UI.
docs/
Documentation, including an in-depth discussion of the design and goals of the project.
example/
An example that shows how to integrate myapps javascript libraries to allow a site author to trigger an installation of their application.
harness/
Files related to setting up a local develoment environment. Currently a nodejs script that will allow you to run a webserver that serves up the various sites contained here.
site/
The "myapps" website. To the end user this site is a location where they can launch their application dashboard. To the developer this is the domain under which several javascript libraries are hosted that allow interaction with the user's applications. Site nightlies are hosted at https://myapps.mozillalabs.com
store/
The "appstore" website, implemented as a Python webserver. Implements a demonstration application store that performs authentication of users and provides "proof-of-purchase" assertions to applications. No real payment processing is performed. Hosted at https://appstore.mozillalabs.com.

LICENSE

All files that are a part of this project, except where explicitly noted, are covered by The following license:

Version: MPL 1.1/GPL 2.0/LGPL 2.1

The contents of this file are subject to the Mozilla Public License Version 
1.1 (the "License"); you may not use this file except in compliance with 
the License. You may obtain a copy of the License at 
http://www.mozilla.org/MPL/

Software distributed under the License is distributed on an "AS IS" basis,
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
for the specific language governing rights and limitations under the
License.

The Original Code is openwebapps.

The Initial Developer of the Original Code is Mozilla Foundation.

Portions created by the Initial Developer are Copyright (C) 2010
the Initial Developer. All Rights Reserved.

Contributor(s):

Alternatively, the contents of this file may be used under the terms of
either the GNU General Public License Version 2 or later (the "GPL"), or
the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
in which case the provisions of the GPL or the LGPL are applicable instead
of those above. If you wish to allow use of your version of this file only
under the terms of either the GPL or the LGPL, and not to allow others to
use your version of this file under the terms of the MPL, indicate your
decision by deleting the provisions above and replace them with the notice
and other provisions required by the GPL or the LGPL. If you do not delete
the provisions above, a recipient may use your version of this file under
the terms of any one of the MPL, the GPL or the LGPL.

openwebapps's People

Contributors

21echoes avatar anantn avatar benadida avatar billrest avatar dclarke avatar geraldo avatar ianb avatar jrburke avatar lloyd avatar mdabbagh avatar mhammond avatar michaelrhanson avatar mixedpuppy avatar ozten avatar timabraldes avatar ztamizzen avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

openwebapps's Issues

calling navigator.apps.install with relative url sets app "origin" to "undefined://"

Here's an example:

navigator.apps.install({
  url: "theband.webapp",
  onsuccess: function() {
    alert('OMG');
  },
  onerror: function(wtf) {
    console.log(wtf);
  }

Doing this results in the app manifest being retrieved properly and the app being installed, but once installed, if the user goes to the gear icon in Firefox's browser chrome and selects "Manage Apps", then "View Manifest" for the installed app, the "origin" key of the manifest is set to undefined://.

To work around this, we changed the url key to be an absolute URL.

define navigator.apps API for doing service invocation

Whatever the implementation is (jschannel, direct API injection, etc...), the approach for an OWA to register for certain services should be something like:

navigator.apps.services.registerHandler('login', 'doLogin', function(credentials, return_cb) {
   // do something

   // return the result
   result_cb({...});
})

update the dashboard

The HTML5 app dashboard should be updated for the new stable apis, and should have widget support.

publish stable docs on MDN

Stable API and manifest docs, as well as overview and perhaps issue #19 (how to build a store) should be moved to MDN. Remaining documentation in-tree should all be reviewed and edited for the integration release.

Screencast of native UA integration

To show some of the more advanced features of browser extensions and the android app we should put together a short screencast which demonstrates some of the most interesting features.

We may also want to include short preview of our upcoming "ux gallery", or we may want to break that into a separate 'cast...

rework services to use Jetpack panels

postMessage isn't working very nicely when the script is no longer truly chrome-privileged, so it's as good a time as any to rework the service discovery piece to use the more solid Jetpack libraries.

add smoothtransition service for apps

this will allow an app to receive a new URL that a user clicks on and have that app transition appropriately.

(It's not clear this is the behavior we want, but we're going to try it.)

Rename app -> manifest

A top level property of applications in local storage is 'app'. This actually holds the application manifest. Given that a second level key is also 'app', we should change this.

Firefox extension on AMO

The firefox extension should be published on AMO in preparation for integration release, and linked from the updated dashboard, so that interested folks can install it and try it out with minimal fuss.

default_locale should be optional

currently default_locale is a required field. Given that the only other required field is name, it seems someone silly.

proposal is to make default_locale optional except when the locales map is present. This way a simple manifest stays simple, but once a developer goes to do l10n, the locales dependency on default_locale will help the validator help them understand how l10n is intended to work.

FFX addon not working on OpenSuSE 11.3 64bit

Here's a report from a user:

  • When I install the plugin, the black gearwheel appears to the right of
    the search box as I presume it should...but on my OpenSuSE 11.3 64bit
    machine, clicking on the gearwheel produces a very brief flash of a
    black panel just below the gearwheel - then nothing.

disallow user@pass in manifest url.

urlmatch by default allows user@pass in all urls it handles. proposal is to normalize this away, or to throw hard errors when it is present.

Firefox extension mgmt permission errors

Installing applications with the Firefox extension, I cannot see them on the dashboard (at https://myapps.mozillalabs.com/) -- running navigator.apps.mgmt.list() seems to return a permission error:

["permissionDenied", "to access open web apps management apis, you must be on the same domain as the application repository"]

Don't open multiple tabs for managing webapps

Whenever you click on 'manage webapps' a new tab gets opened. Instead the tab has to be found which already has about:apps open. Have a look at the Add-ons Manager how it has been done.

Close notification panel after selecting an app or manage apps

When you open the notificiation panel by clicking the webapps button in the toolbar, and selecting an app or click on manage apps, the notification doesn't close. In nearly all the cases the user wants to directly switch to an application or to about:apps, and doesn't need that panel anymore right after. Currently it's in the way and annoying that you have to close it yourself.

Fix inject on session restore

Our injector runs too late to provide the navigator APIs to pages that load on session restore. We should fix this.

hide bookmarks bar on app tab?

By default, bookmark bar is not shown, but if user turns it on, should we forcefully hide it in app tabs? Probably, but needs discussion.

Document how to build a store

Given that we've migrated toward more abstract hooks for store authors, we should provide a walk through document to get potential store authors started.

Android app in a demoable state

It'd be useful to demo some of the features and interactions of the openwebapps android app for the integration release. It should be in a demoable state (and perhaps an .apk should be available for installation for those on the bleeding edge).

Package and host chrome extension

The chrome extension needs to be packaged and hosted and available for folks to try out. Probably should be distributed through new application dashboard.

describe whitespace meaning in description and name

Right now the description is just "human readable", but there's no indication about how newlines or multiple spaces should be handled.

I recommend:

  • The name is a single-line, and all whitespace is normalized to one space (i.e., newlines are equivalent to a space).
  • The description can contain newlines and whitespace, and both are preserved when displayed. That means in the HTML case that newlines are replaced with <br> and multiple spaces use &nbsp;. This allows, for example, simple indented lists.

Update demo applications

  • Mozillaball - The simplest possible application which demonstrates
    how an application can trigger installation, and how
    the app can check if it's installed (self-hosted case).
  • Task tracker - An application that demonstrates how purchase verification might work.
  • Manifest Builder - (proposed) A simple tool that lets you author and verify a openwebapps manifest.
  • Remove references to gmail app.

Create terminology document

I think it would be useful to have a document describing the terminology we are using. E.g.,:

  • "app"
  • "repository"
  • "HTML repository" (my proposed term for the HTML5-based repository implementation)
  • "browser-native repository" (UA-native?)
  • "Dashboard"
  • "Anonymous apps" (which kind of don't exist, and I think should be renamed anyway as I'm not clear how "anonymous" relates to the idea)

offer extension installation in app directory

Depending on the browser the user is using, we should offer extensions directly from the application directory (https://apps.mozillalabs.com/appdir/)

15:51 < davida> I'm concerned that people will make their way to the appstore w/o knowing about the add-on, but the experience w/ the add-on is so much better
15:51 < davida> so if it's not already done, i'd suggest detecting browsers that have add-ons available for them and upselling them in the appstore

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.