Difference between revisions of "Preware Design"

From WebOS Internals
Jump to navigation Jump to search
(added licences)
m (removed outdated image)
 
(35 intermediate revisions by 4 users not shown)
Line 1: Line 1:
{{reorganize|This is a discussion and design page.  If you add comments or notes or edits, please indent them using the '''": line"''' or '''":: line"''' technique and sign them with four tildes ˜˜˜˜ (just hit the "insert signature" button)  which produces a signature like this: [[User:Rboatright|rboatright]] 04:27, 29 July 2009 (UTC)}}
+
This app is to be a front end to the [[Preware Repository Description|Preware open-source Mojo repository]], the webOS-internals project to supply end users with applications, plugins, and updates thereof all in one user-friendly place.
  
== Rick's Intro to why this is Important ==
+
== Why this is Important ==
  
 
This morning (25 July 2009) after my morning OA meeting, at coffee I ran a set of paper prototypes of a gui appstore front end for the webos-internals ipkg feed past a group of women aged 45 to 72 who had not previously used a Pre.  
 
This morning (25 July 2009) after my morning OA meeting, at coffee I ran a set of paper prototypes of a gui appstore front end for the webos-internals ipkg feed past a group of women aged 45 to 72 who had not previously used a Pre.  
Line 41: Line 41:
  
 
http://gitorious.org/webos-applications/installer
 
http://gitorious.org/webos-applications/installer
 
== Suggestions ==
 
 
: For the first screenshot I think it would be best if we made it so that the buttons resize. No scrolling in any form even if there notifications below it.
 
  
 
== Development help ==  
 
== Development help ==  
Line 54: Line 50:
 
You will need to register an ssh key with gitorious.  If you've never done that, a walk through is available at http://nathanj.github.com/gitguide/  Substitute gitorious.org for github in the instructions.
 
You will need to register an ssh key with gitorious.  If you've never done that, a walk through is available at http://nathanj.github.com/gitguide/  Substitute gitorious.org for github in the instructions.
  
== Preware ==
+
== Name ==
  
 
The "Pre" in "Preware" does not refer to the Palm Pre, it refers to "before" as far as app testing goes, and is a pun on "Freeware"
 
The "Pre" in "Preware" does not refer to the Palm Pre, it refers to "before" as far as app testing goes, and is a pun on "Freeware"
  
== Licences ==
+
==Service==
 +
 
 +
The binary service that  Preware will talk to is specified in [[IPKG Service]].
 +
 
 +
== Submissions ==
  
* Apache-2.0
+
Submissions will have their icons ripped out for application use.
* BSD
 
* CDDL
 
* CPL-1.0
 
* GPL-3
 
* LGPL-3
 
* MIT
 
* MPL-1.1
 
  
== Application ==
+
=== Licenses ===
 +
Name              id
 +
Apache-2.0        apache2.0
 +
BSD                bsd
 +
CDDL              cddl
 +
CPL-1.0            cpl1.0
 +
GPL-2              gpl2.0
 +
GPL-3              gpl3.0
 +
LGPL-3            lgpl3.0
 +
MIT                mit
 +
MPL-1.1            mpl1.1
  
(Images will be updated below as suggestions come in, wiki forces cache so CTRL+SHIFT+R in modern browsers)
+
=== Legal Acceptance on Submission ===
  
[[Image:OPS_App_Mockup1.png]]
+
I hereby... fill in this with the legal stuff
  
 
== Site ==
 
== Site ==
  
 
[[Image:OPS_Mockup.png]]
 
[[Image:OPS_Mockup.png]]
 +
 +
== Removing Applications ==
 +
 +
Main thing to include is a way to keep track of applications that depend on certain plugins. We cannot have users uninstalling plugins that are required for an installed app to run.
  
 
== IPKG Feed ==
 
== IPKG Feed ==
  
The standard IPKG feed will be accessible by everyone.
+
The standard IPKG feed used by everyone is below (double line breaks between all applications listed).
 +
 
 +
<source lang="text">
 +
Package: com.domain.appname
 +
Version: 0.0.4
 +
Section: web
 +
Architecture: all
 +
Maintainer: Name <email@email.com>
 +
MD5Sum: 7de15816099657de0e520bb81963df89
 +
Size: 146276
 +
