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 [email protected] -----Original Message----- From: Van Den Berghe, Vincent [mailto:[email protected]] Sent: 11. januar 2018 14:29 To: [email protected] 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:[email protected]] Sent: Wednesday, January 10, 2018 3:44 PM To: [email protected] 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
