# ndn-tools Authors

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

* Jerald Paul Abraham <https://cs.arizona.edu/~jeraldabraham>
* ***(Maintainer)*** Alexander Afanasyev <https://users.cs.fiu.edu/~afanasyev>
* Stephanie DiBenedetto
* Ashlesh Gawande <https://www.linkedin.com/in/agawande>
* Chavoosh Ghasemi <https://chavoosh.github.io>
* Nick Gordon <https://github.com/gorgonical>
* Xiaoke Jiang <http://netarchlab.tsinghua.edu.cn/~shock>
* Seungbae Kim <https://sites.google.com/site/sbkimcv>
* Vince Lehman <http://vslehman.com>
* Zhuo Li <https://github.com/mrzhuoli>
* Teng Liang <https://cs.arizona.edu/~philoliang>
* Weiwei Liu <https://www.linkedin.com/in/weiweiliu10>
* Eric Newberry <https://ericnewberry.com>
* João Pereira <http://www.jpereira.co.uk>
* ***(Maintainer)*** Davide Pesavento <https://github.com/Pesa>
* Klaus Schneider <https://cs.arizona.edu/~klaus>
* Wentao Shang <https://irl.cs.ucla.edu/~wentao>
* Susmit Shannigrahi <https://susm.it>
* Junxiao Shi <https://cs.arizona.edu/~shijunxiao>
* Jeff Thompson <https://remap.ucla.edu/jeff-thompson>
* Andrea Tosatto <https://linkedin.com/in/tosattoandrea>
* Zipeng Wang <https://github.com/zpwang2113>
* Ryan Wickman <https://rwickman.github.io>
* Seunghyun Yoo <https://relue2718.com>
* Qianshan Yu
* Yingdi Yu <https://irl.cs.ucla.edu/~yingdi>
* Qi Zhao <https://web.cs.ucla.edu/~qi.zhao>
