Final Project Submission Details

Final Project Submission Details #

Here is an overview:

  • important: pin your project to your GitHub profile (you only have 1 year after your last commit if the project is owned by someone else).
  • choose a license;
  • configure the repository settings;
  • check your README.md;
  • submit additional materials to the spreadsheet;
  • submit to the Hall of Fame channel;
  • submit a final group evaluation;
  • bonus: remove .DS_Store and node_modules (because it’s a give-away that this is your first real project).

Important: Pinning the Project to Your GitHub Profile #

Pinning your project to your GitHub profile is a great way to showcase your work to others. It will appear at the top of your profile, making it more visible to visitors.

You can pin a project you own at any time; but if the project is owned by someone else, you only have 1 year after your last commit to pin it to your profile. After that, the assumption is your contribution is not recent enough for you to be able to claim the project as your own. So make sure to pin your project to your profile as soon as possible!

Choosing a License #

When you share your code publicly, it’s important to choose a license that specifies how others can use it. There are different types of licenses:

  1. Open Source Licenses:

    • GPL: Others must share their code if they use yours.
    • LGPL and MPL: Others can use your code, but must share improvements.
    • Apache and MIT: Others can use your code freely, but must give you credit.
    • The Unlicense: Others can use your code freely without giving credit.
  2. Custom License:

    • If you want to restrict usage (e.g., for future commercialization), you can create a custom license.
    • This license specifies what others can and cannot do with your code.
  3. Closed Source:

    • You can choose to keep your code private.
    • However, public projects can showcase your skills to others.

Personally, I prefer “compromise” licenses like LGPLv3 and Mozilla Public License 2.0. They allow others to use and build upon my code, even commercially, as long as they share any improvements back to the community.

Remember, every project is different, so consider your goals when choosing a license. Feel free to ask for guidance if you have any questions!

Here is a template of a custom license that allows users to use your code, but not modify it, and you reserve rights for future commercialization:

Copyright (c) [Year] [Your Name or Company Name]. All rights reserved.

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to use the Software for non-commercial purposes only. This includes the rights to use, copy, and distribute the Software in its original form.

The following restrictions apply:
1. The Software may not be modified, remixed, or adapted in any form.
2. The Software may not be used for commercial purposes without express written permission from [Your Name or Company Name].
3. Redistributions of the Software must retain the above copyright notice, this list of conditions, and the following disclaimer.

[Your Name or Company Name] reserves the right to modify or update this license at any time without prior notice. By using the Software, you agree to be bound by the terms of the license in effect at the time of use.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Configuring the Repository Settings #

Make sure to write a brief description in your repository’s description, and to add the link to the landing page in the repository’s website. Make sure to add the link to the landing page in the README.md as well.

GitHub Repository metadata settings

README.md review #

Make sure to update the README.md file in your repository with the following information:

  • the title of the project (and ensure it’s clear that it is a Chrome extension)
  • the names of the team members
  • a screenshot or logo or something visually catchy
  • a brief description of the project it can include:
    • a link to the landing page (even if you also have it in metadata, people have a short attention span!);
  • how to install the extension
    • a link to the Chrome Web Store extension (if applicable);
  • how to use the extension
  • a more detailed description of the features (if you applicable)
  • a link to the blog post (if applicable)
  • a link to the video (if applicable)
  • how to report issues: Have a section indicating that people can file comments in the issues section of the repository.

Submitting Additional Materials #

Note: If you created your blog post as a PDF (for instance, with LaTeX, to make it look pretty), then you can upload it in the /static folder of your landing page repository and link to it from there.

Note: If you can eventually ensure that the post is on Medium, it is the best option, as it will be more visible to the public.

Final Hall of Fame Submission #

You must make a submission to the Hall of Fame, by posting a Slack message in the #hall-of-fame channel.

IF YOU HAVE RECORDED A VIDEO, YOU MUST ALSO UPLOAD THE VIDEO TO SLACK IN THE SAME POST AS AN ATTACHMENT BY DRAG AND DROPPING TO YOUR POST.

PLEASE REPLACE THE EXPRESSIONS IN BRACKETS AND REMOVE THE BRACKETS

For instance:

"Hello, [Your Name]!" -> "Hell, Prof. Lumbroso!"

[Project name in bold] (Team [Team number], Spring 2024)
by @PersonA (leader), @PersonB, @PersonC, @PersonD

[Same description as you used for your GitHub repository]

  • Landing Page: [Link to your landing page]
  • GitHub Repository: [Link to your GitHub repository]
  • Blog post: [Link to your project demo]
  • Video: [Link to your project video]
  • Chrome Web Store: [Link to your Chrome Web Store extension]

For example:

Penn Course Search (Team 1, Spring 2024) by @Franci, @Eshaan, @Matt Fu, @Jake Garrison Murphy

Penn Course Search is a Chrome extension that allows students to search for courses in the Penn catalog from the comfort of their Chrome toolbar.

Penn Course Search attached video

Do not include any item that is not relevant to you. For instance if you did not record a video, you do not need to include the video link or upload a video with the post.

Final Group Evaluation #

Once you have completed this work, please submit the final group evaluation, in which you provide a quick overview of each team members’ contributions to the project.

You do not need to be extensive, this process is to understand if the experience have been suboptimal and lead to unequal contributions and frustrations.

Bonus: Remove .DS_Store and node_modules #

The file .DS_Store is used by macOS to store metadata about the folder. It is not useful for your project. Having it in repositories is a sign of being a beginner.

The right way to deal with this file is to:

  1. Add .DS_Store to your .gitignore file.
  2. Remove all .DS_Store files from your repository with the following command:
find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch

This is calling the command git rm -f --ignore-unmatch on all files named .DS_Store in your repository, to ensure they are both removed, but that git stops tracking them.

You should do the same with node_modules if you have it in your repository. This is a sign that you are not using a package manager like npm or yarn to manage your dependencies.

git rm -r --cached node_modules

which will remove the node_modules directory from your repository, but not from your local machine.

Note that once you have made these changes, you still have to make a commit and push to GitHub to make the changes effective:

git commit -m "chore: remove .DS_Store and node_modules"
git push