[OpenAFS-devel] [GSCO-2025 ][Openafs devel] Proposal : Implementing Command line
completions for OpenAfs CLI Tools
Md. Sawez Faisal
sawezfaisals123@gmail.com
Sat, 5 Apr 2025 11:58:25 +0530
--0000000000008b69c80632021e17
Content-Type: multipart/alternative; boundary="0000000000008b69c70632021e15"
--0000000000008b69c70632021e15
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Dear OpenAFS Community,
I hope this message finds you well. My name is Sawez Faisal, and I=E2=80=99=
m
excited to share my proposal for Google Summer of Code 2025, focusing on
implementing Bash and Zsh shell completions for OpenAFS command-line tools
The goal of this project is to make OpenAFS commands more intuitive and
efficient to use by adding intelligent tab-completion. I plan to start with
static completions for the most common commands, then expand to dynamic
flag suggestions by parsing --help outputs and man pages. This approach
ensures the completions stay up to date as the tools evolve. My background
in C and shell scripting, along with my experience working on CLI tools,
gives me a solid foundation for this task.
I=E2=80=99ve attached my full proposal for your review and would greatly ap=
preciate
any feedback, especially on technical feasibility and alignment with
OpenAFS=E2=80=99s priorities. I=E2=80=99m particularly interested in hearin=
g which commands
or use cases the community finds most challenging and would benefit most
from this improvement.
Best regards,
Sawez Faisal
sawezfaisals123@gmail.com
--0000000000008b69c70632021e15
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><div dir=3D"ltr"><p>Dear OpenAFS Community,</p><p>I hope t=
his message finds you well. My=20
name is Sawez Faisal, and I=E2=80=99m excited to share my proposal for Goog=
le=20
Summer of Code 2025, focusing on implementing Bash and Zsh shell=20
completions for OpenAFS command-line tools</p><p>The
goal of this project is to make OpenAFS commands more intuitive and=20
efficient to use by adding intelligent tab-completion. I plan to start=20
with static completions for the most common commands, then expand to=20
dynamic flag suggestions by parsing --help outputs and man=20
pages. This approach ensures the completions stay up to date as the=20
tools evolve. My background in C and shell scripting, along with my=20
experience working on CLI tools, gives me a solid foundation for this=20
task.</p><p>I=E2=80=99ve attached my full proposal for your review and woul=
d=20
greatly appreciate any feedback, especially on technical feasibility and
alignment with OpenAFS=E2=80=99s priorities. I=E2=80=99m particularly inte=
rested in=20
hearing which commands or use cases the community finds most challenging
and would benefit most from this improvement.<br></p><p>Best regards,<br>S=
awez Faisal<br></p><p><a href=3D"mailto:sawezfaisals123@gmail.com" target=
=3D"_blank">sawezfaisals123@gmail.com</a><br></p><p><br></p><br></div>
</div>
--0000000000008b69c70632021e15--
--0000000000008b69c80632021e17
Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document;
name="GSOC_PROPOSAL.docx"
Content-Disposition: attachment; filename="GSOC_PROPOSAL.docx"
Content-Transfer-Encoding: base64
Content-ID: <f_m93tubu60>
X-Attachment-Id: f_m93tubu60
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
fAIAAMMhAAAAAA==
--0000000000008b69c80632021e17--