Contribute to the DSpace Development Fund

The newly established DSpace Development Fund supports the development of new features prioritized by DSpace Governance. For a list of planned features see the fund wiki page.

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 19 Next »

Sprints

Sprint #1 (April/May TBD, 2018)

(Assumption: two week sprint?)

Possible dates:

  • April 23 - 27 and April 30 - May 4
  • April 30 - May 4 and May 7 - 11
  • May 7 - 11 and May 14 - 18

Participants

(NOTE: Please refrain from signing up until the Sprint dates are finalized. This will ensure you are able to contribute during the Sprint. An announcement will be sent to mailing lists & Slack when signup is open/available. In the meantime, you are welcome to comment on this Sprint or the framework via comments to this Wiki page)

  • [Your Name here]

Sprint Coaches

Coaches should be available during the full sprint for help getting up to speed / answering questions / debugging issues / pair programming requests, etc.


Sprint Goals

(NOTE: Currently these goals are very high-level. They need to be broken down into specific tasks / tickets prior to the Sprint, so that those tickets are claimable by individuals.)

  1. Alphabetic jump to (specific letter) in results listing (NOTE: Below browse tasks have a dependency on this feature.  Should we do this prior to the sprint?)
    1. E.g. Jump to a Title / Author starting with a specific letter or string, like http://demo.dspace.org/xmlui/browse?type=title
  2. Build out Administrative Search/Browse tools (each of these tools is limited to Site Administrators)
    1. Find Item by Internal Item ID/Item Handle  (e.g. XMLUI: http://demo.dspace.org/xmlui/admin/item , JSPUI: http://demo.dspace.org/jspui/tools/edit-item)
    2. Browse Withdrawn Items (by Title) (e.g. XMLUI: http://demo.dspace.org/xmlui/admin/withdrawn , JSPUI: http://demo.dspace.org/jspui/dspace-admin/withdrawn)
    3. Browse Private Items (by Title) (e.g. XMLUI: http://demo.dspace.org/xmlui/admin/private , JSPUI: http://demo.dspace.org/jspui/dspace-admin/privateitems)
  3. Improve developer documentation / getting up-to-speed documentation.

UI Tasks

These are somewhat lower level than the goals above, in order to get an idea of the effort required, but need more detail before they can be turned in to github issues

Alphabetic jump to (specific letter) in results listing

  • Service
    • Effort: 24h
    • To do

      • construct the Rest URL based on the params

      • parse the response

      • ensure everything gets cached properly

      • build remotedata objects for results

      • write tests

  • StartsWithComponent
    • Effort16h

    • To do

      • show letters as links
      • show a startswith input
      • handle the case for phone screens (too small to show the alphabet)
      • call the service with the correct query
      • links should work with js disabled
      • component should be abstract enough to be used with any kind of list
      • write tests

Browse By Title Component

  • Description
  • Effort: 8h
  • To do:
    • create the component
    • configure the routes
    • call the service with optional scope and metadatafield filters
    • configure existing components for alphabetic filtering, object lists and pagination to work with the correct data
    • write tests

Browse By Metadata Field Component:

  • Description
    • has an alphabetic selector or a date selector at the top
    • shows a list of metadata values
    • can be paged and sorted
    • links go to a browse by title view filtered by the scope and the metadatafield of this component
  • Effort: 16h
  • To do:
    • create the component
    • configure the routes
    • configure existing components for alphabetic filtering, object lists and pagination to work with the correct data
    • create a component to select by date
      • reuse the search’s date widget?
    • Create an object list entry for metadata values
    • the metadatafield it works with should be configurable: title, author, subject, etc.
      • this should reflect in the route e.g. /collection/:id/browse/title
      • and the i18n labels.
    • It should work with or without a scope
    • write tests

Build out Administrative Search/Browse tools (each of these tools is limited to Site Administrators)

Find Item by Internal Item ID/Item Handle
  • Routing by handle
    • Effort: 24h
    • To do:
      • Create an index that maps handles to self links
      • Modify the DSOResponseParsingService, to update the handle index every time an object is added to the cache
      • add hasByHandle and getByHandle methods to ObjectCacheService
      • modify RequestService.configure to check by handles as well to determine if something is cached.
        • perhaps make the fields to check for configurable, I could imaging a check by DOI for example
      • Add findByHandle to DataService
      • configure handle based routes, that redirect to the DSOType based route
      • write tests
  • Find Item admin component
    • Examples:
    • Effort: 8h
    • To do:
      • write a component that allows you to enter the ID or handle
      • on submit, determine whether it’s an id or a handle, and redirect to its edit page
      • configure the route, using a guard that limits access to authorized users
      • ensure the return button on the edit page returns you to the Find Item admin page
        • preferably by using the route history in the store (or even browser history) rather than specifying the source page as a param
      • write tests
Browse Withdrawn Items (by Title)
  • Examples:
  • Effort: 12h
  • To do:
    • configure the route, using a guard that limits access to authorized users
    • create the component based on the browse by title component
    • add findWithdrawn(startsWith: string): Observable<RemoteData<PaginatedList<Item>>> to ItemDataService
      • it should determine the correct URL to request on the backend, the rest should already be in place from other findBy methods.
    • write tests
Browse Private Items (by Title)
  • Examples
  • Effort: 12h
  • To do:
    • configure the route, using a guard that limits access to authorized users
    • create the component based on the browse by title component
    • add findPrivate(startsWith: string): Observable<RemoteData<PaginatedList<Item>>> to ItemDataService
      • it should determine the correct URL to request on the backend, the rest should already be in place from other findBy methods.
    • write tests

Resources

Sprint Schedule

  • Weekly Kickoff Meeting (each Monday)
    • Sprint Participants (or a representative from your organization) should attend the Sprint Week Kickoff Meeting in DSpace Meeting Room.
      • Anyone unable to attend must touch base with the Sprint Coordinator (Tim Donohue) via another means (Slack, DSpace Meeting Room, email, etc) for any necessary information.
    • The goal of the Kickoff meeting is to:
      • Touch base & finalize plans / goals for the Sprint week (i.e. ensure everyone is on the same page)
      • Ensure all participants have assigned tasks, and any necessary support/resources to begin their work
      • As necessary, go through expectations / protocols of the Sprint (e.g. Contributing code via PRs, Where to ask for help/support, Meeting schedule for week, etc)
      • Address or discuss any questions that sprint participants may have
  • Daily Standups via Slack: On each day of the sprint (Tues-Fri), prior to 15:00 UTC, each participant should report their status update in the Slack #dev channel.  This will act as our daily "standup" meeting.
    • Template (feel free to copy and paste into Slack and fill in the details)

      Standup Template
      [DSpace 7 Sprint]
      Tasks completed: 
        * List ticket titles / links that you completed (since your last update)
        * Please include brief textual description
      Working on:
        * List ticket titles / links that you plan to work on next (or continue work on)
        * Please include brief textual description
      Blockers:
        * Is there anything blocking your progress today? Give a brief textual description
  • Additional meetings may be scheduled as necessary

Support Options

  • Requests for help / questions can be asked on Slack (#dev channel).
  • The DSpace Meeting Room may also be used to do pair programming / screen sharing / ad hoc meetings / support. Keep in mind we only have the one room, so be sure to share it with others if they need it.
  • No labels