![]() The creation of APIs focused on read/write, or editing/manipulation of molecules also offered a separation of concerns. This makes reading, writing, and operating on large molecular data sets much faster. We were able to rethink most of this from the ground up, and offer data structures that think in terms of allocating large arrays of contiguous memory. Originally we depended upon some very object-oriented code for molecules, atoms, bonds, etc. This can make some of the development more complex, with core libraries building on C++11 only, but we are doing everything we can to achieve the right balance. This means that we can optionally use VTK’s rendering capabilities to offer advanced volume rendering, flying edges for surfaces, and 2D charts without inflicting that dependency on all users of the library if we had one huge mono-library. The libraries are far more layered now, enabling us to bring in quite large dependencies such as VTK in libraries depending on the core. We are also reusing the same Python wrapped API in Python-based server plugins for an open chemistry data server. We are reusing core functionality in JupyterLab notebooks for file reading, orbital cube generation, and other pieces in web-based workflows. This has enabled us to wrap the core libraries with PyBind11, and enable pip install avogadro to bring in those core modules. One of the upshots of this is that the new Avogadro 2 libraries can be used without any rendering/graphical interface dependencies. I think copyleft has a place, but I am not convinced it is science, but this is a discussion for another time… More Reusable My thinking in this area has evolved significantly since I entered open source, and considering all of the complications arising from license compatibility, questions of distribution, compliance, whether a work is a derivative I strongly prefer the simpler permissive licensing model. This aligns with my employer’s commercialization strategy for open source, and offers reference implementations that can be freely reused by anyone. The licensing was also changed from GPLv2 to 3-clause BSD to permit much wider/easier reuse under a permissive open source license. The world also insists on changing around us, which always keeps things interesting! The Avogadro 2 libraries were designed to be far more modular from the start, featuring core libraries that only need C++11, then layering on OpenGL, Qt and other dependencies in other libraries or plugins. The rewrite was not as easy as I originally hoped, and we hit some dead ends in developing some components. We have been working on Avogadro 2 for quite some time, initially funded by a US Army SBIR (the first SBIR grant I obtained after joining Kitware), lots of our own time, and more recently some DOE funding. Everything we learned from the development of Avogadro 1.x led to an ambitious rewrite of Avogadro. Since we first developed Avogadro my ambitions grew. We have also been able to grow a community around the project, and found new, related projects. In those years I have learned a huge amount, grown as a developer, mentor, manager, author, proposal writer, presenter and more. Avogadro has been downloaded over one million times since our first release, and it has been cited over 2,100 times since we published the paper in 2012! That is absolutely mind blowing to me, and I never dreamt that we would garner so much attention when I sat coding for hours on something that was a passion project. Thanks to KDE, GSoC and the Avogadro project my career took on a whole new direction, one that had been a hobby/passion until then-scientific programming, visualization, and forming communities around open source codes.įast forward through a two year postdoc with Geoff Hutchison (one of Avogadro’s founders), and nearly ten years at Kitware (my current employer) and we arrive here. I learned a huge amount from my mentor Benoit Jacob that summer, and we were able to land a slew of new features. The group seemed to share many of my goals, and so it seemed like a better idea to work with them. I started a small project that I never published, and had hesitated for a few years to apply for Google Summer of Code but in 2007 I took a look and found what looked like the perfect project. student in Physics, working in an experimental group. In addition, we wanted to provide a library that exposed these features. From the start this was a project founded by a need felt by many of us who got involved in the early days-to have a solid, cross-platform and open source molecular editor. The library we were using was libavogadro, this powered Kalzium and the Avogadro application that provided a fuller interface (also using Qt as its base). The Avogadro project was founded all the way back in 2006, and I participated as a Google Summer of Code student with KDE in 2007 to bring a molecular editor to Kalzium.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |