[OpenAFS-devel] [GSoC Proposal Plaintext] Netcat for Rx by Zhengfei Li (Alex)
Zhengfei Li
zhengfeili.alex@gmail.com
Thu, 27 Mar 2025 11:55:46 -0400
--0000000000005acc5d063154fd0d
Content-Type: text/plain; charset="UTF-8"
Dear OpenAFS community and developers,
I hope this email finds you all well.
My name is Alex (Zhengfei Li), a graduating Computer Science major from
Swarthmore College. I am writing to reach out regarding my Google Summer of
Code proposal titled "Netcat for Rx".
In my proposal, I plan to develop a Netcat-like command-line utility for Rx
and provide a simple tool for developers to test connectivity, debug, and
automate tasks. I would greatly appreciate any feedback or guidance on the
status of this project and my proposal. Specifically, I am eager to
understand:
- unique aspects of Rx that demand special attention
- suggestions on the tool's scope
- any potential pitfalls I should be aware of
Thank you very much for your time reviewing my proposal. I am open to any
feedback, engaging with you, and refining my proposal with your expertise.
Best,
Alex
<--- Below is the plain text of my proposal --->
# Biography
Greetings! I'm Alex, a graduating Computer Science major from Swarthmore
College, passionate about file systems and networks projects.
This fall, I will be joining the Carnegie Mellon University MSCS program,
eager to explore deeper into networking.
I have completed courses in OS and Computer Networks, gaining a robust
understanding of file systems, TCP/UDP, and socket programming with C and
Python. In my "Simple Firewall" course project, I extensively used netcat
for tasks like debugging with manual protocol interactions and setting up
simple servers or listeners to test firewall rules. This experience greatly
improved my understanding of network security and my skills in network
analysis and troubleshooting.
Familiarizing myself with the Rx protocol, I achieved a primary
understanding that Rx is a connection-oriented protocol that operates over
UDP and supports service multiplexing. I explored tools like `rxgen' and
`rxdebug', though I have not yet used it productively. I am a quick learner
and I am confident that I can convert my theoretical knowledge into
implementation practices in days.
I have work experience related to software. During the summer of 2023, I
joined a Computer Education research team and collaborated on developing an
interactive online exercise webpage based on an open-source project
Runestone. I took a lead in program design and this experience also
involves navigating extensive code bases, enhancing my ability to
comprehend and contribute to large projects. The website is already live,
with functionalities receiving acclaim from our faculties and students. In
the summer of 2024, I worked as a Business Data Analyst intern at SETVI, a
SaaS startup, where I greatly improved my communications and formalized my
documentation practices.
I am passionate about contributing to OpenAFS through the `netcat for Rx'
project, observing it as a natural extension of my academic and personal
interest. I really look forward to working with the community, learning
more about OpenAFS, and developing tools for Rx-based services.
## Availability
I plan to start this 12-week project on June 16, with a commitment of
around 8 hours each weekday. In addition, I have daily family obligations
of around 3 hours and allocate 1 hour daily to exercise. During the
weekends, I plan to spend 5 hours on prototyping a startup idea.
# Project Information
## Netcat for Rx
OpenAFS uses RxRPC to support the distributed files system, which provides
reliable ordered message delivery, multiplexed channels and built-in
security features. However, there are no simple command-line utilities for
Rx network debugging and investigation. This project proposes to build a
netcat-like tool for Rx protocol. This would fill the gap in the current
toolset for OpenAFS administration and development community.
For the functionalities of `netcat for Rx', we hope to achieve the
following objectives:
-Test Rx network connectivity (e.g., with echo request)
-Debug Rx interactions
-Automate tests particularly for OpenAFS services.
-Rx server and listener emulation
Considering the massive amount of requests, C programs with tight time and
space complexity would be designed for performance. I plan to draw from
established netcat sources and use cases (like port scanning) and design
comparable utility functionalities. In addition, I would also investigate
unique features of Rx (like channel multiplexing) and devise helpful tools
with reference to developers' daily experiences and demands.
## Project Schedule and Deliverables
Following is a tentative plan with a duration of 12 weeks. For each phase,
I summarized the objectives and the deliverables.
### Week 1-2
Objectives:
-Conduct research on Rx protocol (and ideally gather user demand for
the toolset)
-Review netcat functionalities and code bases
-Finalize the scope of features to be completed in 12 weeks
Deliverables:
-Scoping document of functionalities
### Week 3-6
Objectives:
-Design the tool architecture and develop a command-line interface
prototype
-Iteratively improve the design based on the project scale and feedback
Deliverables:
-A documentation of functionalities with design
-Code for prototype
### Week 7-10
Objective:
-Implement the features
-Implement ``simple'' unit tests for individual features
Deliverables:
-Code for implementation
-Unit test report for features
### Week 11-12
Objectives:
-Finalize the implementation
-Conduct thorough testing that simulates a typical developer workflow
-Finalize the documentation
-Prepare for project evaluation
Deliverables:
-Complete code base
-Comprehensive test files streamlining use cases
-Complete user documentation and maintainer documentation
-Final project report if needed
## Test Plan
For each individual functionality, my unit tests will cover:
-each individual modules
-command line interface
-memory safety
For holistic testing, I plan to simulate a typical workflow of a developer
by:
-Simulate an OpenAFS environment
-Stress testing the tool with high volumes of requests, incomplete
requests and more to evaluate robustness
-Evaluate program performance
-Verify the accuracy of output presentation
-Improve upon feedback
--0000000000005acc5d063154fd0d
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr">Dear OpenAFS community and developers,<br><br>I hope this =
email finds you all well.<br><br>My name is Alex (Zhengfei Li), a graduatin=
g Computer Science major from Swarthmore College. I am writing to reach out=
regarding my Google Summer of Code proposal titled "Netcat for Rx&quo=
t;.<br><br>In my proposal, I plan to develop a Netcat-like command-line uti=
lity for Rx and provide a simple tool for developers to test connectivity, =
debug, and automate tasks. I would greatly appreciate any feedback or guida=
nce on the status of this project and my proposal. Specifically, I am eager=
to understand:<br>- unique aspects of Rx that demand special attention<br>=
- suggestions on the tool's scope<br>- any potential pitfalls I should =
be aware of<br><br>Thank you very much for your time reviewing my proposal.=
I am open to any feedback, engaging with you, and refining my proposal wit=
h your expertise.<br><br>Best,<br>Alex<br><br><--- Below is the plain te=
xt of my proposal ---><br># Biography<br><br>Greetings! I'm Alex, a =
graduating Computer Science major from Swarthmore College, passionate about=
file systems and networks projects.<br>This fall, I will be joining the Ca=
rnegie Mellon University MSCS program, eager to explore deeper into network=
ing.<br><br>I have completed courses in OS and Computer Networks, gaining a=
robust understanding of file systems, TCP/UDP, and socket programming with=
C and Python. In my "Simple Firewall" course project, I extensiv=
ely used netcat for tasks like debugging with manual protocol interactions =
and setting up simple servers or listeners to test firewall rules. This exp=
erience greatly improved my understanding of network security and my skills=
in network analysis and troubleshooting.<br><br>Familiarizing myself with =
the Rx protocol, I achieved a primary understanding that Rx is a connection=
-oriented protocol that operates over UDP and supports service multiplexing=
. I explored tools like `rxgen' and `rxdebug', though I have not ye=
t used it productively. I am a quick learner and I am confident that I can =
convert my theoretical knowledge into implementation practices in days.<br>=
<br>I have work experience related to software. During the summer of 2023, =
I joined a Computer Education research team and collaborated on developing =
an interactive online exercise webpage based on an open-source project Rune=
stone. I took a lead in program design and this experience also involves na=
vigating extensive code bases, enhancing my ability to comprehend and contr=
ibute to large projects. The website is already live, with functionalities =
receiving acclaim from our faculties and students. In the summer of 2024, I=
worked as a Business Data Analyst intern at SETVI, a SaaS startup, where I=
greatly improved my communications and formalized my documentation practic=
es.<br><br>I am passionate about contributing to OpenAFS through the `netca=
t for Rx' project, observing it as a natural extension of my academic a=
nd personal interest. I really look forward to working with the community, =
learning more about OpenAFS, and developing tools for Rx-based services.<br=
><br>## Availability<br><br>I plan to start this 12-week project on June 16=
, with a commitment of around 8 hours each weekday. In addition, I have dai=
ly family obligations of around 3 hours and allocate 1 hour daily to exerci=
se. During the weekends, I plan to spend 5 hours on prototyping a startup i=
dea.<br><br># Project Information<br><br>## Netcat for Rx<br><br>OpenAFS us=
es RxRPC to support the distributed files system, which provides reliable o=
rdered message delivery, multiplexed channels and built-in security feature=
s. However, there are no simple command-line utilities for Rx network debug=
ging and investigation. This project proposes to build a netcat-like tool f=
or Rx protocol. This would fill the gap in the current toolset for OpenAFS =
administration and development community.<br><br>For the functionalities of=
`netcat for Rx', we hope to achieve the following objectives:<br>=C2=
=A0 =C2=A0 -Test Rx network connectivity (e.g., with echo request)<br>=C2=
=A0 =C2=A0 -Debug Rx interactions<br>=C2=A0 =C2=A0 -Automate tests particul=
arly for OpenAFS services.<br>=C2=A0 =C2=A0 -Rx server and listener emulati=
on<br><br>Considering the massive amount of requests, C programs with tight=
time and space complexity would be designed for performance. I plan to dra=
w from established netcat sources and use cases (like port scanning) and de=
sign comparable utility functionalities. In addition, I would also investig=
ate unique features of Rx (like channel multiplexing) and devise helpful to=
ols with reference to developers' daily experiences and demands.<br><br=
>## Project Schedule and Deliverables<br><br>Following is a tentative plan =
with a duration of 12 weeks. For each phase, I summarized the objectives an=
d the deliverables.<br><br>### Week 1-2<br><br>Objectives:<br>=C2=A0 =C2=A0=
-Conduct research on Rx protocol (and ideally gather user demand for the t=
oolset)<br>=C2=A0 =C2=A0 -Review netcat functionalities and code bases<br>=
=C2=A0 =C2=A0 -Finalize the scope of features to be completed in 12 weeks<b=
r><br>Deliverables:<br>=C2=A0 =C2=A0 -Scoping document of functionalities<b=
r><br>### Week 3-6<br><br>Objectives:<br>=C2=A0 =C2=A0 -Design the tool arc=
hitecture and develop a command-line interface prototype<br>=C2=A0 =C2=A0 -=
Iteratively improve the design based on the project scale and feedback<br><=
br>Deliverables:<br>=C2=A0 =C2=A0 -A documentation of functionalities with =
design<br>=C2=A0 =C2=A0 -Code for prototype<br><br>### Week 7-10<br><br>Obj=
ective:<br>=C2=A0 =C2=A0 -Implement the features<br>=C2=A0 =C2=A0 -Implemen=
t ``simple'' unit tests for individual features<br><br>Deliverables=
:<br>=C2=A0 =C2=A0 -Code for implementation<br>=C2=A0 =C2=A0 -Unit test rep=
ort for features<br><br>### Week 11-12<br><br>Objectives:<br>=C2=A0 =C2=A0 =
-Finalize the implementation<br>=C2=A0 =C2=A0 -Conduct thorough testing tha=
t simulates a typical developer workflow<br>=C2=A0 =C2=A0 -Finalize the doc=
umentation<br>=C2=A0 =C2=A0 -Prepare for project evaluation<br><br>Delivera=
bles:<br>=C2=A0 =C2=A0 -Complete code base<br>=C2=A0 =C2=A0 -Comprehensive =
test files streamlining use cases<br>=C2=A0 =C2=A0 -Complete user documenta=
tion and maintainer documentation<br>=C2=A0 =C2=A0 -Final project report if=
needed<br><br>## Test Plan<br><br>For each individual functionality, my un=
it tests will cover:<br>=C2=A0 =C2=A0 -each individual modules<br>=C2=A0 =
=C2=A0 -command line interface<br>=C2=A0 =C2=A0 -memory safety<br><br>For h=
olistic testing, I plan to simulate a typical workflow of a developer by:<b=
r>=C2=A0 =C2=A0 -Simulate an OpenAFS environment<br>=C2=A0 =C2=A0 -Stress t=
esting the tool with high volumes of requests, incomplete requests and more=
to evaluate robustness<br>=C2=A0 =C2=A0 -Evaluate program performance<br>=
=C2=A0 =C2=A0 -Verify the accuracy of output presentation<br>=C2=A0 =C2=A0 =
-Improve upon feedback=C2=A0 =C2=A0=C2=A0</div>
--0000000000005acc5d063154fd0d--