Filename: com.domain.appname_0.0.4_all.ipk
 +
Source: http://www.domain.com/com.domain.appname_0.0.4_all.ipk
 +
Description: App Description
 +
</source>
 +
 
  
 
== XML Feeds ==
 
== XML Feeds ==
 +
 +
Remember that this feed can read from other sources so http:// are required.
  
 
=== Application Feed (List/Filtered) ===
 
=== Application Feed (List/Filtered) ===
<syntaxhighlight lang="html4strict">
+
<syntaxhighlight lang="xml">
 
<?xml version="1.0" encoding="UTF-8"?>
 
<?xml version="1.0" encoding="UTF-8"?>
 
<preware>
 
<preware>
     <applications>
+
     <applications amount="20" page="1">
 
         <application id="41">
 
         <application id="41">
 
             <package>appname</package>
 
             <package>appname</package>
 
             <version>1.0.0</version>
 
             <version>1.0.0</version>
 
             <name>Application Name</name>
 
             <name>Application Name</name>
             <firmware>1.1.0</firmware>
+
             <icon>http://d.com/img.png</icon>
             <maintainer>John Doe &#60;email@domain.com&#62;</maintainer>
+
            <webosversion>
 +
                <min>1.0.3</min>
 +
                <max>1.1</max>
 +
            </webosversion>
 +
             <maintainer id="42">
 +
                <name>John Doe</name>
 +
                <email>email@domain.com</email>
 +
            </maintainer>
 +
            <license id="mit">MIT</license>
 
             <architecture>all</architecture>
 
             <architecture>all</architecture>
             <filename>com.domain_app_appname_1.0.0_all.ipk</filename>
+
             <filename>http://d.com/com.domain_app_appname_1.0.0_all.ipk</filename>
 
             <md5sum>325ca724c05288eb182dd7ebdd493926</md5sum>
 
             <md5sum>325ca724c05288eb182dd7ebdd493926</md5sum>
 
             <size>123456</size>
 
             <size>123456</size>
Line 108: Line 139:
  
 
=== Application View ===
 
=== Application View ===
<syntaxhighlight lang="html4strict">
+
<syntaxhighlight lang="xml">
 
<?xml version="1.0" encoding="UTF-8"?>
 
<?xml version="1.0" encoding="UTF-8"?>
 
<preware>
 
<preware>
Line 116: Line 147:
 
             <version>1.0.0</version>
 
             <version>1.0.0</version>
 
             <name>Application Name</name>
 
             <name>Application Name</name>
             <firmware>1.1.0</firmware>
+
             <icon>http://d.com/img.png</icon>
             <maintainer>John Doe &#60;email@domain.com&#62;</maintainer>
+
            <webosversion>
 +
                <min>1.0.3</min>
 +
                <max>1.1</max>
 +
            </webosversion>
 +
             <maintainer id="42">
 +
                <name>John Doe</name>
 +
                <email>email@domain.com</email>
 +
            </maintainer>
 +
            <license id="mit">MIT</license>
 
             <architecture>all</architecture>
 
             <architecture>all</architecture>
             <filename>com.domain_app_appname_1.0.0_all.ipk</filename>
+
             <filename>http://d.com/com.domain_app_appname_1.0.0_all.ipk</filename>
 
             <md5sum>325ca724c05288eb182dd7ebdd493926</md5sum>
 
             <md5sum>325ca724c05288eb182dd7ebdd493926</md5sum>
 
             <size>123456</size>
 
             <size>123456</size>
Line 138: Line 177:
  
 
=== Plugin View ===
 
=== Plugin View ===
<syntaxhighlight lang="html4strict">
+
<syntaxhighlight lang="xml">
 
<?xml version="1.0" encoding="UTF-8"?>
 
<?xml version="1.0" encoding="UTF-8"?>
 
<preware>
 
<preware>
Line 146: Line 185:
 
             <version>1.0.0</version>
 
             <version>1.0.0</version>
 
             <name>Plugin Name</name>
 
             <name>Plugin Name</name>
             <firmware>1.1.0</firmware>
+
             <icon>http://d.com/img.png</icon>
             <maintainer>John Doe &#60;email@domain.com&#62;</maintainer>
