{"course":{"slug":"hugging-face","title":"Hugging Face, End to End","url":"https://addaly.com/learn/hugging-face","level":"intermediate","track":"create"},"lesson":{"slug":"publishing-your-own","title":"Publish it so a stranger can use it without writing to you","url":"https://addaly.com/learn/hugging-face/publishing-your-own","position":72,"of":75,"minutes":10,"answer":"A card with a runnable snippet, a named limitation and a deliberate licence makes your work usable by strangers, and everything you would regret publishing must be decided before the first push.","keyIdea":"A card with a runnable snippet, a named limitation and a deliberate licence makes your work usable by strangers, and everything you would regret publishing must be decided before the first push, because copies survive deletion."},"body":{"format":"markdown","text":"## You have something worth uploading sooner than you think\n\nPeople assume publishing on the Hub means releasing a foundation model. Almost nothing on it is that. Things that are useful and need no GPU to produce:\n\n- Four hundred labelled examples in a language the Hub barely covers.\n- An evaluation set for a task in your industry: thirty real invoices with the correct fields, say.\n- A Space that chains two existing models into one tool that did not exist.\n- A converted format: a GGUF or ONNX build of a model that only ships PyTorch weights.\n- A LoRA adapter, which is a few tens of megabytes rather than a few gigabytes.\n\nEach of these is somebody's afternoon and somebody else's month.\n\n## Three ways up\n\n**The website.** Create a new model, dataset or Space and drag files into the browser. This works from a phone for small files, and it is the right route the first time, because you see what the interface expects.\n\n**The command line**, for anything larger or repeated:\n\n```bash\nhf auth login\nhf upload my-name/marathi-support-tickets ./data --repo-type=dataset\n```\n\n**From the library you are already in.** Most Hugging Face libraries have a `push_to_hub()` that creates the repository and uploads in one call at the end of a training script.\n\nCreate it **private** first. Get it working, write the card, then flip it to public in Settings when you are ready. There is no penalty for this and it removes the pressure that makes people publish half-finished things.\n\n## The front matter that makes it findable\n\nThe YAML block at the top of `README.md` is what search, filters and the Hub's own linking read. Without it your work exists and nobody finds it:\n\n```yaml\n---\nlicense: apache-2.0\nlanguage:\n  - mr\n  - en\nbase_model: openai/whisper-small\npipeline_tag: automatic-speech-recognition\ntags:\n  - speech\n  - marathi\n---\n```\n\n`base_model` is the one people forget, and it works in both directions: your repository appears on the parent model's page under its fine-tunes, which is how strangers find you.\n\n## The card a stranger can act on\n\nFive things, and a card with all five is better than most of what is on the Hub:\n\n1. **What it does**, in one sentence, at the top.\n2. **A code block they can paste** that runs as written. Test it in a clean environment. A snippet with an undeclared import is the commonest defect on the Hub.\n3. **What it was built from**: the base model, the data, roughly how much and from where.\n4. **What it is bad at**, named specifically. Not *may produce inaccurate output*, but *word error rate roughly doubles on speakers under twenty*, or *only tested on invoices from two vendors*. You will be right, it costs you nothing, and it saves the next person a week.\n5. **The licence and any obligation attached to it.**\n\n## Choosing a licence on purpose\n\n- **Apache-2.0 or MIT** for maximum reuse. Apache adds an explicit patent grant, which is why organisations often prefer it.\n- **CC-BY-4.0** for data where you want credit.\n- **CC-BY-SA** if you want derivatives to stay open, accepting that this makes some commercial adoption impossible. That is a choice, not an accident: make it knowingly.\n- **OpenRAIL** variants add use restrictions, and are common on generative models.\n\nAnd name things honestly. **Open weights is not the same as open source.** Downloadable weights under a licence with use restrictions is a real and valuable thing, and it is not open source under the Open Source Initiative's definition, whose 2024 definition for AI also asks for meaningful information about the training data, which most released models do not provide. Both categories are worth having. Calling one by the other's name is how the word stops meaning anything. [/learn/open-models](/learn/open-models) goes further.\n\n## What you cannot take back\n\nOnce something is public, people clone it. Deleting the repository does not delete the copies, and mirrors of the Hub exist. So the decisions that matter happen **before** the first push, not after:\n\n- Is there personal data in this, and did those people agree.\n- Is any of it a client's, or under an agreement.\n- Is there a face or a voice in it belonging to someone who did not consent to being in a dataset.\n- If you promise a takedown route in the card, is it a promise you can actually keep.\n\nIf a dataset contains people, say in the card how someone asks to be removed, and mean it.\n\n## Do this now\n\nPublish one small real thing this week. Two hundred rows, a card with all five sections, a licence you chose deliberately, a limitation stated plainly. It takes about an hour, and it is the whole difference between having used the Hub and being on it."},"check":{"question":"A teacher uploads a public dataset of student essays with names removed, then realises two essays still contain identifying details and deletes the repository the same day. What is the accurate view of the situation?","options":[{"text":"Deletion removes the repository from the Hub but not any copies already cloned or mirrored, so the disclosure has to be handled as one that already happened.","correct":true},{"text":"Because it was public for less than a day, no copies will exist and deleting resolves it.","correct":false,"tempting":"Assumes exposure scales with elapsed time rather than with automated copying that happens immediately."},{"text":"Rewriting the git history to drop the two files removes them everywhere, since the Hub is a git host.","correct":false,"tempting":"Treats history rewriting on the origin as reaching clones made from the previous history."},{"text":"Making the repository private instead of deleting it retracts the data while preserving the work.","correct":false,"tempting":"Confuses removing future access with recalling what has already been distributed."}]},"prev":{"slug":"serving-it-yourself","title":"When transformers stops being the right server","url":"https://addaly.com/learn/hugging-face/serving-it-yourself"},"next":{"slug":"the-card-that-passes-review","title":"Writing a card somebody can audit","url":"https://addaly.com/learn/hugging-face/the-card-that-passes-review"},"authorship":"Founder and series editor: Dr Mustafa Mun. Written by AI models to a written standard. Exam keys checked blind by a second model: 3,665 of 3,666 agreed. Academic review invited.","review":{"status":"Draft, open for academic review"},"cite":"Addaly (2026) 'Publish it so a stranger can use it without writing to you', in Hugging Face, End to End. Edited by M. Mun. Addaly. Available at: https://addaly.com/learn/hugging-face/publishing-your-own (Accessed: 31 October 2026).","licence":{"name":"CC BY-NC-SA 4.0","url":"https://creativecommons.org/licenses/by-nc-sa/4.0/"},"reader":{"schema":1,"title":"Publish it so a stranger can use it without writing to you","courseTitle":"Hugging Face, End to End","module":{"index":8,"slug":"depending-on-it-and-publishing","title":"Depending on it, and publishing so others can"},"answer":null,"keyIdea":"A card with a runnable snippet, a named limitation and a deliberate licence makes your work usable by strangers, and everything you would regret publishing must be decided before the first push, because copies survive deletion.","hero":{"kind":"plate","image":null,"alt":null,"caption":null},"blocks":[{"t":"h2","id":"you-have-something-worth-uploading-sooner-than-you-think","runs":[{"text":"You have something worth uploading sooner than you think"}]},{"t":"p","runs":[{"text":"People assume publishing on the Hub means releasing a foundation model. Almost nothing on it is that. Things that are useful and need no GPU to produce:"}]},{"t":"ul","items":[[{"text":"Four hundred labelled examples in a language the Hub barely covers."}],[{"text":"An evaluation set for a task in your industry: thirty real invoices with the correct fields, say."}],[{"text":"A Space that chains two existing models into one tool that did not exist."}],[{"text":"A converted format: a GGUF or ONNX build of a model that only ships PyTorch weights."}],[{"text":"A LoRA adapter, which is a few tens of megabytes rather than a few gigabytes."}]]},{"t":"p","runs":[{"text":"Each of these is somebody’s afternoon and somebody else’s month."}]},{"t":"h2","id":"three-ways-up","runs":[{"text":"Three ways up"}]},{"t":"p","runs":[{"text":"The website.","b":true},{"text":" Create a new model, dataset or Space and drag files into the browser. This works from a phone for small files, and it is the right route the first time, because you see what the interface expects."}]},{"t":"p","runs":[{"text":"The command line","b":true},{"text":", for anything larger or repeated:"}]},{"t":"code","lang":"bash","label":"Bash","text":"hf auth login\nhf upload my-name/marathi-support-tickets ./data --repo-type=dataset"},{"t":"p","runs":[{"text":"From the library you are already in.","b":true},{"text":" Most Hugging Face libraries have a "},{"text":"push_to_hub()","code":true},{"text":" that creates the repository and uploads in one call at the end of a training script."}]},{"t":"p","runs":[{"text":"Create it "},{"text":"private","b":true},{"text":" first. Get it working, write the card, then flip it to public in Settings when you are ready. There is no penalty for this and it removes the pressure that makes people publish half-finished things."}]},{"t":"h2","id":"the-front-matter-that-makes-it-findable","runs":[{"text":"The front matter that makes it findable"}]},{"t":"p","runs":[{"text":"The YAML block at the top of "},{"text":"README.md","code":true},{"text":" is what search, filters and the Hub’s own linking read. Without it your work exists and nobody finds it:"}]},{"t":"code","lang":"yaml","label":"YAML","text":"---\nlicense: apache-2.0\nlanguage:\n  - mr\n  - en\nbase_model: openai/whisper-small\npipeline_tag: automatic-speech-recognition\ntags:\n  - speech\n  - marathi\n---"},{"t":"p","runs":[{"text":"base_model","code":true},{"text":" is the one people forget, and it works in both directions: your repository appears on the parent model’s page under its fine-tunes, which is how strangers find you."}]},{"t":"h2","id":"the-card-a-stranger-can-act-on","runs":[{"text":"The card a stranger can act on"}]},{"t":"p","runs":[{"text":"Five things, and a card with all five is better than most of what is on the Hub:"}]},{"t":"ol","start":1,"items":[[{"text":"What it does","b":true},{"text":", in one sentence, at the top."}],[{"text":"A code block they can paste","b":true},{"text":" that runs as written. Test it in a clean environment. A snippet with an undeclared import is the commonest defect on the Hub."}],[{"text":"What it was built from","b":true},{"text":": the base model, the data, roughly how much and from where."}],[{"text":"What it is bad at","b":true},{"text":", named specifically. Not "},{"text":"may produce inaccurate output","i":true},{"text":", but "},{"text":"word error rate roughly doubles on speakers under twenty","i":true},{"text":", or "},{"text":"only tested on invoices from two vendors","i":true},{"text":". You will be right, it costs you nothing, and it saves the next person a week."}],[{"text":"The licence and any obligation attached to it.","b":true}]]},{"t":"h2","id":"choosing-a-licence-on-purpose","runs":[{"text":"Choosing a licence on purpose"}]},{"t":"ul","items":[[{"text":"Apache-2.0 or MIT","b":true},{"text":" for maximum reuse. Apache adds an explicit patent grant, which is why organisations often prefer it."}],[{"text":"CC-BY-4.0","b":true},{"text":" for data where you want credit."}],[{"text":"CC-BY-SA","b":true},{"text":" if you want derivatives to stay open, accepting that this makes some commercial adoption impossible. That is a choice, not an accident: make it knowingly."}],[{"text":"OpenRAIL","b":true},{"text":" variants add use restrictions, and are common on generative models."}]]},{"t":"p","runs":[{"text":"And name things honestly. "},{"text":"Open weights is not the same as open source.","b":true},{"text":" Downloadable weights under a licence with use restrictions is a real and valuable thing, and it is not open source under the Open Source Initiative’s definition, whose 2024 definition for AI also asks for meaningful information about the training data, which most released models do not provide. Both categories are worth having. Calling one by the other’s name is how the word stops meaning anything. "},{"text":"/learn/open-models","href":"https://addaly.com/learn/open-models"},{"text":" goes further."}]},{"t":"h2","id":"what-you-cannot-take-back","runs":[{"text":"What you cannot take back"}]},{"t":"p","runs":[{"text":"Once something is public, people clone it. Deleting the repository does not delete the copies, and mirrors of the Hub exist. So the decisions that matter happen "},{"text":"before","b":true},{"text":" the first push, not after:"}]},{"t":"ul","items":[[{"text":"Is there personal data in this, and did those people agree."}],[{"text":"Is any of it a client’s, or under an agreement."}],[{"text":"Is there a face or a voice in it belonging to someone who did not consent to being in a dataset."}],[{"text":"If you promise a takedown route in the card, is it a promise you can actually keep."}]]},{"t":"p","runs":[{"text":"If a dataset contains people, say in the card how someone asks to be removed, and mean it."}]},{"t":"h2","id":"do-this-now","runs":[{"text":"Do this now"}],"role":"try"},{"t":"p","runs":[{"text":"Publish one small real thing this week. Two hundred rows, a card with all five sections, a licence you chose deliberately, a limitation stated plainly. It takes about an hour, and it is the whole difference between having used the Hub and being on it."}]}],"check":{"question":[{"text":"A teacher uploads a public dataset of student essays with names removed, then realises two essays still contain identifying details and deletes the repository the same day. What is the accurate view of the situation?"}],"options":[{"text":[{"text":"Deletion removes the repository from the Hub but not any copies already cloned or mirrored, so the disclosure has to be handled as one that already happened."}],"correct":true,"tempting":null},{"text":[{"text":"Because it was public for less than a day, no copies will exist and deleting resolves it."}],"correct":false,"tempting":[{"text":"Assumes exposure scales with elapsed time rather than with automated copying that happens immediately."}]},{"text":[{"text":"Rewriting the git history to drop the two files removes them everywhere, since the Hub is a git host."}],"correct":false,"tempting":[{"text":"Treats history rewriting on the origin as reaching clones made from the previous history."}]},{"text":[{"text":"Making the repository private instead of deleting it retracts the data while preserving the work."}],"correct":false,"tempting":[{"text":"Confuses removing future access with recalling what has already been distributed."}]}],"order":[3,2,0,1],"why":null},"prev":{"slug":"serving-it-yourself","title":"When transformers stops being the right server","minutes":8},"next":{"slug":"the-card-that-passes-review","title":"Writing a card somebody can audit","minutes":9}}}