Hey there.

Im working on a project for some software I want in the world. But I'm such a hobbyist that I've never thought of publishing any of my projects, but after doing so much work in it I kind of want other to have access to it after I feel its ready.

Whats the process of distribution? I guess I typically use github when interacting with FOSS community, but its still confusing for me to navigate as an end user sometimes, let alone being an uploader.

FWIW its simply a few python modules and other supporting txt and jsons. Targeting mostly Windows because that's what I use.

Thanks! (If this isn't the right place to ask please let me know!)

Edit: there are a bunch of great comments here! To clarify, I want to get it functional and somewhat bug free then fully upload everything so someone can see my idea and do it better. So I think I'm going to go with unlicense, because I don't really care about getting credit or getting contributions necessarily. Thanks all!

  • CosmicTurtle0@lemmy.dbzer0.com
    ·
    edit-2
    4 months ago

    If you simply want to allow people to view your code, you can just upload it to GitHub or something similar.

    By default, your work is copyright and you hold all rights, excluding those you give up to GitHub.

    Open-Sourcing your project is all about choosing the license that you want your users to use.

    Please, for the love of God, choose an existing license. Don't go out and try to make one yourself or mix and match. Not only do you open yourself up to liability but it just makes it harder for you to keep track of it.

    Choosing a license is all about your personal preference and what your goals are. The two ends of the spectrum:

    • MIT License: do whatever you want, so long as you attribute me. Most libraries use this license.
    • GPL/AGPL: if you use my code, you must also release using GPL/AGPL or similarly appropriate license. Linux Kernel famously uses version 2. Linus Torvalds has issues with some of the terms in V3.

    There is a lot of middle ground between these two philosophies. Most of the major licenses have seen some level of court cases. I personally use AGPL, which is often seen as one of the strongest, most restrictive, licenses.

    I do not recommend releasing code to public domain. This often is a point of contention between OSS purists and OSS "spirit". I personally believe we're entering a new world of AI-driven content and I don't want more code feeding that beast.

    The license is then copied and pasted to a LICENSE file at the root of your repo and, boom. You've open sourced your code.

    Keep in mind: that commit (and all future commits) will be available under that license until your copyright expires, so long as that license exists in your repo. You cannot claw it back.

    One word of advice: you aren't likely going to see a bunch of people downloading your stuff. So don't get your hopes up that you'll have people submitting bug reports or making PRs, etc. All of my projects are just for me to use with one or two people reviewing it for fun. All but one, anyway.

    • Scrubbles@poptalk.scrubbles.tech
      ·
      4 months ago

      Choose a license is great, they did an amazing job. I'm personally a fan of gpl. Sorry Amazon/Microsoft/corpo world. If you want to use my stuff great, but then you have to share your stuff too.

    • 56!@lemmy.ml
      ·
      4 months ago

      and all future commits

      Not entirely true. As long as you hold the copyright to all of the code (there are no contributions from other people), you can change the license however you like. The important thing is that this only affects commits after the licence is changed. All earlier versions are permanently available under the license they were released with.

  • f00f/eris@startrek.website
    ·
    4 months ago
    1. Create a source control repository containing all your code, and publish it to an online code forge. GitHub's docs might help with this: https://docs.github.com/en/get-started/start-your-journey
    2. Choose an open-source license and add it to the repository as a LICENSE file. If you want to require any projects that build upon yours to be open-source too, the GNU GPL is a good choice. If you want to allow proprietary programs to include your library without releasing any source code other than that which is directly based on yours, the GNU LGPL is good for that. If you want to allow people to do whatever they want, even use all your code as the basis of a proprietary program without credit, the Unlicense is a good choice. There are a lot of licenses with different degrees of "copyleft" and attribution requirements in between. Technically publishing with a license file is all you need to do, but there are more things you should do.
    3. Create a README text file describing what your program does, and instructing users on how to compile and run it. Consider including more detailed documentation on how to use it, as well.
    4. Clean up your code and file layout so that it's as easy as is feasible for other programmers to understand.
    5. Promote your project to whoever you think might find it useful!
  • billgamesh@lemmy.ml
    ·
    4 months ago

    A lot of people are recommending version control. While it's good practice, that isn't a requirement of sharing your code. If you want to make it really simple at first, add a License (as others have mentioned) and just post the code anywhere. Upload a tar archive to a website, use sourceforge or even lemmy.

    Learning git would still be useful for you and potential contributors but it is not a requirement. Open source just means you share the source and explicitely provide a license for others to use and modify it

  • Parade du Grotesque@lemmy.sdf.org
    ·
    4 months ago

    If it's several python modules, then yes, choose a license and then contact pypi and see if you can distribute your modules through them.

    One very important thing is that you have to make sure everything is ready for distribution: check your project will work (possibly starting with a blank VM), what its dependencies are, that the requirements.txt file is good and operational, that automated tests are available for people to run after installing, etc.

    In other words, the ideal project is not just a question of license but also all the scaffoldings you supply with it.

    Thanks for opening your code!