[Lift] Re: Is Lift the right tool for us?

2009-04-21 Thread David Pollak
On Tue, Apr 21, 2009 at 7:12 AM, Jeppe Nejsum Madsen je...@ingolfs.dkwrote:

 Hello,

 I've been lurking on this list for a while and trying out small things with
 Lift/Scala but thought I would ask the more experienced people around here
 before digging much deeper. First some background:

 I've been writing webapps for well over a decade using all kind of
 tools/languages ranging from Perl/PHP to ASP/.Net/Java (but never Python or
 Ruby in any significant way). The last 5 years I've mostly focused on
 Java/JEE. Over time I've, like many of you probably, grown tired of the
 verbose java syntax and the xml bloat that seems to be required to get any
 kind of real-life system up and running.

 I'll soon be starting on a new project where I can choose the entire
 technology stack and I'm currently evaulating the options. The app will not
 be a new Web 2.0 social platform used by millions, but rather a more boring
 business-type app with lots of data entry and interactive reporting  :-) But
 it will have to stable, fast, easy to use (ie will probably need lots of
 Ajax functionality) as well as integrate with many external parties.

 One of the primary parameters for choosing a language/framework is speed of
 development. I know Rails excel in this and may be the sweet spot for an app
 like ours, but 1) I don't know ruby that well and 2) I've tried RoR and it
 never really clicked with me while I can easily see how you can create
 something, fast. Python/Django is another option I'll be looking at.

 I don't know Lift/Scala either but I've always liked the clean, simple
 syntax of SML (did a fair share of SML programming back in the CS classes
 :-), so FP is not uncommon to me (but a bit rusty). And I do like the JVM as
 platform.

 So some of the questions I have to the community is this:

 - How long time does it take for experienced developers to be 1) Productive
 and 2) Be hyperproducive :-) if we assume we'll start from scratch?


1 - About a month
2 - About 3 months



 - How about new members to a team already knowledgable about Lift/Scala?
 It's not likely we'll be able to hire lots of experienced Lift developers in
 the near future :-)


The same as for RoR or DJango.  Your curve will be similar.  New language,
new framework.  The plus is that you don't have to worry about operations
because Lift deploys as a WAR file.  Learning Capistrano for Rails is
non-trivial.


 - How is the productivity compared to say Rails  Django for database
 driven apps requiring lots of Ajax?


Better.  Lift's Ajax and JavaScript abstractions are worlds better that
Rails and Django.  Lift abstracts away the HTTP request/response cycle.
 Rails puts you in the heart of it.  With Lift, you need not define 3
separate files to handle a single Ajax request.



 - Is Lift ready for production use?


Yes.  Lift apps are in productions (and have been for  1 year) at companies
including SAP, Enthiosys, and other places.  More Lift apps are coming
online every day and companies that you've heard of (e.g., Siemens).


 While our project is not mission critical requiring 5+ nines, it is not a
 consumer product either. Downtime will hurt. I've read David's statement
 that he will do a lot to support production installations, which is a very
 nice commitment. I know this depends on the app architecture, but would be
 nice to get some
 - Any input on Mapper/Record vs JPA for persistence?


Depends on your app.

Thanks,

David



 But basically any experience from using Lift on real, substantial projects
 is welcome.

 /Jeppe

 



-- 
Lift, the simply functional web framework http://liftweb.net
Beginning Scala http://www.apress.com/book/view/1430219890
Follow me: http://twitter.com/dpp
Git some: http://github.com/dpp

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
Lift group.
To post to this group, send email to liftweb@googlegroups.com
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=en
-~--~~~~--~~--~--~---



[Lift] Re: Is Lift the right tool for us?

2009-04-21 Thread Jeppe Nejsum Madsen
Thanks for the swift reponse. A few comments inline

On Tue, Apr 21, 2009 at 7:51 PM, David Pollak feeder.of.the.be...@gmail.com
 wrote:

[...]


 I don't know Lift/Scala either but I've always liked the clean, simple
 syntax of SML (did a fair share of SML programming back in the CS classes
 :-), so FP is not uncommon to me (but a bit rusty). And I do like the JVM as
 platform.

 So some of the questions I have to the community is this:

 - How long time does it take for experienced developers to be 1)
 Productive and 2) Be hyperproducive :-) if we assume we'll start from
 scratch?


 1 - About a month
 2 - About 3 months


This is encouraging!




 - How about new members to a team already knowledgable about Lift/Scala?
 It's not likely we'll be able to hire lots of experienced Lift developers in
 the near future :-)


 The same as for RoR or DJango.  Your curve will be similar.  New language,
 new framework.  The plus is that you don't have to worry about operations
 because Lift deploys as a WAR file.  Learning Capistrano for Rails is
 non-trivial.


 - How is the productivity compared to say Rails  Django for database
 driven apps requiring lots of Ajax?


 Better.  Lift's Ajax and JavaScript abstractions are worlds better that
 Rails and Django.  Lift abstracts away the HTTP request/response cycle.
  Rails puts you in the heart of it.  With Lift, you need not define 3
 separate files to handle a single Ajax request.


Yes, the Rails way seem a bit cumbersome (but does provide a quick bang for
the buck out the box). I've yet to fully understand how this works in Lift
(Scala code still doesn't look very clean to me. Maybe that's just an
acquired taste?)

[...]

- Any input on Mapper/Record vs JPA for persistence?


 Depends on your app.


Ok, will get back to this when I've got some more details...

/Jeppe

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
Lift group.
To post to this group, send email to liftweb@googlegroups.com
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=en
-~--~~~~--~~--~--~---



[Lift] Re: Is Lift the right tool for us?

2009-04-21 Thread Jeppe Nejsum Madsen
On Tue, Apr 21, 2009 at 9:01 PM, Charles F. Munat c...@munat.com wrote:


 Yeah, it's always nice to get some... :-)

 As a former Rails developer, I'll say this: I don't think I'm yet quite
 as fast in Lift as I was in Rails, but I'm getting there. A lot of this
 has had to do with switching mindset from Ruby to a more Java-ish approach.


Do you think you'll surpass your Rails speed? If yes, can you explain what
elements contribute to this?


 For you, as a Java developer, I think you'll find the reverse true. With
 Scala, you can continue to use the same Java libraries and tools that
 you've used before. I think you'll learn Lift very quickly, and whenever
 you're stuck, you'll have all that Java background to fall back on.


My thoughts exactly :-) I know I will not use Java for this project so I'm
willing to take a small hit initially. But staying on the JVM at least
provides som firm ground wrt to deployment, ops, runtime, tuning etc.

If your project is more than a simple app (as I'm certain it is), I
 would go with JPA. Record is not ready yet, and Mapper is pretty
 limited. For example, AFAIK Mapper doesn't do many-to-many associations.
 I've had a lot of success with JPA/Hibernate, and it's getting pretty
 solid in Lift now -- there are even Maven archetypes for it.


 I've yet to dig into Mapper/Record. What are the main benefits of these
(besides the obvious simplicity you get when not needing to use JPA)?


 Lift is more than ready for production use. I've been using it in
 production for more than six months.


Nice! Any numbers you can share (users, tables, data, transactions etc)?


/Jeppe

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
Lift group.
To post to this group, send email to liftweb@googlegroups.com
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=en
-~--~~~~--~~--~--~---



[Lift] Re: Is Lift the right tool for us?

2009-04-21 Thread Clemens Oertel

 If your project is more than a simple app (as I'm certain it is), I
 would go with JPA. Record is not ready yet, and Mapper is pretty
 limited. For example, AFAIK Mapper doesn't do many-to-many  
 associations.
 I've had a lot of success with JPA/Hibernate, and it's getting pretty
 solid in Lift now -- there are even Maven archetypes for it.

  I've yet to dig into Mapper/Record. What are the main benefits of  
 these (besides the obvious simplicity you get when not needing to  
 use JPA)?


Here's my experience: I started out with mapper for my current  
project, and ended up overriding/rewriting most of the functionality,  
to make it work for my (maybe unusual) requirements. I have pretty  
much duplicated the entire mapper class/trait hierarchy, bit by bit.  
For example, Mapper does not like dealing with null values for types  
that are not nullable in Scala. Mapper has, for example, 0 hard-coded  
as default value for int's for which no value is given. No  
insurmountable obstacles, but things might take more work than one  
thinks initially. There's just no free lunch.

Since mapper combines so many aspects, it might take a considerable  
amount of effort to isolate concerns when switching from mapper to JPA  
or similar.

I will be switching to JPA in the next two weeks.

Best,
Clemens


--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
Lift group.
To post to this group, send email to liftweb@googlegroups.com
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=en
-~--~~~~--~~--~--~---



[Lift] Re: Is Lift the right tool for us?

2009-04-21 Thread Timothy Perrett


I too used to do a lot of rails dev... Granted my lift apps take me
*slightly* longer to produce, but only by a bit. However, they do take a lot
less time to deploy and maintain because my platform is not leaking like the
proverbial rusty bucket ;-)

Cheers, Tim

On 21/04/2009 20:15, Jeppe Nejsum Madsen je...@ingolfs.dk wrote:

 As a former Rails developer, I'll say this: I don't think I'm yet quite
 as fast in Lift as I was in Rails, but I'm getting there. A lot of this
 has had to do with switching mindset from Ruby to a more Java-ish approach.
 
 Do you think you'll surpass your Rails speed? If yes, can you explain what
 elements contribute to this?



--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
Lift group.
To post to this group, send email to liftweb@googlegroups.com
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=en
-~--~~~~--~~--~--~---



[Lift] Re: Is Lift the right tool for us?

2009-04-21 Thread Charles F. Munat

Jeppe Nejsum Madsen wrote:

 Do you think you'll surpass your Rails speed? If yes, can you explain 
 what elements contribute to this?

I'm not sure, but I think so. Then again, it's difficult to say, because 
I'm doing more. There is definitely a bit less boilerplate for me with 
Lift, but not as much less as I'd like. One of the things I'm slowly 
working on is some best practices to reduce that boilerplate.

But I build apps very differently in Lift than I did in Rails. Not just 
because Lift is different. Mostly, it's because I've refined my ideas 
and new libraries have made things easier.

Where Lift sometimes slows me down is usually because I'm learning a 
Java library. For example, JAI has wasted a lot of my time to do 
something that I did fairly quickly with RMagick in Rails. But I can do 
a lot more with JAI once I have it down. That's the tradeoff, I guess.

In Rails I wrote an extensive library of CRUD functionality that I used 
to build CRUD apps very quickly. My views were reduced to a few lines of 
code, controllers even more so. For example, a controller that had 350 
lines of code was reduced to around 12 lines. A view that had 200 lines 
became 20 lines. That really made things fast.

I hope to do the same for Lift eventually (if someone else hasn't done 
it first), but in the meantime, I'm not quite as fast.

 For you, as a Java developer, I think you'll find the reverse true. With
 Scala, you can continue to use the same Java libraries and tools that
 you've used before. I think you'll learn Lift very quickly, and whenever
 you're stuck, you'll have all that Java background to fall back on.
 
 
 My thoughts exactly :-) I know I will not use Java for this project so 
 I'm willing to take a small hit initially. But staying on the JVM at 
 least provides som firm ground wrt to deployment, ops, runtime, tuning etc.

Oh, you'd be surprised how handy having access to Java at any time is. 
You get all the benefits of Scala's syntax, but you can use pretty much 
anything out there that's Java -- without writing any Java. That's 
probably what persuaded me to try Lift more than anything else. I hate 
Java's verbosity (and all those damn XML files). But I love its speed 
and stability and the huge amount of code out there.

 If your project is more than a simple app (as I'm certain it is), I
 would go with JPA. Record is not ready yet, and Mapper is pretty
 limited. For example, AFAIK Mapper doesn't do many-to-many associations.
 I've had a lot of success with JPA/Hibernate, and it's getting pretty
 solid in Lift now -- there are even Maven archetypes for it.
 
  I've yet to dig into Mapper/Record. What are the main benefits of these 
 (besides the obvious simplicity you get when not needing to use JPA)?

I don't find Mapper any simpler than JPA, just different. You do get 
some stuff for free, but it doesn't ever seem to be what I need.

Record is another matter. I haven't even looked at it yet, but from what 
I hear it bundles in oodles of goodness. I'm psyched. And I think you'll 
be able to use it with JPA... could be wrong about that, though.

 
 Lift is more than ready for production use. I've been using it in
 production for more than six months.
 
 
 Nice! Any numbers you can share (users, tables, data, transactions etc)?

Funny thing: I have no idea. I build sites for clients and I've never 
concerned myself with traffic. I don't think any of them are very high 
traffic, though. Maybe a few thousand hits a day. Maybe more.

But David Pollak has done some amazing stuff, so check with him on that.


Chas.

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
Lift group.
To post to this group, send email to liftweb@googlegroups.com
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=en
-~--~~~~--~~--~--~---



[Lift] Re: Is Lift the right tool for us?

2009-04-21 Thread Derek Chen-Becker
On Tue, Apr 21, 2009 at 1:53 PM, Charles F. Munat c...@munat.com wrote:


 In Rails I wrote an extensive library of CRUD functionality that I used
 to build CRUD apps very quickly. My views were reduced to a few lines of
 code, controllers even more so. For example, a controller that had 350
 lines of code was reduced to around 12 lines. A view that had 200 lines
 became 20 lines. That really made things fast.

 I hope to do the same for Lift eventually (if someone else hasn't done
 it first), but in the meantime, I'm not quite as fast.


This kind of support is one of our goals with Record. There's still some
mismatch between the way that JPA sees the world and the way that Record
sees the world, but I'm confident that we can find some way to get them
playing together nicely.

Derek

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
Lift group.
To post to this group, send email to liftweb@googlegroups.com
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=en
-~--~~~~--~~--~--~---