+
            <webosversion>
 +
                <min>1.0.3</min>
 +
                <max>1.1</max>
 +
            </webosversion>
 +
             <maintainer id="42">
 +
                <name>John Doe</name>
 +
                <email>email@domain.com</email>
 +
            </maintainer>
 +
            <license id="mit">MIT</license>
 
             <architecture>all</architecture>
 
             <architecture>all</architecture>
             <filename>com.domain_app_appname_1.0.0_all.ipk</filename>
+
             <filename>http://d.com/com.domain_plug_pluginname_1.0.0_all.ipk</filename>
 
             <md5sum>325ca724c05288eb182dd7ebdd493926</md5sum>
 
             <md5sum>325ca724c05288eb182dd7ebdd493926</md5sum>
 
             <size>123456</size>
 
             <size>123456</size>
Line 169: Line 216:
 
=== Review (to Applications / Plugins) ===
 
=== Review (to Applications / Plugins) ===
  
<syntaxhighlight lang="html4strict">
+
<syntaxhighlight lang="xml">
 
<?xml version="1.0" encoding="UTF-8"?>
 
<?xml version="1.0" encoding="UTF-8"?>
 
<preware>
 
<preware>
Line 175: Line 222:
 
     <message id="420" type="review">
 
     <message id="420" type="review">
 
       <user id="10">FooBar</user>
 
       <user id="10">FooBar</user>
       <comment>A long comment split it somewhere.</comment>
+
       <text>A+++ would download again</text>
 
     </message>
 
     </message>
 
   </messages>
 
   </messages>
Line 182: Line 229:
  
 
=== Comment (tbd) ===
 
=== Comment (tbd) ===
<syntaxhighlight lang="html4strict">
+
<syntaxhighlight lang="xml">
 
<?xml version="1.0" encoding="UTF-8"?>
 
<?xml version="1.0" encoding="UTF-8"?>
 
<preware>
 
<preware>
   <messages to="424" type="comment">
+
   <messages>
     <message id="420">
+
     <message id="420" type="comment">
 
       <user id="10">FooBar</user>
 
       <user id="10">FooBar</user>
       <comment>A long comment split it somewhere.</comment>
+
       <text>freezes every second tuesday when bluetooth is enabled</text>
 
     </message>
 
     </message>
 
   </messages>
 
   </messages>
Line 211: Line 258:
  
 
Yea this section needs major input.
 
Yea this section needs major input.
 +
 +
pDNS = Project Reversed DNS
  
 
<source lang="text">
 
<source lang="text">
# Full List IPKG
+
.org/feed/                                                          # IPKG Full List
  preware.org/feed/
+
.org/feed/xml/                                                      # XML Full List (will freeze device)
 
+
.org/feed/xml/category/                                              # XML Categories List
# XML files for application use (full list)
+
.org/feed/xml/category/Games/                                        # XML Categories List Specific
 +
.org/feed/xml/<pDNS>/                                                # XML Application & Plugin Specific
 +
.org/feed/xml/search/?q=string[&filters]                            # XML Search
 +
.org/feed/xml/search/?q=search+string&category=Games&user=12        # XML Search Example
 +
.org/feed/xml/search/search+string/user/12/category/Games,Utilities/ # XML Search Example URL Filtered All
 +
.org/feed/xml/search/search+string/page/1/limit/20/                  # XML Search View Page 1
 +
.org/feed/xml/message/23/                                            # XML Application Reviews & Comment
  
# XML Categories List
+
Filters:
  preware.org/feed/xml/category/
+
/page/#/
# XML Categories List Specific, encode spaces with (%20)
+
/category/Games,Utilities/
  preware.org/feed/xml/category/games/
+
/user/#/
# XML Application Specific
+
/architecture/i686/
  preware.org/feed/xml/type/application/23/
 
# XML Application Specific
 
  preware.org/feed/xml/type/plugin/23/
 
# XML Application Reviews
 
  preware.org/feed/xml/reviews/23/
 
 
</source>
 
</source>

Latest revision as of 02:01, 2 December 2009

This app is to be a front end to the Preware open-source Mojo repository, the webOS-internals project to supply end users with applications, plugins, and updates thereof all in one user-friendly place.

Why this is Important

This morning (25 July 2009) after my morning OA meeting, at coffee I ran a set of paper prototypes of a gui appstore front end for the webos-internals ipkg feed past a group of women aged 45 to 72 who had not previously used a Pre.

Each of them had the chance to go into launcher, bring up an app, run it, go into the app store, look around, etc before starting the prototyping session.

First, as a group they all hated the palm appstore. They disliked the horizontal scrollers at the top, they disliked the scrolling aspect of the entire page. They wanted much more clear indications that a scroll was available, but they thought that a thinner leaner first page would be much better.

After 30 minutes of the group tearing up 4x6 cards and scribbling new ones, we ended up with the following decisions which I pass along.

  • the first scene should have 5 selections
    • Upgrade your installed apps
    • Patches for existing apps
    • WebOS applications
    • Delete things you have installed
    • Alpha list of everything

each of those opens a new scene. along the bottom of the scene is a fixed button bar with on the left, an INSTALL button, in the center a BACK button and on the right a DELETE button

that button bar is ALWAYS there except on scene 1. They know and understand the back gesture, but they liked the idea of a back button even so, and since there was a space, why not?

the install and delete buttons dim out or come live as appropriate.

They were divided on the subject of keeing a banner for the app store at the top of the screen, some liked the idea of a HOME button. Some did not and wanted the space for the lists and said "banner only on the home page.


Each subsidiary screen brings up a list of apps. that list scrolls in the space ABOVE the button bar. Tapping an ap brings up the long description of the app and enables the install or delete button as is appropriate.

The graphical design should be very VERY clean and not busy. It was a major complaint about the Palm app store that it was too busy.

Templarian's mockup for the PreWare home page is a really good basis to work from, and it would be good if the gui app resembled the submission and management page. It will change depending on comments here.

I thought this would give us a starting place

- Rick

Project Repository

http://gitorious.org/webos-applications/installer

Development help

PreWare is being developed as an open source project. We really want help on the development of this app! The source of the application is available at http://gitorious.org/webos-applications/installer

Anyone can check out a copy. If you would like check in privlidges, simply message Rboatright or Templarian on their talk pages.

You will need to register an ssh key with gitorious. If you've never done that, a walk through is available at http://nathanj.github.com/gitguide/ Substitute gitorious.org for github in the instructions.

Name

The "Pre" in "Preware" does not refer to the Palm Pre, it refers to "before" as far as app testing goes, and is a pun on "Freeware"

Service

The binary service that Preware will talk to is specified in IPKG Service.

Submissions

Submissions will have their icons ripped out for application use.

Licenses

Name               id
Apache-2.0         apache2.0
BSD                bsd
CDDL               cddl
CPL-1.0            cpl1.0
GPL-2              gpl2.0
GPL-3              gpl3.0
LGPL-3             lgpl3.0
MIT                mit
MPL-1.1            mpl1.1

Legal Acceptance on Submission

I hereby... fill in this with the legal stuff

Site

OPS Mockup.png

Removing Applications

Main thing to include is a way to keep track of applications that depend on certain plugins. We cannot have users uninstalling plugins that are required for an installed app to run.

IPKG Feed

The standard IPKG feed used by everyone is below (double line breaks between all applications listed).

<source lang="text"> Package: com.domain.appname Version: 0.0.4 Section: web Architecture: all Maintainer: Name <email@email.com> MD5Sum: 7de15816099657de0e520bb81963df89 Size: 146276 Filename: com.domain.appname_0.0.4_all.ipk Source: http://www.domain.com/com.domain.appname_0.0.4_all.ipk Description: App Description </source>


XML Feeds

Remember that this feed can read from other sources so http:// are required.

Application Feed (List/Filtered)

<syntaxhighlight lang="xml"> <?xml version="1.0" encoding="UTF-8"?> <preware>

   <applications amount="20" page="1">
       <application id="41">
           <package>appname</package>
           <version>1.0.0</version>
           <name>Application Name</name>
           <icon>http://d.com/img.png</icon>
           <webosversion>
               <min>1.0.3</min>
               <max>1.1</max>
           </webosversion>
           <maintainer id="42">
               <name>John Doe</name>
               <email>email@domain.com</email>
           </maintainer>
           <license id="mit">MIT</license>
           <architecture>all</architecture>
           <filename>http://d.com/com.domain_app_appname_1.0.0_all.ipk</filename>
           <md5sum>325ca724c05288eb182dd7ebdd493926</md5sum>
           <size>123456</size>
           <category>Utilities</category>
           <source>http://www.preware.org/41/</source>
       </application>
   </applications>

</preware> </syntaxhighlight>

Application View

<syntaxhighlight lang="xml"> <?xml version="1.0" encoding="UTF-8"?> <preware>

   <applications>
       <application id="41">
           <package>appname</package>
           <version>1.0.0</version>
           <name>Application Name</name>
           <icon>http://d.com/img.png</icon>
           <webosversion>
               <min>1.0.3</min>
               <max>1.1</max>
           </webosversion>
           <maintainer id="42">
               <name>John Doe</name>
               <email>email@domain.com</email>
           </maintainer>
           <license id="mit">MIT</license>
           <architecture>all</architecture>
           <filename>http://d.com/com.domain_app_appname_1.0.0_all.ipk</filename>
           <md5sum>325ca724c05288eb182dd7ebdd493926</md5sum>
           <size>123456</size>
           <category>Utilities</category>
           <source>http://www.preware.org/41/</source>
           <depends>
               <depend id="20" type="plugin">
                   <package>pluginname</package>
                   <version>1.0.0</version>
                   <name>FileIO</name>
               </depend>
           </depends>
           <description>A long description</description>
       </application>
   </applications>

</preware> </syntaxhighlight>

Plugin View

<syntaxhighlight lang="xml"> <?xml version="1.0" encoding="UTF-8"?> <preware>

   <applications>
       <application id="20">
           <package>pluginname</package>
           <version>1.0.0</version>
           <name>Plugin Name</name>
           <icon>http://d.com/img.png</icon>
           <webosversion>
               <min>1.0.3</min>
               <max>1.1</max>
           </webosversion>
           <maintainer id="42">
               <name>John Doe</name>
               <email>email@domain.com</email>
           </maintainer>
           <license id="mit">MIT</license>
           <architecture>all</architecture>
           <filename>http://d.com/com.domain_plug_pluginname_1.0.0_all.ipk</filename>
           <md5sum>325ca724c05288eb182dd7ebdd493926</md5sum>
           <size>123456</size>
           <category>Utilities</category>
           <source>http://www.preware.org/41/</source>
           <applications>
               <application id="20">
                   <type>plugin</type>
                   <version>1.0.0</version>
                   <name>FileIO</name>
               </application>
           </applications>
           <description>A long description</description>
       </application>
   </applications>

</preware> </syntaxhighlight>

Review (to Applications / Plugins)

<syntaxhighlight lang="xml"> <?xml version="1.0" encoding="UTF-8"?> <preware>

 <messages>
   <message id="420" type="review">
     <user id="10">FooBar</user>
     <text>A+++ would download again</text>
   </message>
 </messages>

</preware> </syntaxhighlight>

Comment (tbd)

<syntaxhighlight lang="xml"> <?xml version="1.0" encoding="UTF-8"?> <preware>

 <messages>
   <message id="420" type="comment">
     <user id="10">FooBar</user>
     <text>freezes every second tuesday when bluetooth is enabled</text>
   </message>
 </messages>

</preware> </syntaxhighlight>

Address Structures

Site

I don't know how much of this we can really change, I think Drupal could be rather strict.

<source lang="text">

  1. Application Page
 preware.org/packagename/
  1. .ipk uses direct id
 preware.org/41/filenameto.ipk
 preware.org/

</source>

Feeds

Yea this section needs major input.

pDNS = Project Reversed DNS

<source lang="text"> .org/feed/ # IPKG Full List .org/feed/xml/ # XML Full List (will freeze device) .org/feed/xml/category/ # XML Categories List .org/feed/xml/category/Games/ # XML Categories List Specific .org/feed/xml/<pDNS>/ # XML Application & Plugin Specific .org/feed/xml/search/?q=string[&filters] # XML Search .org/feed/xml/search/?q=search+string&category=Games&user=12 # XML Search Example .org/feed/xml/search/search+string/user/12/category/Games,Utilities/ # XML Search Example URL Filtered All .org/feed/xml/search/search+string/page/1/limit/20/ # XML Search View Page 1 .org/feed/xml/message/23/ # XML Application Reviews & Comment

Filters: /page/#/ /category/Games,Utilities/ /user/#/ /architecture/i686/ </source>