+1 On Thu, Aug 6, 2015 at 7:47 AM, Tim Donohue <tdono...@duraspace.org> wrote:
> Hi Developers / Committers, > > As mentioned in yesterday's developers meeting, I'm calling a public VOTE > around whether we include the Services API refactoring in the upcoming > DSpace 6.0 release. As this change constitutes a major code refactor of > the "dspace-api" (DSpace Java API), we'd appreciate feedback from anyone on > this direction for 6.0. (If you have not yet read about the Services API > refactoring, a brief summary and links to more information is provided at > the end of this email) > > Please VOTE with one of these three options: > > +1 = "I agree. We should include Services API refactoring in 6.0" > > 0 = "I'm undecided / unsure" (Please provide a reason) > > -1 = "I disagree. The Services API refactoring should NOT be included in > 6.0" (Please provide a reason why you disagree) > > Per our Voting Procedures [1], a vote on code modifications requires: "at > least three positive (+1) votes, and no negative votes (-1) to pass. In > this scenario, a negative vote constitutes a 'veto'." While *anyone* is > welcome to vote, only Committers have "binding" votes (and can cast a > veto). Others are free to vote to express your opinion, but those votes > are considered advisory in nature. > > This public vote will be open until *15:00 UTC (11:00am EDT) on > Wednesday, August 12* (which is the time of our next Developer Meeting). > > If there are any questions, feel free to ask them on this thread. > > > *Summary of Services API refactoring* > > The Services API refactoring is a major refactoring of the "dspace-api" > (DSpace's Java API) to better support "separation of > concerns/responsibilities". Simply put, often, in the existing API, there > is an intermingling of business logic and database logic which is difficult > to maintain, debug and/or build against. One of the most obvious examples > is how we deal with database software support (PostgreSQL vs. Oracle), but > such intermingling of logic exists in many of our core classes. The DSpace > "Services API" attempts to tease apart the database logic from the business > logic into separate layers, while also adding support for Hibernate ( > http://hibernate.org). The goal is to provide an easier to maintain, > more modular API, while also enhancing how we deal with database logic in > general (via Hibernate). > > Much more information with documentation, tutorials/examples, and a video > presentation at: > https://wiki.duraspace.org/display/DSPACE/DSpace+Service+based+api > > What does adding this refactor to 6.0 mean? > > - This is essentially a *new* Java API for DSpace. But, it performs a > very important refactor (see "Pros" below). > - It is not backwards compatible with the existing API. All > developers and Committers who work with the Java API will need to learn > this new API, as all future development will require using this Java API. > - Committers will be expected to learn, use and support this API > immediately. @mire will be providing additional training materials / > examples to help everyone get up to speed. > - We also will need immediate help from Committers (or other > volunteers) to refactor and test all other modules within DSpace. > Currently, only the XMLUI has been refactored to support this new API. > All > other modules (JSPUI, OAI, REST, RDF, SWORD, etc) will need similar > refactoring as soon as possible. > - If this refactor is voted in, Committers will immediately do the > following: > - The "master" branch will be temporarily frozen. We'll ask for no > new changes until this API can be merged (PRs can still be created, but > we > will refrain from merging them) > - We'll start a new (temporary) feature branch (under > DSpace/DSpace) based of latest "master" and merge the existing Services > API > code there. > - We'll then rapidly work together to refactor and test all other > modules based on the new API. (If we work as a team, the goal would be > for > this process to only take a few weeks) > - Once everything is refactored against this API and passes our > Unit Tests, the Services API code will be merged into "master". At this > point, "master" will be unfrozen, and we can again merge in PRs for the > 6.0 > release. > > PROS to adding to 6.0: > > - It modularizes our primary API in a way that makes it much easier to > achieve future goals on our Roadmap [2] (especially, moving us towards > potentially better support of third-party modules) > - It cleans up one of the "messiest" areas of our existing API, the > Database management / hardcoded Oracle and PostgreSQL queries, in favor of > using Hibernate. This allows us the potential to support additional > database platforms in the future (e.g. MySQL or similar). It decreases the > likelihood of Oracle-specific bugs (which have always been a problem), as > the Oracle queries are delegated to Hibernate. It also simplifies the > process of testing for database-specific problems in general (as again, all > queries are delegated to Hibernate). > - It begins teasing apart a true "business logic layer" in the API > (see the "service layer" of this new API) > - The API itself will not affect the fresh installation or upgrade > process of DSpace 6.0, provided that you have not made local changes that > rely on the existing Java API (dspace-api). If you have made such local > changes, the refactor process should not be difficult, but it will be > necessary before you can successfully upgrade to 6.0. > > CONS: > > - It is not backwards compatible with the existing Java API. Again, > anyone who has made customizations that rely on the Java API (dspace-api) > may need to refactor their local customization. But, we believe that vast > majority of institutions (likely 90% or more) should not experience any > upgrade difficulties, as most only make customizations to the theme / look > and feel of either the XMLUI or JSPUI. > - As it is not backwards compatible, this does mean that existing PRs > (Pull Requests) reliant on the Java API may need refactoring/rebasing. > Unfortunately there's no easy way around this, but examples already exist > in the documentation (see wiki page linked above) showing how to perform > common tasks via the new API. > - As this is a major change, it could affect our 6.0 timelines unless > we can work together to quickly get this change merged and tested. The > quicker the merge process occurs, the more rapidly we can stabilize > everything (and refactor existing PRs as needed). > > > [1] https://wiki.duraspace.org/display/DSPACE/Developer+Voting+Procedures > [2] https://wiki.duraspace.org/display/DSPACE/RoadMap > > -- > Tim Donohue > Technical Lead for DSpace & DSpaceDirect > DuraSpace.org | DSpace.org | DSpaceDirect.org > > > > ------------------------------------------------------------------------------ > > _______________________________________________ > Dspace-devel mailing list > Dspace-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/dspace-devel > > -- Terry Brady Applications Programmer Analyst Georgetown University Library Information Technology https://www.library.georgetown.edu/lit/code 425-298-5498 (Seattle, WA)
------------------------------------------------------------------------------
_______________________________________________ Dspace-devel mailing list Dspace-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/dspace-devel