Practical Project Final Info
Created Sunday 20 March 2022
TENTATIVE: If you're strongly interested in any of the below already, you'll likely be able to do this as is. However, given the rapid expansion and growth of IT Development tools, I am willing to consider ANY project that is outside of this specific scope, so long as it is IT and/or "hands-on code" related. Let me know ASAP.
Project Rubric
For your project, your team will work towards a documented implementation (or proof-of-concept) of any IT/Computer related task or service: The catch is; it must be "self-hosted." — or at least self-hostable.
Self-hosted is the most important part; let's talk about what that means. Roughly, it will likely be the kind of thing that's associated with "hosting" or "the cloud" — but unlike many of those, you do, or you can, have full access to the code running the project on a computer you own or control.
A short list of examples might be:
- A file synchronization service (e.g. Syncthing or Nextcloud as a Dropbox replacement)
- A music server (e.g. Funkwhale or MPD as a Spotify replacement)
- A media server (e.g. Plex or Jellyfin as a Netflix replacement)
- A voice controlled assistant (e.g. Mycroft or json2voice as a Siri/Alexa replacement)
- Self Hosted AI ?( e.g. LLama or Vicuna or Stable Diffusion as a ChatGPT replacement)
You are by no means llmited to the choices here. Below is a large list of possible ideas.
Self-Hosted Ideas and Resources
https://github.com/awesome-selfhosted/awesome-selfhosted
https://www.reddit.com/r/selfhosted/
IMPORTANT: The PRIMARY goal is to work on something that you or someone you know personally might ACTUALLY use regularly.
Resist the very strong urge to treat and write this up as if it were going to be a PRODUCT to sell to someone who isn't you.
(Note, this gives you FREEDOM. After you try it, you might decide it sucks. Thats fine! You can be honest here!)
Docker
The small bit of Linux skill you have learned in this class will probably prove useful — but is mostly no longer absolutely necessary. The generally fantastic tool Docker has *greatly* streamlined the processes involved with installing, testing, and running tools such as those required for this project.
Unfortunately, installing it has gotten a bit needlessly complicated: More info here:
Networking
Perhaps the most unnecessarily difficult thing about "self-hosting" isn't the software itself, but getting it on the internet so that anyone can use it. Setting this up long term is a great goal and I will provide this information; but for purposes of the assignment, using a short term testing system like "ngrok" or "pinggy.io" is sufficient. More info here:
Tech Guides:Exposing your server to the internet
DELIVERABLE
What you will deliver to me is documentation and proof of effort. Text only is sufficient, but I anticipate that many of may find the inclusion of examples and screenshots of your work to be beneficial as well. Either way, please provide your final documentation as a pdf, one per TEAM.
You should provide:
I. An Introduction.
The introduction should state the general area you began looking into. Describe what "thing" you'd like the technology to do generally. Talk about what it actually does, and brainstorm possible advantages and drawbacks of doing it in a "self-hosted" way. Be prepared to comment later on whether your predictions were correct.
Name the technologies you propose to actually use or attempt to use in the beginning, including the "machine" and the "software." There should be AT LEAST 3, and at least 2 of them should be "self-hosted," i.e. the third may either be self-hosted OR "cloud" or "private company," e.g. Spotify/Youtube/Twitter etc
While you need not hit all of these perfectly, the below is a good guide for questions that should be addressed.
Why is the thing generally useful or interesting?
What may be the advantages or disadvantages of self-hosting?
Explain what (possible) paid or cloud service this might replace, if applicable.
Provide other possible options and possibilities.
Who are ALL the users (e.g. will there be administrators vs regular users?)
Where will it be hosted, ideally and/or practically?
When will it be active, ideally and/or practically?
II. The process
Document your experiences of getting these things up and running; please definitely include mistakes and problems you encountered along the way as proof of work.
You should strive to
- get both (or more) up and running locally on a team member's machine
- as well as testing them externally from a different machine, using the Networking tools up above.
Note, extreme pivots are very welcome! If you started somewhere and ended up doing or working on something very different, that is fine! Again, effort is key.
III. Conclusions
Backlinks: FSU Courses:LIS3353:Previous Readings:3353-Spring-2023-Readings