Digging deeper into NeoGPT
Tags: gpt3, llm, python, opensource
Published: 2023-12-13 15:18:32

I had a chance to revisit and contribute some more functionality to [NeoGPT](https://github.com/neokd/NeoGPT), a customizable GPT chatbot program written in Python.  It was nice to be able to do some more work on this project as the initial time invested in setting up the source code locally and create my build was significant compared to the actual contribution I made.  Whereas my first contribution for Hacktoberfest, was a simple bash script to streamline the build process, this time around I was able to dive deeper into the actual program and develop some functionality to allow the user to export the current program configuration settings. 

I am sure the experience of contributing to open source projects can vary dramatically depending on the project, how many owners and full-time contributors are involved, among a number of other variables.  My experience so far, in terms of the process of responding to issues posted by the project owners, has been more frustrating than rewarding.  I am finding in many cases that the posted issues often lack a great deal of necessary detail that would seem to be important for an outside developer to attempt to solve.  Even when I have assessed the issue, explored the code, and made requests for clarification as to the desired approach to the solution, or just asked some specific questions to better understand the code and/or the task at hand, I feel like the responses are brief and often lack the insight and clarity that my initial inquiries were attempting to elicit.  

Perhaps it’s my level of comprehension being lower than that of the project developers, but my feeling is that if someone were to reach out to me with questions on how to contribute to my project, I would want to be as detailed as possible in my responses to avoid any confusion and to facilitate a functional contribution that aligns with my intentions and expectations.  I’m sure this won’t always be the case, but that’s just my observational rant as I continue to work towards an effective contribution on what is the most complex codebase I have yet to engage with.  This gives me some insight into the standard I would like to hold myself to in the future, if and when I begin sharing projects and accepting contributions from previously unfamiliar developers.

In my specific efforts this week, as I mentioned, I am [developing a function to read and store the current configuration settings for the NeoGPT chatbot](https://github.com/neokd/NeoGPT/pull/122).  The biggest challenge in doing so is that the settings can vary dramatically depending on the command line arguments being provided at runtime among a number of other variables.  As well, those settings are not necessarily stored or logged in one central location. Due to this, there was a great deal of code analysis required to try and determine when the settings parameters are established and how to access them from a helper function.  

One of the biggest questions this raised was when and how should the code be calling the export function, as the current state of the program at the time it calls the function has a significant impact on how I should write the function.  While I have tried to ask the right questions to gain clarity on this, the answer is still not clear to me.  I’ve been able to partially address the scope of the issue and generate a draft pull request that presents my progress while attempting to elicit some feedback to get to the desired solution.