Announcing Opa: Making Web Programming Transparent
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."
Every time you do something in Opa that is successful, you have to break a plate. Opa simply isn't economical to scale.
Let me know if it's still around in five years. I hope it works for these guys, but there are so many options already around, they are running uphill.
How is it different from, say, Wicket or ZK, or even GWT?
I can write complete AJAX-y webapps in Wicket or ZK, including database. They both store state of pages on server side, so AJAX becomes trivial (just rerender the page and send the difference in DOM trees using JSON).
Then there's GWT which compiles static Java code into JavaScript.
I was just thinking: this is exactly what we need! Yet another programming language. And even more "web apps". Yay!
I don't know about you but I've never really liked the look of programming languages that use colons. Semi-colons are OK but two dots, one on top of the other? That's just craziness! And "do" statements remind me of BASIC... yuck.
This seems to be getting some use lately.....
Well, i assume for sure that these guys know that 'opa' means 'grandfather' in German ?
If I write a web application using Opa, and the server end accesses a database - am I required to release the sql username and password?
#DeleteChrome
I thought that it was proven that languages with less complexity will make simple problems simpler, and the rest of the problems impossible.
Or maybe this *is* a complicated language, and I should just go back to idle.
this language seems to be obsolete from the beginning.
Am I the only one scared by the new trend of "languages that compile to Javascript"?
Coffeescript, Opa, there were some more.
I understand first compiling to Asembler and only then to machine code. I understand early C++ compiling to C. Various languages to bytecode...
But really, while I love Javascript for many features it provides, creating yet another layer of indirection on top of it seems to serve only one purpose: boost sales of faster hardware...
45 5F E1 04 22 CA 29 C4 93 3F 95 05 2B 79 2A B2
http://imgs.xkcd.com/comics/standards.png
They lost me at "A hierarchical database and web server are integrated with the language." Hierarchical? Really? I thought, outside of LDAP, that hierarchical databases had already suffered a much deserved death.
Compiling an existing language into JS cuts down the learning curve and makes more tools available. For example Java to JS using GWT
Reading the documentation and how-to's on the Opa website reminds me of talking to the Orz in Star Control II / Ur-Quan Masters.
Integrating everything into one thing seems like a poor idea. Sure, it makes it a little easier for the dev, but in the end, you are just learning 5 times the amount of Opa when you could learn each thing. Not only that, but can one thing really do all those tasks the other things do, and do it as well? Even if it can, it's harder to keep all of those on a level, you can't replace those parts if you find something better. It just seems to me that splitting things down into the parts seems like something we should be doing, not reversing. I also really don't like the whole compiling to JavaScript behaviour. Maybe just because I don't like JavaScript.
-- Lattyware (www.lattyware.co.uk)
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. This is a chat room. 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.
Switch back to Slashdot's D1 system.
Even Ruby on Rails, which was first released during the summer of 2004, barely lasted that long. As anyone who does even the slightest bit of web development knows, RoR was hyped, hyped, and then hyped some more for years. It got a huge amount of attention, more so than basically every other web framework out there.
However, by the end of 2010 it was on its way out. People found out that the hype wasn't deserved. Rails apps performed horribly, they were unmaintainable, they couldn't scale well, and the community had some pretty serious misogynistic tendencies. The few good Rails users fled, and it has thus stagnated. Today, we hear very little hype about Rails, and nobody who knows what they're doing uses it for new projects.
Sure, it's still around, but it's a ghost town. It's looking like there won't even be a 10th anniversary at this point. Or if there is, it'll be a pretty sad affair. More like a funeral, if anything.
IMHO, anything that works at such a high level is going to have problems. For example, quoting their doc page, "As for deciding which html version to use, Opa handles this behind-the-scenes".
Now what happens when browser X handles HTML 5 just fine, but browser Y doesn't?
It still works fine if the "behind the scenes" thingy has a fantastic knowledge base of all the browser variations. That's a big "if".
Aside from that, looking at their examples it reminds of MFC, where it was really easy to roll applications if you wanted to do it their way. As soon as you got an idea that didn't conform to what they had in mind, you were in a world of hurt.
Finally, I think web services are fine as a library in a langauge, but integrated at the language level? OK fine, but you can't call it a general purpose language anymore. Then it becomes a DSL. I'd rather have a general pupose language with a well documented API into a library that handles the doman than a DSL.
.... opa means 'idiot'. Yes, offtopic. Now onto some ontopic stuff: It definitely sounds good for security at least. I'm giving it a try.
Buanzo Consulting - 15 Years of GNU/Linux experience, for you.
That's why I said 5 years. It takes that long for people to figure out if the thing will actually work over time. As you so aptly said, Rails wasn't worth the hype.
http://xkcd.com/927/
Why is a new programming language required to "make web development transparent"?
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 logics, database queries and user interfaces
Wt does exactly the same but in C++. You develop webapps like desktop apps: widgets, ORM, etc. No need to care about Javascript, HTML, etc. Compilers available on all platforms. The result is a single binary which includes an embedded HTTP(S) server.
While I agree with what Opa wants to achieve, inventing a new programming language for that end is unnecessary and, in fact, will become a burden: they will need to maintain both the language and the library. But actually the value lies in the library, which is the one that needs to deal with HTTP, Javascript, AJAX, etc
If this were even remotely close to being true, I'd be out of a job right now. And I'm not, so it isn't. :)
Clearly this is an attempted troll post..
It sounds like a mechanic throwing out his toolbox in favor of a Swiss army knife.
You write one piece of code, and the compiler manages the AJAX interface. So you don't have to write your app in two languages
Sounds like CGI.pm to me! I never went for that. With a code generator you have to be thinking about what it generates all the time, or else restrict yourself to the lowest common denominator... on every feature. And still have a brittle result.
Template systems for the dynamic parts win for a reason. And it isn't because of any shortcoming of Perl, Ruby, or that Aelfinn one.
I'm a newbie and slowly learning RoR right now, so I'm interested to learn that it is on it's way out. What has replaced it? What do you suggest learning for web development currently?
i get this, we are going to a lot of folks try and improve the client/server side programming of distributed web application -- and that's a good thing -- but this one will need to significantly evolve to be a game-changer
http://www.opaopabrewing.com/
I'm looking over the wall, and they're looking at me!
if you want to be in the web dev game, you need to know everything. RoR, Some PHP frameworks, some Python ones, Catalyst for perl would be good, Javascript (the good parts) JQuery, HTML 5, XHTML.
The Web Dev world is very complex and sucks.
Opa automatically generates client-side JavaScript
Just what we need, more sites spewing out poorly-designed client-side script badly rendered by any number of JS browser implementations. Like many others, I do everything possible to block JS...why does anyone think the future lies in more client-side code?
Uh, what? I'm guessing you posted as AC because you didn't want to get modded down for posting flaming bullshit. Let me guess, you're a Perl developer who's still pissed Perl* doesn't offer a comparable framework and still won't accept the fact that Perl 6 will likely take another 5 years and all the shiny new functionality has been available in Ruby since you first heard about it. Rails is still very alive and well and is used in quite a lot of major sites. Rails 3.1 has some really nice improvements as well. As for speed I'd bet on a Rails app over something like Drupal any day.
Twitter still heavily uses Rails by the way. If I'm not mistaken they are the ones who did all the work to combine Rails and Unicorn - and now you can bind your Rails app to unicorn with about one line of code.
*I very much like Perl - it does many things very well and it has it's place. For plain CGI scripts, shell scripts, and a variety of other tasks it's great. Though I really wish Perl 6 was out 5 years ago so we could stop fussing with this Perl 5 object modoki BS.
Clearly this is an attempted troll post..
Rails = COBOL. It's dead tech. You need to get your head back in the game and switch to ASP.Net
Now this is a troll post, bitch.
Just what we need, more sites spewing out poorly-designed client-side script badly rendered by any number of JS browser implementations. Like many others, I do everything possible to block JS...why does anyone think the future lies in more client-side code?
While I agree that client-side code is not the proper direction for web focus (it amounts to circumventing doc structure standards with a scripting standard to do things neither standard planned for, the habit of doing this is REALLY why we have "Web Development Language/System of the Day") ... I don't know how Opa determines its JS output, and though my glance through the documentation turned up nothing, I imagine its claim to being transparent means there might be some control to what quality of JS is output.
While I am currently merrily digging into its grammar and the more technical details of the language itself, I don't really want to mess around with this language platform, though, because its "integration" of database, server, and client side means a nightmare for development when you traditionally have database team, design team, server-side team, etc. this puts all the eggs into one basket, how do you manage that? This sounds like it'd requiere a whole change in the development methodologies and programming practices, or would only be adopted by cowboy programmers working for small outfits. Our brains can only hold so much information, and getting familiar to this "language" would displace more practical knowledge. Where are the white papers, case studies, best practices, cost analysis, migration analysis... ? The things that would motivate the business minded to adopt, you know?
"... a new programming language ..."
Oh for chrissakes. Kill it with fire now.
Dear Creators of Opa - Honestly, what were you thinking? Opa is basically another crack at the same approach that ColdFusion tried years ago, and failed at. Opa isn't Object Oriented, meaning that developers working in an OOP language (Java, .NET, Python, PHP, Ruby, Perl, etc) will have a tougher time making the transition - it also means that Opa can't implement or support standard Design Patterns, which is a huge mistake IMnsHO. The sample code on the Opa site shows a mix of Opa functions, database interaction, markup language, CSS, Javascript... what a mess. Haven't we all learned that clean separation of functional application concerns is the only way to write scalable, enterprise-class programs yet? 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. As much as I like to see new programming languages succeed, I have to agree w/ a lot of the other posters on /. - Opa is dead on arrival.
I like the idea behind this: that web programming should become less like the herculean task of juggling several syntactically different languages. But why did they need to use that word "transparent"?? This is one of those silly buzz words that means very little (like cloud this and that) and smacks of sales talk.
Compiled their 76-line hello_chat.opa into a 30M executable ... I would love to see some eCom or other complex sites written in opa to convince me that this is a viable alternative to Ruby, Java, PHP, etc.
Gotta admit you made me laugh.
COBOL runs the world.
When Fascism comes to America, it will call itself Anti-Fascism, and tell you to give up your guns.
Clearly this is an attempted troll post..
Rails = COBOL. It's dead tech. You need to get your head back in the game and switch to ASP.Net
Now this is a troll post, bitch.
Impressive! (in Mortal Kombat announcer voice)
"We live as though the world were as it should be, to show it what it can be." - Joss Whedon via Angel
Don't worry, RoR is well alive. I'm paying my bills by writing RoR web apps. I'm sending another invoice to a customer for a RoR project next week.
So they're targeting javascript. This is going to be, uhm, not the most efficient approach.
What should happen, imho, is for W3C to develop a (non-garbage collected, as in no garbage collection) low level language, which can serve as a platform for other languages, like this one. Current compiler and virtualization technology can easily and efficiently translate such low level language into something native. And as a result, we could have a much richer web environment, and we'd not be dependent on that one strange little language we've been having to put up with. Open up the web-computing environment, and open-source languages could proliferate here.
If Pandora's box is destined to be opened, *I* want to be the one to open it.
Whether I'm a commercial user or not... why would I - or anyone - ever want web visitors to be able to grab the SQL username and password I'm using in the back end?
You are doing it wrong. Please turn your geek card. Seriously. This is one of the stupidest things I've ever seen, typically done only within the bowels of them most incompetently written software ever. Configuration parameters of any kind are never, ever, ever, ever put in code. It's like Jesus Christ man, this is shit that is taught in in freaking sophomore-level programming classes (seriously.)
Poor unexpected victims the ones who pay crappy, shit-flinging code monkeys for developing their software after reading "Be a Quickass PHP/Java/VB/C#/Whatever Cowboy in 12 Hours" (and end up receiving *this*). This is 2011, not the 1960's. There is no excuse for anyone to do this kind of things while working on software for a living.
No windows port? seriously?
I like the fact that it is not object oriented. Maybe mere mortals will finally be able to develop with this. OOP should die already!
That would be like a gazelle getting annoyed because it can't ride a bike.
Confucius say, "Find worm in apple - bad. Find half a worm - worse."
Someone mentioned WT (witty) already: similar in concept solution for C++. I'd like to point out Ur - while it seems to be (slightly) older it leverages the same principles and works similarly.
What I think is the most remarkable feat of Opa and Ur is that they aim to be purely functional and statically, strongly typed. In such a setting it would be very hard to work without integrating everything to conform to some (functional) standard - I think that's why Opa and Ur try to integrate all layers of webapp into one language. It's different from previous approaches, where integration was the goal - I think here it is just a side-effect (hehe) of purely functional mindset.
That's just my impression - I love functional languages and more so pure ones, so I may be biased. And I prefer statically typed ones (with type inference) and safety they bring to the development (although I'm primarily Python developer).
I don't mind making any and all my code available to others. And I understand the "give-back" qualities of GPL. But a GPL language that makes every program written in it have the GPL License?!? Good grief. I am laid back about the whole License Wars, but AGPL gives me pause.
I probably won't even bother learning a little bit of this language to understand it's good qualities. Plus I've never cared for indentation defining blocks.
-- I am not a fanatic, I am a true believer.
... in TFR and their homepage
Seriously, where is the slashvertisment tag when you need it ?
How does opa handle multiple threads of execution? Any decent server nowadays just needs to have multiple threads of execution, sometimes even thousands of them to work in a non-blocking way. Opa seems to be "non-blocking" (I read from the tutorial), but you have non-blocking and non-blocking... One version simply uses one thread and an event-loop (aka non-preemptive multitasking). This is not truly non-blocking, as large I/O operations in one task still prevent other tasks from working. And does opa allow us to control the priority of different threads?
Also, does Opa have support for fallback to the underlying systems (javascript/databases etc.)? If something is not supported by Opa (very likely in the beginning), I sure want to be able to fix it myself without having to understand all the opa internals.
If Pandora's box is destined to be opened, *I* want to be the one to open it.
I think the concept of Opa is neat. Other projects may have tried and failed at this, but maybe the Opa authors could make it work.
However, the choice of license completely precludes me from even trying it. Sure, I release source code for some of the stuff I make (even though nobody looks at it). Here's why:
Let's say I try out Opa, make some side projects with it, fall in love with it, and I get good at it.
Now, either at my day job, or on my own, I come up with super awesome project X that I want to build and release as some sort of money-making venture. We may even want to open-source the code for the site eventually, but we're not sure yet.
If I were to leverage Opa to do this, however, I will have to *pay* to keep my source closed. That's just not acceptable.
In German. ;)
The ultimate web language with no file uploads?
https://mlstate.com/forum/feedback_on_opa/feedback/1#5
How long did it take people to get over the Java hype? And yet it continues to have widespread use. Hype only lasts so long. At one time COBOL was all the rage. Now it's a "dead" language to many programmers, despite the billions of lines of code still running, despite the big salaries COBOL programmers pull down, despite the language being updated to keep up with the times.
Dead tech that runs all the big business logic and demands a 120k~200k salary of it's technicians ;)
:)
Please give me more of THAT kind of dead tech
because html, javascript, and browsers are soooo robust and versatile
Mr Seferino, aka "Opa Architect-in-Chief"... you're doing a lot of astroturfing, but I haven't seen anything from you on the copious number of comments concerning your infectious and controlling license... even just a little pricing info would calm that kettle, and yet you haven't said word one about the licensing nightmare you're attempting to unleash, just how very cool your code is.
Until you decide to show us you're not gonna rape us with licensing, you're not gonna get much in the way of legitimate users.
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Good point. Unfortunately, as the CSO, I have strictly no say in the license. If you wish to discuss it with someone who does, you should ping phy_si_cal, our CEO and the OP of this thread, or send an e-mail to Mathieu Baudet, our COO.
... and my point is made.
Nice sidestep.
Looking forward to seeing what replaces you.
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
And I didn't think about it before I hit submit, but did you just openly admit that this entire thread is a slashvertisement?
Bad form, sir. Bad form.
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Self-promotion on Slashdot? Nah, this never happens.
Nah, it happens all the time, we just usually troll it into the ground.
A little light reading for next time you're thinking about throwing yourself under a bus.
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
I think that you are missing the obvious: it worked.
I think that you are missing the obvious: it worked.
Yes, yes it did. And now most of Slashdot is convinced you have a non-starter.
Good job!
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Opa seems interesting, and I'd like to join the well-wishers in errm...wishing you well.
Talking about wishes, I'd be very interested in how you sell to the some of the key "stakeholders"
I'm slightly firing from the hip, so I would welcome any corrections and input (especially stuff that is not too abrasive...pretty please!)
(1) Developer
- Quick to learn
- Easy access to useful libraries
- Good debugging
- Ability to use favourite tools
- No nasty surprises
(2) Program manager ...put away rose tinted specs) ...that can be used for a clear set of uses
- Stuff that can be developed real quick (grumble..."why is it that developing for the web, seems so much slower that old VB was many years ago"
- A clear architecture to buy into...
-
- That integrates into other systems
- That does not require too much investment prior to delivering some initial useful results
(3) Operations
- Reliable
- Monitorable (I know my spell check doesn't like the word either!)
- Auto deployable
- Scalable
- Runs on our standard Linux Image (in our case Ubuntu, but everyone has their own preferences, which are without doubt RIGHT)
- Detectable and graceful degradation
- Some clear benchmarks, and optimisation techniques
(4) Users
- attractive
- easy to use
- responsive
And in a couple of apps that we are considering
(1) A real-time dash board
(2) some web components that our dealers can plug into their websites to sell our stuff
- something that can fit within other session models
- Something that we can embed into some javascript so that our dealers can copy and paste it into their sites
- Allows for good css restyling
Hope that this helps, and maybe you might do a FAQ post given some of the issues that are raised here!