Forgot your password?
typodupeerror
Cloud Open Source Programming News

Announcing Opa: Making Web Programming Transparent 253

Posted by timothy
from the opalong-nothing-to-see-here dept.
phy_si_kal writes "Opa, a new open source programming language aiming to make web development transparent, has been publicly launched. Opa automatically generates client-side JavaScript, and handles communication and session control. The ultimate goal of this project is to allow writing distributed web applications using a single programming language to code application logic, database queries and user interfaces. Among existing applications already developed in Opa, some are worth a look. Best place to start is the project homepage which contains extensive documentation, while the code of the technology is on GitHub. A programming challenge ends October 17th."
This discussion has been archived. No new comments can be posted.

Announcing Opa: Making Web Programming Transparent

Comments Filter:
  • Opa? (Score:0, Informative)

    by Anonymous Coward on Saturday August 27, 2011 @06:45PM (#37230724)

    Well, i assume for sure that these guys know that 'opa' means 'grandfather' in German ?

  • by ludwigf (1208730) on Saturday August 27, 2011 @07:06PM (#37230862)
    AGPL 3

    Probably the most important implication of AGPL is that it requires you to provide a way for your users to download the sources of the application. In fact Opa facilitates that by automatically enriching the server (in release mode) to serve the source code of the application at a special /_internal_/src_code URL.

    But this is not the end of the story. We believe in free software (hence the AGPL license) but we also understand that it may not be very suitable for commercial users of Opa. Such users will be able to obtain a private license (paid). This will allow them to keep their sources closed if they wish to do so and will provide us with funds to further develop and improve Opa — win-win situation :). If you are interested in more details about obtaining such a license, do not hesitate to contact sales@mlstate.com, where we will try to answer all your questions (including pricing).

    http://blog.opalang.org/2011/08/opa-license-contributions.html [opalang.org]

  • by moonbender (547943) <moonbenderNO@SPAMgmail.com> on Saturday August 27, 2011 @07:37PM (#37231036)

    No idea whether it's viable long-term, but I thought it's really interesting. It does way more than GWT does, for example. It's also statically typed, yay.

    Here's some example code from the tutorial [opalang.org]. This is a chat room [opalang.org]. Apart from CSS, this is the entire soure code required to create the chat room server. Yikes. Had to get rid of the comments to appease the spam filter, unfortunately.

    type message = {author: string /**The name of the author (arbitrary string)*/
                  ; text: string /**Content entered by the user*/}
     
    @publish room = Network.cloud("room"): Network.network(message)
     
    user_update(x: message) =
      line = <div class="line">
                <div class="user">{x.author}:</div>
                <div class="message">{x.text}</div>
            </div>
      do Dom.transform([#conversation +<- line ])
      Dom.scroll_to_bottom(#conversation)
     
    broadcast(author) =
      do Network.broadcast({~author text=Dom.get_value(#entry)}, room)
      Dom.clear_value(#entry)
     
    start() =
      author = Random.string(8)
      <div id=#header><div id=#logo></div></div>
      <div id=#conversation onready={_ -> Network.add_callback(user_update, room)}></div>
      <div id=#footer>
            <input id=#entry onnewline={_ -> broadcast(author)}/>
            <div class="button" onclick={_ -> broadcast(author)}>Post</div>
      </div>
     
    /* Main entry point. */
    server = Server.one_page_bundle("Chat",
          [@static_resource_directory("resources")],
          ["resources/css.css"], start)

  • Re:needs time (Score:3, Informative)

    by Anonymous Brave Guy (457657) on Saturday August 27, 2011 @11:28PM (#37231970)

    The developers are strongly backing a particularly virulent licence, Affero GPL. That requires that not only are the Opa tools open source, but any software you write using Opa is infected as well [opalang.org] .

    The claimed alternative is to buy a commercial licence for Opa, which lifts the open source conditions, but costs an as-yet-unconfirmed amount of money.

    To my knowledge, there is no programming language that is even moderately successful today that does not have a good quality, free-as-in-beer, no-strings-attached tool chain readily available.

    I suspect Opa is about to become a textbook example of a project that was be stillborn because its developers were too greedy; they're just demanding too much control over other people's work instead of too much cash.

  • Re:needs time (Score:4, Informative)

    by Anonymous Brave Guy (457657) on Sunday August 28, 2011 @02:35AM (#37232584)

    I think you're misunderstanding the concern. If I build my code using GCC, then GCC itself may be open source under whatever licence, but my code is mine to license as I wish. If you follow the link I gave above, you'll find that the Opa guys think that not only Opa itself but also anything you write with it should be forced open (by their definition of open, which is different to almost anyone else's). That's the kind of policy that gets abrupt from corporate lawyers saying "Put this within 50 miles of our network and you're fired". It's also incompatible with many other popular OSS licence policies.

  • by Seferino (837142) on Sunday August 28, 2011 @03:26AM (#37232676) Homepage

    Dear drgroove,

    Thank you for your considerate feedback.<sarcasm mode="off"/>. While we understand very well the drawbacks of Opa not being Object-Oriented (at least not in the usual meaning of the term), there are several reasons for this choice. The first and most important of these reasons is that experience from 15+ years of experienced developers writing scalable systems with Object Oriented Programming Languages, and concluding that OO is not the right paradigm for the task, and that other paradigms need to be hammered upon OO languages to make them scalable. Rather, when designing Opa, we decided to choose a paradigm not on its popularity, but rather on its suitability for the task of writing highly-scalable, highly-secure, highly-dynamic web applications. This paradigm is comparable to that of Erlang or Scala. Certainly, this requires leaving the comfort zone of OO and putting all these learning neurons back to work, and certainly not all developers who have tried Opa have liked it, but direct and indirect feedback seems indicates that most did – a lot.

    The second reason is more complex. We have experimented with OO in Opa and our experience shows that, to obtain the same level of security guarantees we achieve at the moment in an OO language, we would have had to abandon either lightweight programming (and require type annotations in many places), automated client-server distribution (and require site annotation just about everywhere) – theoretical sidenote: if you wonder, a large part of the problem is related to open recursivity in a structural setting, a nasty topic in particular when some methods depend on untrusted code.

    Haven't we all learned that clean separation of functional application concerns is the only way to write scalable, enterprise-class programs yet?

    We have worked very hard to permit separation of functional application concerns in Opa. Our tutorials and samples focus on conciseness, which is why it is a bit hard to see, but it is possible, and if we find time and resources to proceed in this direction, future versions of Opa will go much further along the way. However, I concur that this is one of the areas we could improve most (other ones being error-handling, the default UI toolkit, and expanding the database access primitives). So if you have any suggestion, really, we are quite interested. The current project lead can be reached at Mathieu.Baudet@mlstate.com [mailto] and I am certain that he will be eager to hear about your ideas.

    Opa doesn't appear to support any database beyond it's own build-in, slightly obfuscated one, meaning it will gain no enterprise/business traction.

    Actually, at low-level the current version of Opa does support a few additional databases, but this is something that we do not publicize yet as we are certainly going to make changes before we are satisfied with the feature. As for enterprise/business traction, well, let's start with non-enterprise/business developers and work our way up :)

    Yours truly,

    the architect-in-chief of Opa.

  • Re:Wt (Score:3, Informative)

    by phy_si_kal (729421) on Sunday August 28, 2011 @06:46AM (#37232750)
    You're the debian packager for Wt, so you must know Wt much better than I do. However, both projects are very different and you should probably have a real look at Opa before popping up on every story about Opa (followed by another comment by someone else saying the link was useful, history repeats ;). Opa is high-level language for writing web apps. Wt is a toolkit for writing web components in C++. There is an order of magnitude between the length of application code in Opa and in Wt. Wt handles everything as strings and does not perform any verification on the soundness of the application -- it's a way simpler project. But on the other hand it is useful to add a web touch to existing C++ desktop apps.

"And do you think (fop that I am) that I could be the Scarlet Pumpernickel?" -- Looney Tunes, The Scarlet Pumpernickel (1950, Chuck Jones)

Working...