Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

[doc] manual: partial rewrite of about

  • Loading branch information...
commit 07b32407638d2ab994ff99975785f11a0bba15a3 1 parent 91c787f
Henri Binsztok authored
Showing with 125 additions and 116 deletions.
  1. +125 −116 doc/book/about.adoc
View
241 doc/book/about.adoc
@@ -1,102 +1,107 @@
Introducing Opa
---------------
-Opa is a new generation of web development platform. It is a new programming
-language, a new web server, a new database and a new distributed execution
-engine, all of them tightly integrated to provide a great experience for web
-developers. And it works in the cloud too!
-
-Throughout the pages of this book, we will introduce you to all the neat
-features of Opa, and as you will see, there are many. To quote but a few, Opa is
-concise, simple and readable, it is also extremely powerful, concurrent,
-dynamically distributed, and secure, much more so than just about any
-other web programming language. Opa is designed to make web development fun, secure
-and _right_.
+This is a great time to be a developer: As a community, we are
+changing the world, every day, thanks to the web, the cloud and their
+myriads of applications. Web applications and technologies available
+to developers have evolved tremendously since the first days of the
+web.
+
+Opa is a new generation of web development platform that let you write
+distributed web applications using a single technology. Throughout
+the pages of this book, we will introduce you to all to the many
+features of Opa. To quote but a few, Opa is concise, simple,
+concurrent, dynamically distributed, and secure.
+
What problem does Opa solve?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-This is a great time to be a developer: as a community, we are changing the
-world, every day, thanks to the web, to the cloud and their myriads of
-applications. And indeed, web applications and the amount of technologies
-available to developers have evolved tremendously since the first days of the
-web.
+Unfortunately, the process of web application development has evolved
+neither quite as far nor nearly as fast. Indeed, developing a web
+application in 2011 is not so different from developing a PC
+application in 1991: an impressive amount of developer time is spent
+not working on features or improvements but on _gluing_ together
+antagonist technologies that were never designed to quite work
+together or in this context. In 1991, the technologies were the
+various hardware components, the low-level operating system, the
+high-level operating system and the memory itself, which could only be
+hacked into compliance through copious amounts of machine code. Per
+se, none of these technologies was wrong, but they just failed to fit
+together -- a problem now known as _impedence mismatch_.
+
+Today, the technologies involved include the various incompatible
+browsers, the server components or the database components, to quote
+but a few. As in 1991, none of these technologies is wrong, but they
+do not fit together. Because of this impedence mismatch, developers
+need to add to their application logic copious amounts of glue code
+just to get the components to agree on communication mechanisms and
+application-level protocols. Not only is this glue code tedious,
+repetitive and error-prone, but this is also where most safety and
+security issues arise.
+
+In 1991, the answer to impedence mismatch was Software Development
+Kits, and indeed these SDKs proved very useful at allowing developers
+to develop anything at all, but failed to address the underlying
+issues. This was only achieved later, through better operating
+systems, better development tools, and resulted in today's Java
+Platform, C#, Objective-C or Python, for instance.
+
+In 2011, web frameworks, both client-side and server-side, have the
+same role as the SDKs of the 1991s, with the same success but also the
+same shortcomings. But the problem remains: Building applications is
+hackish, relies on glue code and is barely reusable.
-Unfortunately, the process of web application development has evolved neither
-quite as far nor nearly as fast. Indeed, developing a web application in 2011 is
-not so different from developing a PC application in 1991: an impressive amount
-of developer time is spent not working on features or improvements but on
-_gluing_ together antagonist technologies that were never designed to quite work
-together or in this context. In 1991, the technologies were the various hardware
-components, the low-level operating system, the high-level operating system and
-the memory itself, which could only be hacked into compliance through copious
-amounts of machine code. Per se, none of these technologies was wrong, but they
-just failed to fit together -- a problem now known as _impedence mismatch_.
-
-Today, the technologies involved include the various incompatible browsers, the
-server components or the database components, to quote but a few. As in 1991,
-none of these technologies is wrong, but they do not fit together. Because of
-this impedence mismatch, developers need to add to their application logic
-copious amounts of glue code just to get the components to agree on
-communication mechanisms and application-level protocols. Not only is this
-glue code tedious, repetitive and error-prone, but this is also where most
-safety and security issues arise.
-
-In 1991, the answer to impedence mismatch was Software Development Kits, and
-indeed these SDKs proved very useful at allowing developers to develop anything
-at all, but failed to address the underlying issues. This was only achieved
-later, through better operating systems, better development tools, and resulted
-in today's Java Platform, C#, Objective-C or Python, for instance. In 2011, web
-frameworks, both client-side and server-side, have the same role as the SDKs of
-the 1991s, with the same success but also the same shortcomings.
-
-So, while it is a great time to be a developer, we wanted to make it a better time.
How Opa solves it
~~~~~~~~~~~~~~~~~
-With Opa, we set out to provide another, better, way of developing web applications
-for the cloud. Opa is designed to get you to your finished app faster,
-concentrating only on the interesting parts, without the hassle of writing the
-glue or of using a programming language against its original design; also
-without having to keep such a constant watch on low-level security issues.
-
-Opa is a programming language, but it is a programming language vastly more
-powerful than any programming language you have ever used. Opa offers all the
-features of a database management system, of a web server, of a server-side
-framework, of a client-side framework, of a distribution middleware, a security
-audit tool, but without the complexity of deployment, administration, or
-impedence mismatch of these technologies.
-
-Developing with Opa is as simple as it gets: first, write your code with the Opa
-programming language -- and only the Opa programming language, no JavaScript, no
-SQL, or anything such. Then compile the code, and let Opa analyze security,
-generate the code for the browser, for the server, for the database, and combine
-it with the web server. Finally, launch your executable and your browser, _et
-voilà_. No need to independently deploy, administer or maintain
-a database management system, a web server, frameworks or
-middleware. And, of course, the application works on any recent browser, whether
-mobile or desktop. Oh yes, and it is right away ``Cloud-ready''.
+With Opa, we set out to provide another, better, way of developing web
+applications for the cloud. Opa is designed to get you to your
+finished app faster, concentrating only on the interesting parts,
+without the hassle of writing the glue or of using a programming
+language against its original design; also without having to keep such
+a constant watch on low-level security issues.
+
+Opa is a programming language and a standard library comprising a
+database management system, a web server, a server-side framework, a
+client-side framework, a distribution middleware, a security audit
+tool, but without the complexity of deployment, administration, or
+impedence mismatch stemming from the use of many different
+technologies.
+
+Developing with Opa is as simple as it gets: First, write your code
+with the Opa programming language -- and only the Opa programming
+language, no JavaScript, no SQL, or anything such. Then compile the
+code, and let Opa analyze security, generate the code for the browser,
+for the server, for the database, and combine it with the web
+server. Finally, launch your executable and every browser, including
+mobile, can connect to your application. There is need to
+independently deploy, administer or maintain a database management
+system, a web server, frameworks or middleware. If you have lots of
+users, deploying in the cloud is just a command away.
+
+Simply put, Opa is a programming language and its runtime,
+designed to carry web developers from start to finish of their development,
+from early prototype to seamless deployment.
image::one_binary.png[]
What Opa is not
~~~~~~~~~~~~~~~
-While Opa offers all the features that developers have come to expect from a
-high-end web server, a high-end distributed database management system,
-frameworks or distribution engine, Opa does _not_ resemble Apache or Tomcat,
-MySQL or Oracle SQL, Drupal or Ruby on Rails, Google AppEngine or Hadoop.
-
-With a little effort, Opa could certainly be used to mimic some of these
-components, but that is not how or why Opa was designed. To this day, Opa does
-not offer a command-line database interface, or mechanisms to serve web pages
-from the file system. Opa is not a patch on top of a programming language, or a
-pure engine on top of which a selection of programming languages may be used.
+While Opa offers all the features that developers have come to expect
+from a high-end web server, a high-end distributed database management
+system, frameworks or distribution engine, Opa does _not_ resemble
+Apache or Tomcat, MySQL or Oracle SQL, Drupal or Ruby on Rails, Google
+AppEngine or Hadoop. With some effort, Opa could certainly be used to
+mimic some of these components, but that is not how or why Opa was
+designed.
-Opa is one technology, consisting of a programming language and its runtime,
-designed to carry web developers from start to finish of their development,
-from early prototype to seamless deployment.
+To this day, Opa does not offer a command-line database interface, or
+mechanisms to serve web pages from the file system. Opa is probably
+not well suited for writing embedded or desktop applications or
+anything else which does not run in the web.
What is it good for?
~~~~~~~~~~~~~~~~~~~~
@@ -104,41 +109,46 @@ What is it good for?
Opa was designed for all users, beginners or seasoned developers, students or
professionals, but not for all applications.
-Indeed, Opa was built from the bottom-up for _Cloud_ applications, and shines
-most with applications that require scalability, security, interactivity,
-real-time web and complex data manipulation.
-
-Think of a social application. Numerous users communicating in real-time by
-chat, e-mail, forums or other means, through a rich user interface, but also
-through web services that can be accessed by third-party websites or native
-mobile interfaces. Perhaps these users can even modify shared appointment tables
-or work on some documents together. Developers need to combine complex information sources,
-extract the results quickly and get them back to the user in real-time. As the
-number of users grows, servers must be added, both to store large amounts of
-data, to manipulate it, and to respond quickly to end-users.
-
-Out of the box, Opa features an impressive support for such scalable storage,
-heavily concurrent/distributed manipulation of data, service-oriented API and
-load-balanced web serving. Even better, as social applications commonly require
-considerable computing power, the computing performance of Opa ensures that
-fewer machines are required to handle crowds than would be required with other
-development solutions.
-
-Or think of an e-Commerce store. Highly dynamic web pages, generated constantly
-from the database, and a user experience that may need to be altered quickly and
-without disrupting the flow, to match holiday seasons or ongoing ad campaigns,
-but also a base of orders that needs to be kept secure from would-be intruders,
-and safe from accidents, including hardware failures.
-
-Opa is also great for this kind of applications. Its content management engine
-is second to none, whether in flexibility, power or security. Opa's built-in
-security checks guarantee that the application will resist most attacks,
-while the replicated and versioned database ensures that you can always rollback
-to previous data or recover from outages.
-
-We have used Opa to build social networks, e-Commerce applications, but also
-multiplayer web games, communication tools, developer-oriented tools -- and
-of course http://opalang.org[our website].
+Indeed, Opa was built from the bottom-up for _cloud_ applications, and
+shines most with applications that require scalability, security,
+interactivity, real-time web and complex data manipulation.
+
+Think of a social application. Numerous users communicating in
+real-time by chat, e-mail, forums or other means, through a rich user
+interface, but also through web services that can be accessed by
+third-party websites or native mobile interfaces. Perhaps these users
+can even modify shared appointment tables or work on some documents
+together. Developers need to combine complex information sources,
+extract the results quickly and get them back to the user in
+real-time. As the number of users grows, servers must be added, both
+to store large amounts of data, to manipulate it, and to respond
+quickly to end-users.
+
+Out of the box, Opa features scalable storage, heavily
+concurrent/distributed manipulation of data, service-oriented API and
+load-balanced web serving. Even better, as social applications
+commonly require considerable computing power, the computing
+performance of Opa ensures that fewer machines are required to handle
+crowds than would be required with other development solutions.
+
+Or think of an e-Commerce store. Highly dynamic web pages, generated
+constantly from the database, and a user experience that may need to
+be altered quickly and without disrupting the flow, to match holiday
+seasons or ongoing ad campaigns, but also a base of orders that needs
+to be kept secure from would-be intruders, and safe from accidents,
+including hardware failures.
+
+Opa is also great for this kind of applications. Its content
+management engine is second to none, whether in flexibility, power or
+security. Opa's built-in security checks guarantee that the
+application will resist most attacks, while the replicated and
+versioned database ensures that you can always rollback to previous
+data or recover from outages.
+
+We have used Opa to build social networks, e-Commerce applications,
+but also multiplayer web games, communication tools,
+developer-oriented tools -- and of course the CMS behind
+http://opalang.org[our website].
A first peek at Opa
~~~~~~~~~~~~~~~~~~~
@@ -206,7 +216,6 @@ A few ways to get in touch:
help with programming problems (do not forget to mark Opa related questions with
the ``Opa'' tag);
- by e-mail, at mailto:feedback@opalang.org[feedback@opalang.org];
-- by irc://irc.freenode.net/#opalang[IRC], on Freenode, channel #opalang;
- through http://www.facebook.com/Opalang[Facebook], as Opalang;
- through http://twitter.com/opalang[Twitter], as opalang.
Please sign in to comment.
Something went wrong with that request. Please try again.