Over at queso<https://github.com/libqueso/queso> we're thinking about
how to move to supporting a variety of different vector and matrix
implementations.  Specifically, we'd need a wrapper around the
implementation details (PETSc, Trilinos, and Eigen, for example) to
provide an implementation-agnostic interface for our users.

I have a little bit of experience with libmesh, but not a lot.  I have
enough to know `NumericVector` does exactly this, and this is not
currently standalone.  Furthermore, the use of `NumericVector` would
prevent the duplication of a lot of hard work, bug fixing, testing, and
triaging that has already been done.

Reading through this
thread<https://github.com/libMesh/libmesh/issues/423> I see a lot of
differing opinions on the matter, and understandably so; you want to
maintain a streamlined development process.  With that in mind, I'd like
to suggest a few options for us to the development community here for
feedback:

1.  Add libmesh to the list of queso dependencies, and ship queso with
libmesh bundled inside.

This approach means, at configure time, we can turn off all the
components of libmesh that queso doesn't need.  Contributions to
NumericVector are easily applied by contributing to libmesh.  There's no
effort required on the part of the libmesh community here, and libmesh
increases its base of users.

2.  Don't ship the whole of libmesh with queso, but just the
NumericVector component, and keep queso in sync with upstream changes
each time libmesh does a release.

This requires considerably more effort on the part of the queso
community than item 1.  Mapping upstream changes to NumericVector to
queso requires a nontrivial repeated overhead but it cuts down on what
is actually required for queso.  Specifically, we wouldn't build parts
of libmesh we didn't need and therefore we would be able to distribute a
leaner queso tarball and maintain a leaner queso repository.

3.  Maintain a NumericVector fork.

This would require moderate initial effort to set up the fork.  Moderate
to considerable effort would be required from the libmesh community to
massage the build system to deal with another dependency.  Moderate to
considerable effort would be required from the queso community to do the
same.  The difference here is that any contributions made to
NumericVector by the queso community are much more easily applied
upstream than item 2, and no different than item 1.  Additionally, this
approach offers the opportunity for other open source projects to
leverage and contribute to NumericVector.

To reiterate, I understand there will be a lot of varied views and
opinions but I'd like to solicit feedback on some of these ideas and
perhaps probe for other ideas.

Best wishes,
Damon

-- 
Damon McDougall
http://www.damon-is-a-geek.com
Institute for Computational Engineering Sciences
201 E. 24th St.
Stop C0200
The University of Texas at Austin
Austin, TX 78712-1229

------------------------------------------------------------------------------
BPM Camp - Free Virtual Workshop May 6th at 10am PDT/1PM EDT
Develop your own process in accordance with the BPMN 2 standard
Learn Process modeling best practices with Bonita BPM through live exercises
http://www.bonitasoft.com/be-part-of-it/events/bpm-camp-virtual- event?utm_
source=Sourceforge_BPM_Camp_5_6_15&utm_medium=email&utm_campaign=VA_SF
_______________________________________________
Libmesh-devel mailing list
Libmesh-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/libmesh-devel

Reply via email to