Hi Jason, I personally have some Scala experience while working with Clerezza [1] which uses both Java and Scala but what I think is that, while Scala is perfectly ok with existing Java standards and allowing functional/dynamic programming, it raises the barrier for new users/devs a little bit. So I am not so sure that a Scala implementation should totally replace an existing one, maybe a graceful introduction would be more welcome. My 2 cents, Tommaso
[1] : http://incubator.apache.org/clerezza 2011/4/10 Jason Baldridge <[email protected]> > It's been a while since I posted these request for input... Does anyone > have > any thoughts on it? Is anyone else interested in Scala being part of > OpenNLP? > > Jason > > On Tue, Mar 22, 2011 at 10:16 AM, Jason Baldridge > <[email protected]>wrote: > > > Hi everyone, > > > > Jorn and I have had a little discussion about a topic I brought up with > him > > that I'd like to get everyone's thoughts on. I'm including our > conversation > > below, but the gist of it is this: > > > > - I've been switching to development in Scala. At this point, I > personally > > see little point in coding in Java given that Scala is available (and > very > > very nice) and it plays very well with existing Java -- I'm very happy > with > > this for several projects I'm working on, including TextGrounder< > http://code.google.com/p/textgrounder/>and > > Junto <http://code.google.com/p/junto/>. So, I'd like to see Scala > making > > its way into OpenNLP. > > - We need to reorganize the maxent code into the new package opennlp.ml > > - I'd like to create the new package, retaining the Java code as is, > make > > a first release, and then allow Scala code to mix in with the Java from > that > > point on > > - A number of issues come up with this, including using another build > tool > > like SBT instead of Maven and ensuring we are Apache compliant and so on. > > > > So, this is really just a feeler to see what you all think and see if you > > have any enthusiasm, reservations or suggestions. Thanks! > > > > Jason > > > > > > Forwarded conversation > > Subject: opennlp.ml + Scala? > > ------------------------ > > > > From: *Jason Baldridge* <[email protected]> > > Date: Mon, Mar 21, 2011 at 1:28 PM > > To: Jörn Kottmann <[email protected]> > > > > > > Hi Jorn, > > > > I've changed over to doing nearly all my coding in Scala, generally > > transitioning Java codebases to Scala by writing everything new in Scala > and > > using the existing Java classes as they are. I would like to do this as > part > > of the new opennlp.ml, as I'm not inclined to write any new Java code > > unless absolutely necessary, and I would very much like to create that > new > > and improved package. What do you think of this? > > > > Jason > > > > -- > > Jason Baldridge > > Assistant Professor, Department of Linguistics > > The University of Texas at Austin > > http://www.jasonbaldridge.com > > > > ---------- > > From: *Jörn Kottmann* <[email protected]> > > Date: Mon, Mar 21, 2011 at 2:24 PM > > To: Jason Baldridge <[email protected]> > > > > > > Hmm, yeah, if we would rewrite it I think it is something we could > > consider, but in our case we just need > > to do some reshaping of the existing code and a little refactoring here > and > > there. That is one reason > > I believe we should be conservative and not use it in this case. > > > > Other issues I see is that it will be a message to the mahout people that > > we do not want to collaborate, > > which in fact I believe is something we should do to get map reduce > > training support one day. > > The people in the team might not be familiar with scala, which could > > further limit the man power > > which is available for the re-factoring. Just my 2 cents. > > > > I believe we should also do the maxent refactoring slowly and first do > > everything inside the current > > structures, and then when everythign is in place do the last changes > which > > break backward compatibilty. > > > > Anyway we should start a discussion about the future of OpenNLP, which > > features do we want > > to implement for the next few versions? Which new components would be > nice > > to have? > > I believe there are quit some people who are willing to pick up tasks but > > are simply not > > aware about the possibility. > > > > Jörn > > > > ---------- > > From: *Jason Baldridge* <[email protected]> > > Date: Mon, Mar 21, 2011 at 3:29 PM > > To: Jörn Kottmann <[email protected]> > > > > > > > > > > > > Hmm... what if we did the first refactoring into opennlp.ml with pure > Java > > but the new package structure, then make a first release and then start > > bringing in Scala? > > > > > > Good points. However, I'm finding that Scala plays *very* nicely with > Java > > (including allowing Java to use Scala classes), so that could be mostly > > transparent to users of the package, maintaining the API pretty much as > it > > is. So, I *think* we could continue to play nicely with Mahout folks. > > > > Also, after coding for a while in Scala, I can't help but feel that Java > > the language is dead, while the JVM lives gloriously on. :) I think there > is > > a lot of momentum to Scala in general, and my feeling is that it is very > > friendly for Java programmers. (Though I had experience in functional > > programming before, so a lot of concepts came easily to me that could be > > more unusual for others.) > > > > > > What do you mean by "current structures"? Do you mean to keep the classes > > as they are now, but just switch the package organization first? > > > > > > Yes, perhaps we should do that once the release is all done? (Thanks for > > all your hard work on that, btw!) > > > > Also, perhaps we should bring up the Scala question on the mailing list? > I > > wanted to ask you first to see if you had strong objections first, but > since > > you don't it might be good to sound out the community. > > > > Jason > > > > > > ---------- > > From: *Jörn Kottmann* <[email protected]> > > Date: Mon, Mar 21, 2011 at 3:38 PM > > To: Jason Baldridge <[email protected]> > > > > > > I actually think just doing it for maxent/ml doesn't really makes sense, > if > > we want to switch the programming > > language its for entire code base. Then we speak about the migration of > > like 400 classes from java > > to scala, does that really makes sense? Just doing a little scala doesn't > > sounds reasonable for me. > > > > Sure move it to the mailing list. > > > > Jörn > > > > ---------- > > From: *Jason Baldridge* <[email protected]> > > Date: Mon, Mar 21, 2011 at 5:44 PM > > To: Jörn Kottmann <[email protected]> > > > > > > But, the great thing about Scala is that you can mix Scala and Java and > not > > have to do one or the other -- so I don't think we'd need to do a full > > migration. Anyway, I'll bring it up on the list! > > > > ---------- > > From: *Jörn Kottmann* <[email protected]> > > Date: Mon, Mar 21, 2011 at 5:54 PM > > To: Jason Baldridge <[email protected]> > > > > > > Yeah, but then still most of the code will remain to be pure java mixed > > with a little scala, but you have > > to deal with the extra complexity for having a little scala, e.g. more > > complex build tooling, you need > > extra IDE support, more complicated compatibility issues, etc. > > > > Jörn > > > > ---------- > > From: *Jason Baldridge* <[email protected]> > > Date: Mon, Mar 21, 2011 at 7:39 PM > > To: Jörn Kottmann <[email protected]> > > > > > > The build is *really* easy with SBT (which can incorporate maven and ivy > > dependency declarations). The idea would be to transition to Scala so > that > > it would eventually be mostly scala, if not all scala. A standard jar is > > still distributed. > > > > ---------- > > From: *Jörn Kottmann* <[email protected]> > > Date: Tue, Mar 22, 2011 at 4:33 AM > > To: Jason Baldridge <[email protected]> > > > > > > We are using maven right now, and it does a lot of more than just putting > > together a jar file > > e.g.: > > - Making a release, with code signing, tagging in our SCM, producing rat > > reports, etc. > > - Deploying artifacts to the Apache repository > > - Building our documentation > > - Testing > > - Optionally it can run code quality tools like find bugs or a test > > coverage tools > > > > Jörn > > > > ---------- > > From: *Jason Baldridge* <[email protected]> > > Date: Tue, Mar 22, 2011 at 9:11 AM > > To: Jörn Kottmann <[email protected]> > > > > > > > > > > > > These might need some looking into, but are probably doable. > > > > > > These are builtin targets for SBT. > > > > -j > > > > ---------- > > From: *Jörn Kottmann* <[email protected]> > > Date: Tue, Mar 22, 2011 at 9:20 AM > > To: Jason Baldridge <[email protected]> > > > > > > Our entire build system was just rewritten to meet Apache rules and > > standards, if we > > do that again now it will set the project back for like a month or so. > > > > Jörn > > > > ---------- > > From: *Jason Baldridge* <[email protected]> > > Date: Tue, Mar 22, 2011 at 9:33 AM > > To: Jörn Kottmann <[email protected]> > > > > > > Fair enough. I will still bring it up as it now actually pains me to code > > in Java. ;) > > > > Oh, here is how to deploy artifacts: > > > > http://henkelmann.eu/2010/11/14/sbt_hudson_with_test_integration > > > > I think the others would be straightforward. Possibly one of the bigger > > sticking points would be IDE integration -- I use Emacs and it all works > > very well for me, but I don't know how it is for Eclipse and NetBeans > folks. > > > > ---------- > > From: *Jörn Kottmann* <[email protected]> > > Date: Tue, Mar 22, 2011 at 9:40 AM > > To: Jason Baldridge <[email protected]> > > > > > > I didn't say its not possible to rewrite our build with SBT, but I > strongly > > believe that is an effort which > > will take quite some time e.g. a month just to get a build which is as > good > > as our maven build we just > > finished. > > All the people have to install the scala plugins into their IDEs to get > > proper support, which is > > of course also possible. > > > > Yeah bring it up on the mailing list. > > > > Jörn > > > > ---------- > > From: *Jason Baldridge* <[email protected]> > > Date: Tue, Mar 22, 2011 at 9:46 AM > > To: Jörn Kottmann <[email protected]> > > > > > > Sounds good. And I find that it is often straightforward to take Maven > > specifications and either use them directly from SBT or translate them > into > > the SBT definitions. Perhaps we could start this with opennlp.ml and > then > > see how it goes before doing it in the main OpenNLP code. > > > > > > > > -- > > Jason Baldridge > > Assistant Professor, Department of Linguistics > > The University of Texas at Austin > > http://www.jasonbaldridge.com > > > > > > -- > Jason Baldridge > Assistant Professor, Department of Linguistics > The University of Texas at Austin > http://www.jasonbaldridge.com >
