lucenenet-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jens Melgaard <Jens.Melga...@Systematic.com>
Subject RE: Barrier to Entry?
Date Thu, 11 Jan 2018 15:13:08 GMT
Hello

So for my thoughts on this.

I think you have to separate contributions into two categories:
 - A) Contributions to: https://github.com/apache/lucenenet
 - B) Contributions around Lucene.NET.

If we take the first one, A, then contributing will mainly be porting the missing java packages
over etc... Considering that the project seemed dead for a long time I suppose that there
simply wasn't much motivation to even get started, after all Lucene is a huge codebase and
I wouldn't personally know where to begin... After the project was revived we could have hoped
for more interest from the community...

Now if we move to the second type of contributions, then I wouldn't say that it's entirely
accurate to say "almost nobody", if we just look at what hits we get from nuget there is some:

 - https://github.com/themotleyfool/Lucene.Net.Linq
 - https://github.com/rokeller/Lucene.Net.ObjectMapping 
 - https://github.com/dotJEM/json-index
 - https://github.com/MahyTim/LuceneNetSqlDirectory
 - https://github.com/Krusen/Additio.Lucene.Analyzers

Granted, the quality varies, and there is not that many... Much of it may seem like "playground"
work in the end, but people do wish to contribute...

------------------------

Another problem for Lucene.NET is that it's kinda far behind it's Java originator. And that
is going to weigh in on decision makers when they are to choose between Lucene.NET, Lucene
(Java) or even Solr/Elastic Stack vs. Lucene.NET.. then Lucene.NET will simply lose most of
the time (Sadly)... That in turn means it becomes difficult to attract contributors, if you
don't choose Lucene.NET over the others, then why should you contribute... And without those
contributors it will be hard to catch up to those offerings... So that's an evil circle to
be in... Sadly :( ...

There is only so much that Shad and Itamar can do on their own after all >.<...

------------------------

As a final note, if you would like to help out, it's actually not that difficult to get started,
start here: https://github.com/apache/lucenenet/blob/master/CONTRIBUTING.md 

It's not really that scary, you do need to get your mind into the Fork -> Work -> Pull
Request workflow (If your not already), but it's actually not really complicated... (fork:
https://help.github.com/articles/fork-a-repo/ -> Do Work -> https://help.github.com/articles/about-pull-requests/)
It does takes some effort get your code in, but remember, that is to ensure the quality after
all... And Shad is a real sport at helping you out...

If you're not familiar with git, then it's about time to become so IMO... If the command line
scares you off, there are plenty of UI tools to help by now, and IDE integrations have also
become very usable over the past couple of years...
 - https://git-scm.com/downloads/guis/
 - Windows: https://git-scm.com/download/gui/windows
 - Mac: https://git-scm.com/download/gui/mac
 - Linux: https://git-scm.com/download/gui/linux

SourceTree, Github Desktop and GitKraken all seems to do a very decent job.

Jens Melgaard
System Architect

Systematic A/S
Søren Frichs Vej 39
8000 Aarhus C
Denmark

Mobile: +45 4196 5119
Jens.Melgaard@systematic.com

-----Original Message-----
From: Van Den Berghe, Vincent [mailto:Vincent.VanDenBerghe@bvdinfo.com] 
Sent: 11. januar 2018 14:29
To: dev@lucenenet.apache.org
Subject: RE: Barrier to Entry?

Hello,

You are of course entirely correct. If you want an industrial strength search engine, Lucene.net
is pretty much the only game in .NET town. Which probably explains the big user community.
 But contributing is quite another matter. 

I don't know why this is in general, but let me give you my personal experience, for what
it's worth.

I became interested in Lucene.net because I needed to build a search engine at work. I did
have some positive hobby experience with the 2.9 version in the (very) far past, so I decided
to give the latest one a whirl. Lucene.net 4.8 is quite a different beast and I was pleasantly
surprised. All hail Shad Storhaug: he is pretty much the driving force behind all that goodness.
NightOwl888 iz da man. Seriously.

I poked around a bit, did a lot of benchmarking and debugging, and whenever the result of
those looked like they could be useful to the community, I made small contributions to the
project as a result, because it was (and still is) the right thing to do. But there were two
obstacles:

- I have zero experience in GIT, open source projects and how to contribute. Yes, I could
read a book about GIT. I'll put it on the stack of "to read" books. Maybe next year. In the
beginning, I just copy/pasted code to the dev mailing list: much quicker. But unworkable in
the long term, especially if you want to contribute "big". The one time I tried to follow
the rules for something nontrivial (https://github.com/apache/lucenenet/pull/208) it didn't
seem to be worth the trouble. This is quite possible due to my aging brain and lack of flexibility,
more than the technical or procedural issues.

- the test suite of Lucene.net (and I suppose for the Java version as well) is not made to
find problems. It's only designed to generate problems. The presence of decision points based
on random numbers make it extremely difficult to reproduce a failing case, especially when
you are unfamiliar with the code. I spent a lot of time waiting for a test to fail, and then
staring incomprehensibly at the code, wondering why. I'm sure there's a good reason for things
to be as they are. It just makes it so much more difficult. Maybe insert the last sentence
in the previous paragraph about aging brain here.

Over time, there were 2 things more things I viewed as obstacles:
- .NET Core/.NET Standard became "a thing".  As if making it work on regular .NET isn't work
enough. I'm sure it has its uses, but it's yet another layer of conditionals. And failing
tests.
- the project moved to VS2017. This isn't on the list of approved software at work (not even
the community edition), so it basically stopped me of doing anything significant. In time,
VS2017 will likely be put on the approved list, which will remove this obstacle. But not in
the foreseeable future.

Now, I know all of this are just excuses. If I had the free time to solely focus on Lucene.NET,
I would stop whining and start contributing.  But that would preclude me of doing anything
else: for me, Lucene.net is the kind of project you need to focus your entire attention on
if you want to do something worthwhile. Perhaps other people are more talented or have more
free time to be able to contribute to it in addition to the other stuff they do. I'm not one
of those people. 

Lucene.net served (and continues to serve) me well and I realize all too well that what I
gave back to the project is woefully insufficient. At this point in time, I can do nothing
else but apologize.


Vincent

-----Original Message-----
From: Stefan Bodewig [mailto:bodewig@apache.org] 
Sent: Wednesday, January 10, 2018 3:44 PM
To: dev@lucenenet.apache.org
Subject: Barrier to Entry?

Hi all,

it looks as if we had a rather big user community but almost nobody seems to be interested
in contributing. There are occasional pull requests but not that many.

I wonder whether there is anything that keeps people away from contributing. Is it the complexity
of the project, the "port from Java"
aspect or are there technical or procedural issues that we could change to make it easier
for others to contribute?

Stefan

Mime
View raw message