Mike Cannon-Brookes from Atlassian has posted (some moons ago) two interesting presentations related to Lucene and Atlassian's feedbacks from Confluence and JIRA.
My favorite is the first one: Lucene: Generic Data Indexing. It's a nice introduction to the benefits of Full Text search engines, as well as the gotchas you will face.
I found their use of FilterQuery as a cross-cutting concern implementation for security fairly interesting.
The first presentation also quickly address some of the indexing strategies (synchronous / asynchronous) depending on the product requirements. Mike goes a bit deeper in the second one by describing some clustering solutions and the one they choose.
JIRA has gone very far in its use of Lucene, I am not sure I would have gone that far, but that's definitively a very interesting extreme use case, and very successful :)
Tuesday, May 22, 2007
Wednesday, May 16, 2007
Demo of JBoss Seam DVD Store powered by Hibernate Search
Many asked me if the DVD Store demo powered by Hibernate Search that I ran at JavaOne was available online.
The answer is not yet, but it will. My plan is to package it nicely and release it when the beta 2 of Hibernate Search is out.
This will hopefully happen fairly soon. JavaOne being behind us, I can focus back on the code base.
I had some very interesting discussions with some of you about Lucene and the features you need, it's good to see the community growing around the project.
The answer is not yet, but it will. My plan is to package it nicely and release it when the beta 2 of Hibernate Search is out.
This will hopefully happen fairly soon. JavaOne being behind us, I can focus back on the code base.
I had some very interesting discussions with some of you about Lucene and the features you need, it's good to see the community growing around the project.
Wednesday, May 9, 2007
Hibernate Search and JSR-303 at JavaOne
I will be presenting Hibernate Search at JavaOne.
I will be demoing a live migration of the JBoss Seam DVD Store application from a classic SQL based search engine onto Hibernate Search with Google-like search capabilities. If your user pressures you for a decent and useful search feature or your DBA asks you not to kill the database perfs, you might want to take a look at it.
It's Friday at 10h50:
TS-4746 - Hibernate Search: Googling Your Java Technology-Based Persistent Domain Model
I will also give an update on JSR-303 Bean Validation (and Hibernate Validator) about the goals, the expectations and where it fits in the Java ecosystem, with a demo too ;-)
Friday again at 14h50 ( 2:50 PM in our local hosts language ;-) )
TS-4112 - Declarative Programming: Tighten Enterprise JavaBeans (EJB) 3.0 and JSR 303 Beans Validation
See you there
I will be demoing a live migration of the JBoss Seam DVD Store application from a classic SQL based search engine onto Hibernate Search with Google-like search capabilities. If your user pressures you for a decent and useful search feature or your DBA asks you not to kill the database perfs, you might want to take a look at it.
It's Friday at 10h50:
TS-4746 - Hibernate Search: Googling Your Java Technology-Based Persistent Domain Model
I will also give an update on JSR-303 Bean Validation (and Hibernate Validator) about the goals, the expectations and where it fits in the Java ecosystem, with a demo too ;-)
Friday again at 14h50 ( 2:50 PM in our local hosts language ;-) )
TS-4112 - Declarative Programming: Tighten Enterprise JavaBeans (EJB) 3.0 and JSR 303 Beans Validation
See you there
Sunday, April 22, 2007
Hibernate Search talk at JAX '07
One feature request for Hibernate Search has been surprisingly pretty popular: support for indexed embedded collections and hence correlated queries involving collections.
This is no longer a request and is available in SVN :-)
Imagine a Movie having a list of Actors, the following query is now possible:
I am going to talk about Hibernate Search at the JAX 07 conference in Wiesbaden on Tuesday. Let's have a beer if you are around.
By the way, I think De Niro did a not so great job on this movie, too much is suggested (probably too many details too fast). I know that was the intend, but he went too far in my opinion.
This is no longer a request and is available in SVN :-)
Imagine a Movie having a list of Actors, the following query is now possible:
give me the movie talking about Central Intelligence Agency and having one of the Baldwins in the castingor in Lucene language
description:"Central Intelligence Agency" authors.name:BaldwinOf course the drawback is to potentially increase drastically the size of your index. So use it when the collection size is under control.
I am going to talk about Hibernate Search at the JAX 07 conference in Wiesbaden on Tuesday. Let's have a beer if you are around.
By the way, I think De Niro did a not so great job on this movie, too much is suggested (probably too many details too fast). I know that was the intend, but he went too far in my opinion.
Monday, March 26, 2007
Licensing and trademark
There has been lots of turmoils last week on two not so related subjects. Let's clarify them a bit.
LGPL rights and duty
Lot's have been said about this license, and lot's of people out there don't understand the rights and duty of this license.
Your application (aside from those modifications) does not fall into the LGPL license.
It is usually admitted (while not required), as a courtesy, to provide (all) your modifications to everybody (not only the third party you distribute your application to). It usually doesn't matter in the end, because any of your application users will be able to freely redistribute for free the modifications you made on the LGPL library. There is nothing you can do about it.
Check the LGPL license for more info.
Trademarks
(Protection of) Trademarks is actually a fairly common practice, including in the Open Source world, to name a few
Why?
For all of them, to protect the brand, to protect the message the brand is pushing.
That is the reason why I changed the name Hibernate Lucene to Hibernate Search, it violated the ASF trademark, so I went ahead and fixed it.
To clarify the turmoil with Hibernate, please check the clarification by Mark Webbing. It's in the comments here but I will reproduce it for clarity.
Sidenote
Contrary to some claims, you don't have to have a @jboss.com address to contribute to JBoss projects (I mean commit access). All you have to do is being accepted by the community and the project lead (as any open source project), and sign a contributor agreement (in a similar manner an ASF contributor agreement is signed). To name Hibernate, I can count at least twice as many active contributors not having a @jboss.com address than having one :-)
By the way, I am not a lawyer, so take my words as is etc etc. My dog knows a dog who knows a lawyer, but I am not sure that qualifies me ;-)
LGPL rights and duty
Lot's have been said about this license, and lot's of people out there don't understand the rights and duty of this license.
- Goal
The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users.The goal is to guaranty freedom (of speech) to he users of a given software.
- Can I use a verbatim copy of a LGPL library in my software? What about my code license? What if I distribute my software?
- Can I modify the library? What happens then?
Your application (aside from those modifications) does not fall into the LGPL license.
It is usually admitted (while not required), as a courtesy, to provide (all) your modifications to everybody (not only the third party you distribute your application to). It usually doesn't matter in the end, because any of your application users will be able to freely redistribute for free the modifications you made on the LGPL library. There is nothing you can do about it.
- Goal (once again)
Check the LGPL license for more info.
Trademarks
A trademark includes any word, name, symbol, or device, or any combination, used, or intended to be used, in commerce to identify and distinguish the goods of one manufacturer or seller from goods manufactured or sold by others, and to indicate the source of the goods. In short, a trademark is a brand name.[1]A trademark does not prevent you from providing a service based on a given product. It restricts and organize, however, the way you can use a given (combination of) word.
(Protection of) Trademarks is actually a fairly common practice, including in the Open Source world, to name a few
- Red Hat Inc and JBoss Inc (trademark information)
- The Apache Software Foundation (trademark FAQ)
- The Mozilla foundation (trademark policy)
- ...
Why?
For all of them, to protect the brand, to protect the message the brand is pushing.
That is the reason why I changed the name Hibernate Lucene to Hibernate Search, it violated the ASF trademark, so I went ahead and fixed it.
To clarify the turmoil with Hibernate, please check the clarification by Mark Webbing. It's in the comments here but I will reproduce it for clarity.
I am writing to clarify the issues raised by the publication of Ms. Robertson's communication on behalf of Red Hat. First, the letter is not placed into the context of the situation it was addressing. That presents the opportunity for misinterpretation. At the same time, I would agree that the letter is less than precise in defining what has been done wrong and the corrective action that is required. Ultimately, that is my fault as the person in charge of trademark enforcement at Red Hat.
Contrary to Gavin's statements above, you cannot offer HIBERNATE Training or JBOSS Training. This is an improper use of Red Hat trademarks in that the marks are being used (a) either as nouns or (b) to promote a good or service that is directly branded with Red Hat owned marks. What is permissable, and I am sure this is what Gavin meant, is that you are permitted to offer HIBERNATE(R) Object Relational Mapping Software Training or, as another example, JBoss(R) Application Server Training. Here the marks are being applied to the goods in a proper manner and it is clear that the training is being provided for that branded technology, not by the brand owner. As a further common courtesy, it would also be appropriate for those properly using the marks in this manner to make clear that they are not in anyway associated with Red Hat or its JBoss Division.
With that clarification I hope I have resolved the confusion and/or discontent around this issue. More extensive information on the permitted uses of Red Hat marks can be found at http://www.redhat.com/about/companyprofile/trademark/
I would also ask, as a courtesy to Ms. Robertson, that the party who posted her letter please indicate that they were the party posting the letter, not Ms. Robertson.
My apologies for any confusion that has been caused.
Mark Webbink
Deputy General Counsel
Red Hat, Inc.
Sidenote
Contrary to some claims, you don't have to have a @jboss.com address to contribute to JBoss projects (I mean commit access). All you have to do is being accepted by the community and the project lead (as any open source project), and sign a contributor agreement (in a similar manner an ASF contributor agreement is signed). To name Hibernate, I can count at least twice as many active contributors not having a @jboss.com address than having one :-)
By the way, I am not a lawyer, so take my words as is etc etc. My dog knows a dog who knows a lawyer, but I am not sure that qualifies me ;-)
Thursday, March 8, 2007
Google Guice: IoC revisited
Google has made public his IoC container. It's all annotations based, no more strings, no more XML.
Some key concepts:
Basic injection
Default for autowiring
Custom annotations
What I really like:
I remember the old days of Pico vs Spring vs Avalon. I'm happy to see innovation flowing again in this field. Some took for granted that Spring was the only way, then come annotations. JBoss Seam and its annotation based stateful injection / outjection, and now Google Guice: both share some of the interesting concepts I described earlier. Component injection is revisited and it's good.
Now remember, IoC is not application development, it's at best a part of it :-). To me, the programmation model with the biggest/homogeneous picture is JBoss Seam.
Some key concepts:
- Avoid string based injection which are error prone and hard to refactor
- @Inject actually inject :-)
- @ImplementedBy(ServiceImpl.class). A service can have a default implementation, use by default when no wiring is explicit. The actual implementation is easily identified, including by your IDE...
- Injection through custom annotations (even parameterized): useful when you need to bind 2 services implementations and use one or the other. Also useful to bind constants: Guice allows you to bind a constant to an annotation.
- Scoping: injections are scoped, and you can create you own scope (transaction). Inner scopes can see outer scopes.
- Because it's Bob Lee: Guice has integration with AOP Alliance is supported
Basic injection
public class Client {
private final Service service;
@Inject
public Client(Service service) {
this.service = service;
}
public void go() {
service.go();
}
}
Default for autowiring
@ImplementedBy(ServiceImpl.class)
public interface Service {
void go();
}
Custom annotations
bind(Service.class)
.annotatedWith(Blue.class)
.to(BlueService.class);
...
@Inject
void injectService(@Blue Service service) {
...
}
What I really like:
- Annotation based, easy to read and concise
- Injection on methods (not only setters)
- @ImplementedBy: Most services, they are implemented one and only one time.
I remember the old days of Pico vs Spring vs Avalon. I'm happy to see innovation flowing again in this field. Some took for granted that Spring was the only way, then come annotations. JBoss Seam and its annotation based stateful injection / outjection, and now Google Guice: both share some of the interesting concepts I described earlier. Component injection is revisited and it's good.
Now remember, IoC is not application development, it's at best a part of it :-). To me, the programmation model with the biggest/homogeneous picture is JBoss Seam.
Wednesday, February 28, 2007
Hibernate + Seam team meetup in San Fransisco
This is a pretty rare event, (almost) all the Hibernate + Seam team will be together in San Fransisco end of this week.
We organize a meetup on Friday (March 2nd) at 7 PM
Levende Lounge
1710 Mission St. @ Duboce
San Francisco, CA 94103
Phone: 415.864.5585
http://www.levendesf.com/
Please drop me an email (emmanuel # hibernate.org) if you intend to come to this event. There is usually a cover charge for this place on a Friday night, so we need to get people's names on the door list.
We organize a meetup on Friday (March 2nd) at 7 PM
Levende Lounge
1710 Mission St. @ Duboce
San Francisco, CA 94103
Phone: 415.864.5585
http://www.levendesf.com/
Please drop me an email (emmanuel # hibernate.org) if you intend to come to this event. There is usually a cover charge for this place on a Friday night, so we need to get people's names on the door list.
Subscribe to:
Posts (Atom)