How to contribute?

Hello,

I am a chemistry PhD student at the University of New Mexico. I am looking for ways that I might contribute to the project. I miss some of the functionality of Avo1. My programming skills are rudimentary, and mostly python, so I worry I might not be able to help too much with contributing code. However, I could try and help with documentation or other tasks that might ease the burden on other developers.

Could someone point me towards how I might get started?

Best,
Sam

2 Likes

Thanks for the offer, it’s very much appreciated!

I made a post a few weeks ago with a general list: How can I help? - #2 by ghutchis

But I think the first questions would be:

  • What functionality do you miss?
  • What are some features that you’d like to see in Avo2?

Many commands in Avo2 can be implemented in Python. One possibility, for example would be to implement a Python plugin and add some documentation as a tutorial.

I’m also seeing that the docs at https://two.avogadro.cc seem to have broken their theme. I’d definitely appreciate some help with fixing that via Sphinx and can provide some pointers.

Beyond that, the ongoing Avo2 user documentation is being built via GitBook and I’d be happy to add you as an editor / contributor.

Oh, the other thing I mentioned recently (with Python) is that I’ll be adding in features for scripting common commands: Potential Python commands / actions

The idea is to have example scripts, like “save a screenshot of every *.xyz file in this directory” or “load a bunch of files and generate orbital pictures”

Ideas are definitely welcome!

Thank you for your reply! I went ahead and looked at your list.

As regards your questions:
-I miss the way that you could quickly browse a Gaussian Fchk file to look at the 10 or so molecular orbitals around the HOMO which were printed with the energies. This made it easy to quickly interpret the output of jobs, and show results to collaborators.

  • I would like to see the spectra come back (I know you are working hard on this!) and I would like to see some tools for checking the convergence of a HPC job over time. Dream-features include integration with something like MoleQueue and easy Mulliken Population Analysis.

Concerning what I might be able to help with:

I mostly use Avo1 to build, input, and interpret the output of HPC jobs. Last week I found myself wanting a script that would load a bunch of files and generate molecular orbital pictures, so I might just start there. I have been using the old avogadro1 on a windows machine for getting pictures of MO’s <s>because I haven't been able to get Avo2 MO's to work on my linux machine</s> because I was using an old APT version of Avo2 and needed to use the newest AppImage.

Actually, I think that I could work on the input generators as well. Something I noticed is that the input generator for the particular program that I use could use some polishing, since it has mostly basic capabilities. (Of course, anyone can manually specify special methods and basis sets, or call TD calculations, but perhaps it could be useful to have some of this functionality in the UI as well).

Well, I can start looking at example python scripts first, because that is what I know best.

Thanks for the pointers and I will let you know how it goes.

I’ll need to add a bit to enable the “generate MO from a script” part of that. The basic idea is that the various features will register commands like “generate_mesh()” to the app and a bit of dispatch in the app itself to send commands to the right plugins.

Input generators would be great - the syntax should be easy to understand and it’s documented here: https://two.avogadro.cc/scripts/interface.html

Hi,

I’m a product (UX/UI) designer.
How can I contribute?

1 Like

I’m responding on your other thread. Thanks!

1 Like

Did you get around to adding code to support scripting MO’s? I would like to try generating images programmatically.

I should be able to add that fairly quickly. Are you able to build from source, or do you need a nightly build. (I’ve heard various things about nightly builds being broken, which I can’t confirm.)

Would prefer a nightly build, haven’t yet built from source, however, could give it a shot.

Hello @ghutchis I am a college student and know coding languages c++, python, javascript(beginner), I want to contribute can you help me study base by giving some source of docs or mentorship etc

Sure. There are a number of places to start depending on your C++ or Python comfort.

Some issues are marked as “help wanted” and are good first issues:

One other thing that’s come up is in the avogadroapp repository. It would be great to have an auto-save feature that calls mainwindow.cpp:saveFileAs(const QString& fileName, Io::FileFormat* writer) using the CJSON writer:

A similar task would be to add a method to mainwindow.cpp / .h to exportFile(const QString& fileName) and determine the format from the extension.

These are options in C++…

In Python, we have code to send messages to the app - it would be great to clean this up into a real class that could be used like from avogadro import connect and methods for the various JSON-RPC calls like openFile and saveGraphic, etc.

Would you give me a shout when you add such a feature or point me towards build notes?

Yeah, it’s taken a bunch more “plumbing” than I had hoped. A bunch of the code for generating surfaces expects the GUI to set resolution, etc.

That, plus other obligations has slowed me down.

Should be ready by Friday.

added the functions openFile and saveGraphic to connection class by adityaomar3 · Pull Request #404 · OpenChemistry/avogadroapp · GitHub please review it I have refactored it was this meant or I was not able to understand the issue.

Thanks. I’ll take a look later today and provide some feedback on the pull request.

FYI - You can either send messages to me on the forum here, or “@” me on GitHub - these are generally the best ways to “ping” me about something. Thanks.

Hey, its been a while contributing but want to move ahead and learn more! @ghutchis do we have some javascript related work or issues here?
Also I was going through openbabel, is webassembly part still needed ?

Yes! I’d really love to have a download button like Download — blender.org

  • auto-detects which platform (including Mac Silicon vs. Mac Intel) for a one-click downloader
  • menu with links to other versions (e.g., organizing what we have at Install — Avogadro 1.98.1 documentation)

We already have templates for the release URLs, and it wouldn’t be hard to add the package sizes.

But, it seems like there’s some JavaScript magic that detects the platform and sets the button accordingly. … that would be really awesome (e.g., to have that on https://two.avogadro.cc/)

I can think of a few other JavaScript / web things as well (e.g., helping to put together a plugin repository webpage). Beyond Avogadro, I’m sure others might also be willing to have a JavaScript / WebAssembly version of Open Babel.

I will start with the button part, seems interesting to work on.