Skip to content

Refactor towards ROP #464

Closed
Closed

Description

@theimowski

What do you guys think about employing the Railway Oriented Programming in Paket codebase?

One obvious benefit would be that in case of any failure, no file would get modified. (yeah I know one could simply git reset, but that is probably not the best UX)

A command-line tool seems like a good candidate for the ROP technique.
As a volunteer I could do an experiment with the commands I'm most familiar with, i.e. convert-from-nuget and simplify to see where we can get to.

Edit:
List of paket commands that use ROP:

  • Init
  • Add
  • Remove
  • Install
  • Restore
  • Update
  • Outdated
  • ConvertFromNuget
  • InitAutoRestore
  • Simplify
  • FindRefs
  • Config

Activity

  1. isaacabraham commented on Dec 21, 2014

    @isaacabraham
    Contributor

    I'm using that approach on another project with a lot of success. It works well when there's a clear, linear pipeline of operations.

  2. forki commented on Dec 21, 2014

    @forki
    Member

    I have no objections ;-)

  3. forki commented on Jan 5, 2015

    @forki
    Member

    are you going to refactor other commands as well?

  4. theimowski commented on Jan 5, 2015

    @theimowski
    MemberAuthor

    I plan to, but surely it can take more time.
    Applying ROP gradually (i.e. not in a single PR) to the commands should be less error-prone

  5. forki commented on Jan 5, 2015

    @forki
    Member

    +1

  6. added a commit that references this issue on Jan 7, 2015
  7. forki commented on Jan 7, 2015

    @forki
    Member

    I wonder what Scott Wlashin is thinking about this!? It's becoming probably the biggest OSS project on ROP.

  8. theimowski commented on Jan 7, 2015

    @theimowski
    MemberAuthor

    yeah, it'd be great if he could review the stuff one day when more commands use ROP, and tell whether that's what he meant 👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions