# NLSR Authors

The following lists maintainers, primary developers, and all much-appreciated contributors to NLSR in alphabetical order.
The specific contributions of individual authors can be obtained from the git history of the [official NLSR repository](https://github.com/named-data/NLSR).
If you would like to become a contributor to the official repository, please follow the recommendations in <https://github.com/named-data/.github/blob/main/CONTRIBUTING.md>.

* Alexander Afanasyev <https://users.cs.fiu.edu/~afanasyev>
* Adam Alyyan <https://github.com/a64adam>
* Syed Obaid Amin <http://obaidamin.weebly.com/>
* Pedro David Arjona Villicaña <https://github.com/david-arjona>
* Muktadir R. Chowdhury <https://github.com/alvyC>
* Damian Coomes <https://github.com/dmcoomes>
* ***(Maintainer)*** Saurab Dulal <https://dulalsaurab.github.io>
* Laqin Fan <https://github.com/laqinfan>
* Simon Fayer <https://github.com/sfayer>
* ***(Former Maintainer)*** Ashlesh Gawande <https://www.linkedin.com/in/agawande>
* ***(Former Maintainer)*** Nicholas Gordon <https://github.com/gorgonical>
* ***(Former Maintainer)*** A. K. M. Mahmudul Hoque <https://sites.google.com/site/akmhoque/home>
* ***(Former Maintainer)*** Vince Lehman <http://vslehman.com>
* Tianxing Ma <https://github.com/matianxing1992>
* Spyridon Mastorakis <https://sites.google.com/site/spyridonmastorakis>
* Eric Newberry <https://ericnewberry.com>
* João Pereira <http://website.jpereira.co.uk>
* Davide Pesavento <https://github.com/Pesa>
* Md Ashiqur Rahman <https://ashiqrahman.com>
* Junxiao Shi <https://cs.arizona.edu/~shijunxiao>
* Salvatore Signorello <https://wwwen.uni.lu/snt/people/salvatore_signorello>
* Jiewen Tan <https://www.linkedin.com/in/jiewentan>
* Alejandro Gil Torres <https://github.com/gltorres>
* Ryan Wickman <http://rwickman.github.io>
* Yingdi Yu <https://irl.cs.ucla.edu/~yingdi>
* Minsheng Zhang <https://www.linkedin.com/in/minsheng-zhang-032023a1>

## Technical Advisors

* Lan Wang <http://www.cs.memphis.edu/~lanwang>
* Beichuan Zhang <https://cs.arizona.edu/~bzhang>
* Lixia Zhang <https://web.cs.ucla.edu/~lixia>
