Index: sky/sdk/README.md |
diff --git a/sky/sdk/README.md b/sky/sdk/README.md |
index 4b3f554985cfe4b8ee46e2da13e300e14afc390a..be6bcb0a28c8f8873c360bb6feb7ca381f046d5b 100644 |
--- a/sky/sdk/README.md |
+++ b/sky/sdk/README.md |
@@ -1,11 +1,76 @@ |
-Sky SDK |
-======= |
+Sky |
+=== |
+ |
+Sky is an experimental, high-performance UI framework for mobile apps. Sky helps |
+you create apps with beautiful user interfaces and high-quality interactive |
+design that run smoothly at 120 Hz. |
+ |
+Sky consists of two components: |
+ |
+1. *The Sky engine.* The engine is the core of the system system. Written in |
+ C++, the engine provides the muscle of the Sky system. The engine provides |
+ several primitives, including a soft real-time scheduler and a hierarchial, |
+ retained-mode graphics system, that let you build high-quality apps. |
+ |
+2. *The Sky framework.* The [framework](packages/sky/lib/framework) makes it |
+ easy to build apps using Sky by providing familiar user interface widgets, |
+ such as buttons, infinite lists, and animations, on top of the engine using |
+ Dart. These extensible components follow a functional programming style |
+ inspired by [React](http://facebook.github.io/react/). |
We're still iterating on Sky heavily, which means the framework and underlying |
engine are both likely to change in incompatible ways several times, but if |
you're interested in trying out the system, this document can help you get |
started. |
+Examples |
+-------- |
+ |
+The simplest Sky app is, appropriately, HelloWorldApp: |
+ |
+```dart |
+import 'package:sky/framework/fn.dart'; |
+ |
+class HelloWorldApp extends App { |
+ Node build() { |
+ return new Text('Hello, world!'); |
+ } |
+} |
+ |
+void main() { |
+ new HelloWorldApp(); |
+} |
+``` |
+ |
+Execution starts in `main`, which creates the `HelloWorldApp`. The framework |
+then marks `HelloWorldApp` as dirty, which schedules it to build during the next |
+animation frame. Each animation frame, the framework calls `build` on all the |
+dirty components and diffs the virtual `Node` hierarchy returned this frame with |
+the hierarchy returned last frame. Any differences are then applied as mutations |
+to the physical heiarchy retained by the engine. |
+ |
+For more examples, please see the [examples directory](examples/). |
+ |
+Services |
+-------- |
+ |
+Sky apps can access services from the host operating system using Mojo. For |
+example, you can access the network using the `network_service.mojom` interface. |
+Although you can use these low-level interfaces directly, you might prefer to |
+access these services via libraries in the framework. For example, the |
+`fetch.dart` library wraps the underlying `network_service.mojom` in an |
+ergonomic interface: |
+ |
+```dart |
+import 'package:sky/framework/net/fetch.dart'; |
+ |
+void main() { |
+ fetch('example.txt').then((Response response) { |
+ print(response.bodyAsString()); |
+ }); |
+} |
+``` |
+ |
Set up your computer |
-------------------- |
@@ -18,8 +83,8 @@ Set up your computer |
3. Install the Sky SDK: |
- ``git clone https://github.com/domokit/sky_sdk.git`` |
-4. Ensure sure $DART_SDK is set to the path of your Dart SDK and 'adb' |
- (inside 'platform-tools' in the android sdk) is in your $PATH. |
+4. Ensure sure $DART_SDK is set to the path of your Dart SDK and 'adb' |
+ (inside 'platform-tools' in the android sdk) is in your $PATH. |
Set up your device |
------------------ |
@@ -38,7 +103,7 @@ of the Android operating system. |
Running a Sky application |
------------------------- |
-1. ``sky_sdk/bin/sky --install sky_sdk/examples/index.sky`` |
+1. ``packages/sky/lib/sky_tool --install examples/stocks/main.sky`` |
The --install flag is only necessary the first time to install SkyDemo.apk. |
2. Use ``adb logcat`` to view any errors or Dart print() output from the app. |