Developing Code Using Seattle

Developers have long lamented the programming interface provided by the network. It is clear that low-level sockets are not the ideal way to communicate and reason about execution on remote machines. Seattle makes developing networked applications easy and makes the power of cloud computing accessible to all developers. Seattle has a network- and resource-aware programming model that uses a subset of the Python language. This makes it easy to create applications and to integrate with existing code. Using Seattle is free and easy. Seattle helps developers support their application's popularity by having their computational resources scale with their user base.

Quick Links


Q: Are there any restrictions on how I use Seattle?
A: See our Acceptable Use Policy.

Q: What is Seattle Clearinghouse and how does it differ from Seattle?
A: Seattle is the core software that all users will run. Seattle Clearinghouse is a website that allows users to share Seattle resources. Some Seattle users may not want to share resources and thus will not use an installer from Seattle Clearinghouse.

Q: Who can access Seattle Clearinghouse resources to run Seattle programs?
A: Anyone. These vessels are publicly available.

Q: What is the difference between a Seattle program and a Seattle application.
A: If the end user means to install it, it's an application. If the end user is oblivious, it's a program. Each Seattle application is completely unrestricted. A user must try to install a Seattle application. The installation is done through an installer provided by the application developer. As such, the application can do whatever you want on the user's system. Seattle is simply acting like a library that you have access to. Your application installer must enable the sharing Seattle resources with other users. Seattle programs are encapsulated in a Seattle sandbox. They are run safely on user machines that may not have opted into running the application. This allows Seattle programs to be migrated and tested freely on any Seattle node.

Q: How do I integrate a Seattle application with my existing code base?
A: You can call Seattle code easily from Python. Of course, this isn't possible to do with Seattle programs as they aren't trusted to run anything but Seattle code.

Q: The reliance on Repy really limits what I can do. What about supporting programming language X?
A: We're working on a way to do this. More information to come.

Q: Is Seattle under active development?
A: Yes, we have around a dozen active developers.

Q: I want feature X added to the API or language. How do I get this changed?
A: We tend to be very, very cautious about API changes. We are very focused on security. If you are deploying a Seattle application, you can easily do whatever calls you like, but this requires end user opt-in.

Q: What's so great about Seattle?
A: It's designed to be safe and has resource isolation built in. Seattle has a minimal trusted computing base and hard resource allocation. Seattle also is built to allow applications to be perfectly portable. If you find any difference on a different OS, please tell us. We have gone to great pains to ensure Seattle is truly 'write once, run anywhere'. Seattle also allows networked access to other computational resources. Networked code execution and resource allocation are no longer second class citizens.

Q: Doesn't Java provide these characteristics? Isn't it "write once, run anywhere"?
A: No, not really. These were Java design goals, but the designers made trade-offs that sacrificed some of these ideals.

This material is based upon work supported by the National Science Foundation under Grant Numbers (0834243, 1205415, and 1223588). Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation.