A couple years ago phplist was talking about exposing a real web services API so that you wouldn't need such tight integration with the app. It is probably better to keep the functionality encapsulated and only talk to the ml through its interface. The last time I played with it, however, there wasn't one, and we had a go at writing one. However any third party solution written at that time needed to know stuff about its internal db schema, which was not a very long term solution. However, our decision was that knowing about its schema was better than knowing all about its code. If phplist did expose a full-fledged API you wouldn't worry about the internal implementation of the ml (MVC or otherwise) or its schema, you would just write some classes to give it what it wants, and take what it gives you back and make it do what YOU want.