ASPATH is on early stage development

You can help us to get faster to our first stable release!

We have some pending quests that need to be addressed:

  • Website internationalization (i18n): This website is powered by VuePressopen in new window, an static page generator that supports multi-language content out of the box.

    To check how VuePress main website implements multiple languages, their github repoopen in new window is available publicly.

    To do list:

    • Implement i18n functions on VuePress (needed for implementing other languages)
    • Translate to Spanish
    • Translate to Portuguese
  • Refactoring / Code Quality: There are a lot of refactoring opportunities on both frontend and backend projects. Contributions that help get a better responsibility separation and adopt better code patterns are welcome.

    To do list:

    • Frontend: Split Vue components into smaller parts
    • Backend: Decouple API logic from business logic.
  • Quagga Parser Rewrite: The current quagga parser module uses 2 regex codes of an Apache-2.0 Licensed project. In order to keep the project MIT-licensed, a rewrite should be done to get rid of those snippets coming from a more restrictive licensing.

    To do list:

    • Re-implement the following regex:
        APACHE_REGEX_3_2 = re.compile(r'^\s*(?P<status_codes>(s|x|S|d|h|\*|\>|m|r|\s)+)?'
                                      r'(?P<path_type>(i|e|c|l|a|r|I))?\s{10,20}'
                                      r'(?P<next_hop>[a-zA-Z0-9\.\:]+)'
                                      r' +(?P<metric>(?:\d+(?=[ \d]{13}\d ))?) +(?P<weight>\d+)'
                                      r'(?P<path>[0-9 \S\{\}]+)#39;)
    
    1
    2
    3
    4
    5
    • Re-implement the following regex:

      APACHE_REGEX_P4 = re.compile(r'^\s*(?P<status_codes>(?:s|x|S|d|h|m|r|\*|\>|\s)+)?'
                              r'(?P<path_type>(?:i|e|c|l|a|r|I))? *'
                              r'(?P<prefix>[a-zA-Z0-9\.\:\/\-\[\]]+) +'
                              r'(?P<next_hop>[a-zA-Z0-9\.\:]+) +'
                              r'(?P<metric>(?:\d+(?=[ \d]{13}\d ))?) +'
      #                       r'(?P<local_prf>(?:\d+(?=[ \d]{6}\d ))?) +'
                              r'(?P<weight>\d+)(?P<path>[0-9 \S\{\}]+)#39;)
      
      1
      2
      3
      4
      5
      6
      7

      Given that we are not using all that data, a much simpler regex string can be implemented. Also, the current implementation didn't completely work on sample PCH show ip bgp snapshots, hence the commented line.

      # Where to start