How to improve communication between LAMMPS users, how to better support LAMMPS?

I may be a bit late to the conversation; as a relatively new user/someone who has done some development within LAMMPS, I agree with some of the previous commenters on this thread and on the mailing list thread.

  1. Having a forum/mailing list is definitely better than a Slack channel because someone can return to a conversation 7 days after the last comment :slight_smile:.

  2. I think the mailing list is useful because of its long history and the fact that google had indexed the entirety of it. Likewise a googleable forum has been very useful for my programming questions (think StackOverflow) so I think having a forum that is both searchable from google but also has its own internal tags that allows users to search for the topics they want to ask/feel comfortable answering is the way forward. Will you lose some people that are only subscribed via email which is the way they stay active? Probably. I think a separate question is whether that matters. Is actively going to matsci.org an acceptable hurdle for people’s participation?

  3. A new user guide that doesn’t present the entirety of the LAMMPS manual to users would be extremely beneficial for users. For me personally, I went in completely blind and was unaware were the minimum required commands, especially transitioning from in-house code that automatically generated its own internal configurations rather than using something like read_data. I agree with the idea of training students by showing them errors and teaching them the ways to address those errors and fix them (I like the idea of Jupyter notebooks similar to how Rust by example has executable sections of their page which also focus on correcting errors within the code.) I had a glance at the linked lammpstutorials.github.io tutorial; it seems useful. I’ve given it to a new member of the research group to ask for his evaluation.

  4. Email (and forum) responses do become public record and making the “honest mistakes” to a beginner’s question is a large mental hurdle to overcome, especially since I’ve personally seen you Axel respond on the mailing list with a similar response time to questions I would feel comfortable responding to, but you have a very intimate and vastly larger knowledge base. While I like the idea of a system where experienced people help newcomers, advanced people help experienced, devs help advanced, etc., the safety net of having a very senior dev answer questions does make me personally hesitant to answer questions for fear of being wrong and correctly shortly (let alone some of these questions can be solved via a google search as has been indicated previously).
    I don’t have a good way to address the combination of bad questions and getting people who have the requisite knowledge to answer simple questions actually responding.

  5. The idea of a common error repo/goto location that is explicitly highlighted/called out by an exiting LAMMPS might be useful and (hopefully) would resolve the problem of people asking the same questions on the mailing list. (possible example: "Compute ti pair style does not exit. Please check https://docs.lammps.org/Errors_messages.html")

  6. As a developer who tried extending kspace, the original developer guide that was available about 3 years ago (don’t know the original publication date of the pdf) was kind of helpful for understanding how LAMMPS works overall but left a good deal unaddressed, including modifying the kspace. I get why that is: LAMMPS overall is complicated and requires a lot of work to understand the ways things were structured. Since I’ve taken a couple of years to develop my extension, I’ve seen the improvements made to documentation including specifically calling out which functions are required for kspace which has made life easier (how init and setup differ from each other and when they are individually called). Thank you very much for that.

This “mental hurdle” is a something that I believe is unjustified. Here are my reasons:

Where is the harm of making a mistake in public? For as long as it is an “honest” mistake, people will not think less of the person making the mistake. Are there examples where people had disadvantages because of making a mistake? Isn’t research just a sequence of mistakes that you learn from to gain insight? Most have probably made the same mistakes themselves are some point and thus can understand them. Most importantly, making the mistake in public includes the opportunity of being corrected for it, and thus reduce the changes to keep making the same mistake in private.

People sometimes ask “how can you know all this?” and my answer has to be “by trying to solve not just my problems but as many of those of others as possible, too”. I’ve always experienced responding to questions as a form of “accelerated learning”: rather than solving only the kinds of problems that I encounter personally, there are new and different problems, I can try to look up or figure out a possible solution (the fun part of problem solving) and then make a suggestion. The the person asking will do the hard work and try it out and provide the feedback of whether my suggestion helped or not. That way you can learn a lot about a software and methods and how to use them properly.

I am just seeing this discussion but find it very interesting. I guess I bring an interesting perspective because I have been all of these. I started as a graduate student who knew nothing and asked bad questions (along with not reading the manual) and now have several publications in MD along with a much stronger understanding (I like to think). That said, I believe we all ask questions that sometimes have simple answers.

I think what could be useful is to try to really separate out the “beginner” questions from the “discussion” questions. I mean a beginner question is something like, why is my simulation box exploding with an answer of your units changed and you didn’t change your damping. In contrast, a discussion question is more relevant to a specific project or application of LAMMPS. For example, I want to simulate XYZ in some environment, let’s chat about what simulation choices will best replicate this. These kinds of open ended discussions assume some basis in MD, and assume the confusion is not a basic question. The problem however is the discussion forum can quickly devolve into, “I don’t know MD, someone solve my thesis for me”

One idea I have is to maybe create a system where to be able to post a new topic in the discussion questions you have to either verify, or perhaps answer some beginner questions? Maybe some sort of karma system? Just thinking out-loud here

Thanks for your thoughts.

The Discourse system was specifically designed to encourage open discussion and steer away from the limitations and policies of the StackExchange system (which used by StackOverflow), that are designed to become some sort of crowd-sourced FAQ (which in turn was an attempt to address the limitations of Wiki pages). So it is not likely to see something that moves the system back. There is the option to assign “likes” (check out the “heart icon”), but no up/down voting.

The problem with any limitations or restrictions is that they require somebody to implement and/or enforce them. IMO, the largest weakness in the LAMMPS community is that the “community” itself is not doing it. As indicated in the discussion by multiple contributors, people are content to either just get their questions answers (even if it sometimes means taking some verbal abuse for asking unnecessary questions) or lurk and pick up anything useful asked or answered by others. I can only speculate about the motivations.

On some level having something more like a “dynamic FAQ”, e.g. hosted by StackExchange could be useful, but our community is far to small to make it work. If you look around, only StackOverflow is really working well, and that is because there are so many computer science students and and computer geeks around that ask questions and provide answers. also, my impression is that in computer science people are much more eager to speak with authority (even if they are not overly competent), which in physics this is much less likely and in computer simulations we have the double whammy that we use computer technology and software do apply physics, but few of us have formal training in programming and computer software (or hardware) management. and so people seem frequently concerned to expose their weakness in one or the other area.

Bottom line. People should start and participate open ended and general discussions. There is the “Science Talk” category. The main idea of the MatSci forum organizers is that some questions/answers and expertise is transferable and the some general talk categories that are not tied to any software may help to reach a critical mass for getting discussions started, that won’t start in the specific forums or mailing lists.

Final reminder, I think it is crucial to look at this from the perspective of “what can I do?” and “what is the kind of response that I needed when I was in a similar situation?” rather than “what should others do?” or “how can we regulate this?”. In my personal experience, this is - like so many things - a matter of practice, so you would start small and only make small suggestions or rather than providing a detailed or specific answer point people to a source of information where one might find an answer. After a while this will get easier and one gets a sense of what works well and what doesn’t and then can expand.

…and you would be surprised how much one can benefit personally from trying to answer questions, even simple ones. I would claim, that after 15+ years of mailing list and forums, I have learned far more myself than anybody that I responded to.