Apologies in advance for the rant:
I am not sure face-to-face meetings, unless if you count google hangouts, would be a practical solution. Our volunteering is just affected by so many things that really make this an unviable option. I would however welcome weekly (or even biweekly) developer calls to review scope, planning and roadmap for the project. This seems like our best bet moving forward and we just have to come up with a schedule that works for the majority. >From a pure technical point of view, I’d welcome any and all design discussions/suggestions around the roadmap of the project. Using spring-webflow to model the authentication sequence seems like a reasonable approach (although before fully moving in that direction I suppose we really need evaluate the roadmap for SWF and see where it’s headed. Discussions around SWF3 date back to 2010 which is somewhat alarming). Removing configuration overhead and identifying knobs and settings that are no longer actively pursued are most welcome. Decoupling CAS to resolve around a set of small microservices (which seems to be the buzz word these days) is also perfectly sound idea. >From a functional/practical point of view, I am not sure we can, or even need to afford changes of that magnitude in one shot. Big design only works if we can afford the time, patience and energy to go through with it and it’s obvious at least to me that we can’t budget it that way. While it’s perfectly fine to ponder, elaborate, document and discuss design points and come up with a big picture, it’s impractical and frankly unnecessary to implement at this point. I am not sure, personally, if I feel the same pain points as you do. Sure, there are a few things that could be improved but I am struggling to find a practical rationale and use case that would actually benefit our adopters and community through big change. Maybe I am ignorant, but I can’t find any that would justify this. It’s true that support for multiple protocols could be vastly improved and rewritten, but I am not sure there is a demand for this big change or that we have use cases and requirements available to us that are just presently impossible or super painful to implement. At least not in one big swoop. I would much prefer if we came up with a design and a rationale behind that design based on actual use cases and requirements demanded by the community, and then slowly but surely march towards the goal. It may seem wasteful upfront, but it’s also unfair to ask any individual to go off with a design doc and come back with 50000 LOC and a shiny new system. Now, don’t get me wrong; I would love to spend time to figure out what CAS NextGen (that just sounded way too commercial, didn’t it?!) would look like but I do also realize that at this point, with our budget, time, effort and level of collaboration amongst other obligations that time spent would mostly just amount to a theoretical exercise. Of course, I could be persuaded otherwise. Now, I am sure (and I have been guilty of this myself) that we could communicate our task list and ideas better on the list to give everyone an overview of and a deep-dive into what we’d each like to work on and what possible solutions for those might exist, before the presentation of the code for the ideas! This definitely would be more collaborative, and as Scott says, would help with the code review process as well. It’s all about giving, sharing and receiving :) If we all synchronize our watches on the same of features and changes, it would definitely be progress in the right direction. I have personally tried to use our issue tracking system to document ideas and features herw and there and have been using the list less, but I could change. Have a great thanksgiving weekend, everyone. From: Jérôme LELEU [mailto:lel...@gmail.com] Sent: Friday, November 21, 2014 7:36 AM To: cas-dev@lists.jasig.org Subject: Re: [cas-dev] CAS design perspective from the outside Hi, 2014-11-20 16:20 GMT+01:00 Marvin Addison <marvin.addi...@gmail.com>: I've been wanting to do some big design work on this project for years, and I finally got my chance: by contributing CAS protocol support to Shib IdPv3. I am very pleased with the end result and it's worth noting a few broad design points that are worth considering for Jasig/Apereo CAS: Contributing a full SAML support to CAS server would have been a great design work as well ;-) 1. Everything is a flow. I proposed this a while back for Jasig CAS and got a lukewarm response, but I was able to work though all the details to produce a clear, testable, and extensible implementation. Moreover the experience has proved that Spring Webflow is an excellent facility for modeling arbitrary protocol logic for a multi-protocol SSO product. I guess we all agree on this. 2. Small set of simple core services, e.g. storage, session, messaging, on top of which the protocol logic is built. You can see how I leveraged a stupid simple storage service to model proxy chains [1,2] while avoiding the huge headaches of Java serialization that have plagued us for years. I'm not sure to follow you here. We have used Hibernate for DB persistence and Kryo also for Memcached (and truly it has caused problems but upgrading Kryo would help us a lot). A very promising direction we have taken recently is to use more and more JSON serialization. 3. Configuration points that matter. I think CAS has become too configurable out of the box. Service ticket usage count is an excellent example of a configuration point that no one uses, but there are countless others that have marginal value. We invite support headaches and increase development costs by allowing configuration in most if not all components. Reduce and simplify. Certainly, so let's remove useless features. I'm sure a PR removing ticket usage count would have been successfully +1. My sense is that we're spending inordinate amounts of time discussing relatively minor changes, and anything that touches on design becomes mired in endless discussion. Here's a few current or recent issues that I thought were symptomatic: https://github.com/Jasig/cas/issues/669 https://github.com/Jasig/cas/pull/730 https://github.com/Jasig/cas/issues/695 Extensive discussion for small changes is wasteful; we're a small team and we don't have the resources to suffer inefficiency. Spending BIG time on BIG changes, on the other hand, is healthy and productive. I encourage some BIG design work in the near future, and face-to-face meetings might be the most productive. A recent cas-pmc thread suggests Apereo is willing to support F2F meetings, so it seems like an opportune time to consider some serious in-person design work. Yes, we must be efficient and spend most of our times on big changes. I would not say that these discussions you mentioned are useless, it helps us update our thoughts and reflection. But we could have done better because we really need design meetings to synchronize together. But because of our time zones and constraints, it has always been difficult. With Scott trapped at work and me in France, it's pretty difficult to find the right schedule and I'm willing to do that during week-ends if it's possible. Moving to US regularly for design meetings is not possible for me, but I should come to next Apereo conference: I don't know how other contributors feel to meet in US: is it something easy for them? Because we can setup video conference: not perfect, but close to a face-to-face. Your post sounds negative, but it's not how I feel. Involvment in open source is not easy unless you are alone on your project and if we don't have made major step lately, I think it was interesting small ones at least. Thanks for sharing your thoughts. Best regards, Jérôme -- You are currently subscribed to cas-dev@lists.jasig.org as: mmoay...@unicon.net To unsubscribe, change settings or access archives, see http://www.ja-sig.org/wiki/display/JSG/cas-dev -- You are currently subscribed to cas-dev@lists.jasig.org as: arch...@mail-archive.com To unsubscribe, change settings or access archives, see http://www.ja-sig.org/wiki/display/JSG/cas-dev