Very well put, Joram.
On Dec 9, 2014 11:48 AM, "Joram Schrijver" <i...@joram.io> wrote:

> Hi,
>
> As I see it, there are two things involved here:
>
> 1. Moving some of the elsewhere useful functionality into libraries
> 2. Refactoring internals to improve decoupling of mostly-unrelated
>    functionality.
>
> I'll first address the second point, since I see it as somewhat of a
> prerequisite for the first.
>
> As it is right now, closely related functionality is often implemented
> in different parts of the codebase. This makes changes harder than
> needed because you'll have to first find out what assumptions the
> different users of the code make. It makes maintenance hard and new
> development harder.
>
> This is a lot of work to fix, because it requires changes to practically
> the entire codebase. I think it's worth it though.
>
> An approach that could work is to use one package per file. I've seen it
> used quite a bit recently and ASDF supports it through its
> package-inferred-system extension.[1][2] Doing this basically forces
> thinking about an API for the different types of functionality that are
> implemented. There are, right now, a group API and a window management
> API in the codebase, but because everything is in the same package
> there's no obvious separation between implementation and interface.
>
> I hope to have some time in the next few weeks in order to try this
> approach and see if it helps. It doesn't need to happen all in one go,
> so experimentation is possible.
>
> When the StumpWM codebase is less coupled, turning parts of it into
> separate libraries should be a lot easier. Then including those
> libraries in the build process is the next problem.
>
> Right now StumpWM only uses Quicklisp on LispWorks, to try to install
> it. For other implementations there's no dependency on Quicklisp, only a
> recommendation in README.md. The loading of dependencies is not handled
> any further. The simplest way to go about an increase in dependencies is
> probably to use the same approach we're using right now: mostly ignore
> it. Most Common Lisp projects don't really do anything more, depending
> on the user to figure it out by using Quicklisp or some other means.
>
> For a project like StumpWM, that isn't aimed just at Common Lisp
> programmers, adding more dependencies might make this approach too much
> of a hassle, because every dependency would make installing StumpWM
> more work. That could be solved by including any dependencies in the
> release somehow (git submodules?), or by downloading them during the
> build process.
>
> Of course at that point we're in Quicklisp territory. I personally think
> it might be interesting to see if including Quicklisp is feasible.
> There's the potential of using a custom "dist" to load modules and
> dependencies from the internet. I have no idea if this is actually
> possible and/or a good idea, but I think it's worth looking into.
>
> Long story short, I think a first priority should be to organize the
> StumpWM codebase better. It makes the code more maintainable and makes
> it easier to turn parts of it into separate libraries. This is a bit of
> a big project, but it can probably be done piece by piece once an
> approach is chosen. For installing dependencies multiple approaches can
> be chosen and I don't think we should dismiss Quicklisp just yet.
>
> --
>   Joram
>
> [1]:
>
> http://common-lisp.net/project/asdf/asdf/The-package_002dinferred_002dsystem-extension.html#The-package_002dinferred_002dsystem-extension
> [2]:
>
> http://davazp.net/2014/11/26/modern-library-with-asdf-and-package-inferred-system.html
>
>
> On Tue, Dec 9, 2014, at 04:35 PM, David Bjergaard wrote:
> > Hi All,
> >
> > There was some talk on the issue tracker a while back about factoring
> > out StumpWM's useful bits so they could be used in other projects.  In
> > addition there are some parts of stumpwm which have obvious boundaries
> > (floating vs tiled groups).
> >
> > The arguments for are obvious.  The arguments against are:
> > - Increases StumpWM's external dependencies
> > - Complicates the build process
> > - Increases barrier for people packaging StumpWM for distros
> >
> > I'm thinking that most of the arguments against could be glossed over
> > with appropriate Makefile rules.  I'm open to other suggestions.  I
> > suppose some sort of lispy solution might be in order.  I think we would
> > have to handle the following cases:
> >
> > - users already have dependencies installed via quicklisp
> > - users have dependencies installed via distro's package manager
> > - users don't have any dependencies and need them checked out.
> >
> > I don't want to reimplement quicklisp in stumpwm.  I don't want to
> > depend on quicklisp for the actual build process.  (Right now its used
> > to get dependencies, but as part of the pre-reqs not the actual build
> > that is driven by make).
> >
> > I'm hoping we can have a discussion here to help codify a way forward,
> > because I think there is great value in having the packages available
> > for other lisp hackers (myself included for a project I have cooking).
> >
> >     Dave
> >
> > _______________________________________________
> > Stumpwm-devel mailing list
> > Stumpwm-devel@nongnu.org
> > https://lists.nongnu.org/mailman/listinfo/stumpwm-devel
>
> _______________________________________________
> Stumpwm-devel mailing list
> Stumpwm-devel@nongnu.org
> https://lists.nongnu.org/mailman/listinfo/stumpwm-devel
>
_______________________________________________
Stumpwm-devel mailing list
Stumpwm-devel@nongnu.org
https://lists.nongnu.org/mailman/listinfo/stumpwm-devel

Reply via email to