├── .nojekyll ├── README.md ├── .gitignore ├── blog ├── whoami.md ├── post.html ├── build_in_public.md └── 2025.md ├── index.html ├── welcome.html ├── style.css └── LICENSE /.nojekyll: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## My personal blog 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | .claude 3 | -------------------------------------------------------------------------------- /blog/whoami.md: -------------------------------------------------------------------------------- 1 | # whoami 📌 2 | 3 | *December 7, 2025* 4 | 5 | I define myself as an Aegean (🍋) above everything. I'm an immigrant living in Paris for the past 4 years. When you're an immigrant living alone, you `` and read a lot, so I decided to write this blog. 6 | 7 | **Few facts:** 8 | - More than half of my life I've been doing [photography](https://www.instagram.com/1855mmcliches/). Less than half of my life I enjoyed cinema. 9 | - I love reading fiction & philosophy. These days I'm reading [Byung Chul Han](https://www.goodreads.com/author/show/970747.Byung_Chul_Han). 10 | - Throughout my life I learnt different sports. Last decade I sticked to strength training, and lately I started running. I also learnt how to surf and snowboard this year. 11 | - In my free time I am writing a book with my friends on [vision language models](https://www.oreilly.com/library/view/vision-language-models/9798341624030/) published by O'Reilly. I have read a ton of O'Reilly books at the beginning of my career and it helped me a lot, so I wanted to do something on my end. 12 | 13 | ## tech work 14 | 15 | I work in Hugging Face open-source team. I have developed features for, documented, yapped about a variety of libraries, primarily in vision & multimodality. Hugging Face is the type of place where what you _do_ matters. I have written about what I do in [Build in Public](../build_in_public.md) blog. 16 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | My Personal Blog 7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 |
15 |

Hello 👋🏻 I'm Merve

16 |
17 |

My personal blog

18 |

I'm trying to navigate the life like everyone else. I do machine learning for living. You can find some tech content on my Hugging Face, will share my thoughts on other things here.

19 |
20 |
21 |
22 | 23 |
24 |
25 | 26 |
27 |

whoami

28 | 29 |
30 | 31 | 35 | 36 | 40 |
41 |
42 | 43 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /welcome.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Welcome to My Blog 7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 |
15 |

My Personal Blog

16 |
17 |

Your Name

18 |

A short description about yourself. What you do, what you're interested in, or why you write.

19 |
20 |
21 |
22 | 23 |
24 |
25 |

Welcome to My Blog

26 | 27 | 28 |
29 |

This is my first blog post. I'm excited to start sharing my thoughts and experiences here.

30 | 31 |

What You'll Find Here

32 | 33 |

I plan to write about:

34 | 35 |
    36 |
  • Technology and programming
  • 37 |
  • Personal projects and experiments
  • 38 |
  • Things I'm learning
  • 39 |
  • Random thoughts and ideas
  • 40 |
41 | 42 |

Why I Started This Blog

43 | 44 |

I wanted a simple place to document my journey and share what I learn along the way. This blog is intentionally minimal - just HTML and CSS, no unnecessary complexity.

45 | 46 |

Get In Touch

47 | 48 |

Feel free to reach out if you want to discuss anything I write about!

49 | 50 |

Thanks for visiting!

51 |
52 |
53 | 54 | 57 |
58 | 59 | 64 | 65 | 66 | -------------------------------------------------------------------------------- /blog/post.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Loading... 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 |
16 |

My Personal Blog

17 |
18 |

Merve

19 |

I'm trying to navigate the life like everyone else. I do machine learning for living.

20 |
21 |
22 |
23 | 24 |
25 |
26 |
27 |

Loading...

28 |
29 |
30 | 31 | 34 |
35 | 36 | 41 | 42 | 79 | 80 | 81 | -------------------------------------------------------------------------------- /blog/build_in_public.md: -------------------------------------------------------------------------------- 1 | # Build in Public 2 | 3 | In [my previous post](../2025.md) I have mentioned about my lack of (feeling of) progress in French and how I burned out of it. Ever since that post I went to Alpes to celebrate xmas with my mother. I noticed during the entire trip I have spoken French to handle everything and it went smooth. I had an epiphany, I actually have come so far but I have absolutely zero feedback around it. Progress does matter and I have to see it for myself. 4 | 5 | With work I often have the feeling that the whole process never ends. It's a fast-paced field, I will fall behind if I don't ship or learn. Since it feels like sisyphos and the stone, it's pretty similar to what I felt with French too. 6 | I have I decided to take a step back on what I did in 2025 about my work and commit to new goals and build in public, maybe get feedback if my work was of use. 7 | 8 | I committed this year to lower the barrier of entry for developers to build with open-source vision and multimodal models. These models are not complex as people think they are, but I noticed that people hesitate a little. To do this, I have built smol-vision and it was loved a ton by community! 9 | 10 | smol-vision 11 | 12 | 13 | In Hugging Face we have a culture of filling-in to where needed. At the beginning of the year there was a hype around using vision language models for agency. I have integrated vision capabilities to smolagents, we planned everything on how memory should work, how use cases like agentic browsers need to be written etc, it was super fun. Read more about it [here](https://huggingface.co/blog/smolagents-can-see). Similarly, I worked with TRL team to have more alignment methods for vision LMs ([read more](https://huggingface.co/blog/trl-vlm-alignment)). 14 | 15 | We have written two major blogs around vision LMs this year, you might want to check them out. Last year we were trying to enable vision LM training in TRL, and to launch this, we have written a [blog](https://huggingface.co/blog/vlms) on vision LMs and how they work. This year we have written a follow up [blog](https://huggingface.co/blog/vlms-2025) on the paradigm changes (spoiler: it's a lot!). This year it was raining OCR models, and we were constantly receiving the question "which one is the best?" so we have written [a long post](https://huggingface.co/blog/ocr-open-models) on OCR landscape to help people get started easier. 16 | 17 | I have written a book about vision language models with my friends in SmolVLM 📖 18 | 19 |
20 | book 21 | paper 22 |
23 | 24 | 25 | This was a huge commitment. I got many questions from people whether it's worth writing a book or not. To be honest it takes almost all your weekends. This was something I wanted to do once in a lifetime. I learnt a lot from O'Reilly books when I was a junior data scientist, I even wrote [a blog](https://merveenoyan.medium.com/my-reviews-on-machine-learning-data-science-and-statistics-books-d1d70924b3d) on my honest take on those books. I wanted to give back in a way. 26 | 27 | I have also worked on big model releases ([PaliGemma2](https://huggingface.co/blog/paligemma2mix), [Gemma-3/n](https://huggingface.co/merve/smol-vision/blob/main/Gemma3n_Fine_tuning_on_All_Modalities.ipynb), DINOv3 and more!), making fine-tuning scripts, helping out with transformers etc for cutting edge models. Getting my hands on shiny models is actually favorite part of my work, quite a gift. 28 | 29 | 30 | I have done many other things on top of my responsibilities, but these ones were the largest changes I was proud of to lower barrier of entry to vision and multimodality. 31 | 32 | This year **I commit to working on** distilling vision language models for vision tasks, more on-device/real-time vision and agentic multimodality, and continue making open vision more available to developers. I will make another blog next year to look back on this next year, I'm very excited. 33 | 34 | On top of this, I firmly believe in ever growing potential of Hugging Face Hub so I want to find ways to make Hub more adopted across modalities. Feel free to reach out to me at merve [at] huggingface [dot] co to give a feedback! -------------------------------------------------------------------------------- /style.css: -------------------------------------------------------------------------------- 1 | * { 2 | margin: 0; 3 | padding: 0; 4 | box-sizing: border-box; 5 | } 6 | 7 | body { 8 | font-family: 'Fira Code', 'SF Mono', 'Monaco', 'Inconsolata', 'Consolas', 'Courier New', monospace; 9 | line-height: 1.75; 10 | color: #1a2e1a; 11 | background-color: #e8f5e8; 12 | } 13 | 14 | .container { 15 | max-width: 720px; 16 | margin: 0 auto; 17 | padding: 0 32px; 18 | } 19 | 20 | header .container { 21 | display: flex; 22 | justify-content: space-between; 23 | align-items: flex-start; 24 | } 25 | 26 | header { 27 | padding: 60px 0 40px 0; 28 | margin-bottom: 60px; 29 | } 30 | 31 | header h1 { 32 | font-size: 1.5rem; 33 | font-weight: 400; 34 | letter-spacing: 0.5px; 35 | color: #0d1f0d; 36 | } 37 | 38 | header h1 a { 39 | color: inherit; 40 | text-decoration: none; 41 | } 42 | 43 | .about { 44 | max-width: 280px; 45 | font-size: 0.85rem; 46 | line-height: 1.6; 47 | color: #4a6a4a; 48 | } 49 | 50 | .about h2 { 51 | font-size: 0.9rem; 52 | font-weight: 600; 53 | color: #2d5f2d; 54 | margin-bottom: 8px; 55 | } 56 | 57 | .about a { 58 | color: #1a5c1a; 59 | text-decoration: none; 60 | border-bottom: 1px solid #7aa87a; 61 | transition: border-color 0.2s ease; 62 | } 63 | 64 | .about a:hover { 65 | border-bottom-color: #1a5c1a; 66 | } 67 | 68 | main { 69 | min-height: calc(100vh - 200px); 70 | } 71 | 72 | .posts { 73 | display: flex; 74 | flex-direction: column; 75 | gap: 24px; 76 | } 77 | 78 | .post-preview { 79 | border-bottom: 1px solid #c0dcc0; 80 | padding-bottom: 24px; 81 | } 82 | 83 | .post-preview h2 { 84 | font-size: 1.1rem; 85 | margin-bottom: 8px; 86 | font-weight: 500; 87 | line-height: 1.4; 88 | } 89 | 90 | .post-preview h2 a { 91 | color: #0d1f0d; 92 | text-decoration: none; 93 | transition: color 0.2s ease; 94 | } 95 | 96 | .post-preview h2 a:hover { 97 | color: #2e7a2e; 98 | } 99 | 100 | .post-preview time { 101 | color: #2e7a2e; 102 | font-size: 0.8rem; 103 | display: block; 104 | letter-spacing: 0.3px; 105 | font-weight: 500; 106 | } 107 | 108 | article.post h1 { 109 | font-size: 1.75rem; 110 | margin-bottom: 16px; 111 | color: #0d1f0d; 112 | font-weight: 400; 113 | line-height: 1.2; 114 | } 115 | 116 | article.post time { 117 | color: #5a7a5a; 118 | font-size: 0.875rem; 119 | display: block; 120 | margin-bottom: 40px; 121 | padding-bottom: 32px; 122 | border-bottom: 1px solid #d4e5d4; 123 | letter-spacing: 0.3px; 124 | text-transform: uppercase; 125 | font-weight: 500; 126 | } 127 | 128 | .post-content { 129 | font-size: 0.9rem; 130 | line-height: 1.8; 131 | } 132 | 133 | .post-content h2 { 134 | font-size: 1.3rem; 135 | margin-top: 48px; 136 | margin-bottom: 20px; 137 | color: #0d1f0d; 138 | font-weight: 400; 139 | line-height: 1.3; 140 | } 141 | 142 | .post-content h3 { 143 | font-size: 1.1rem; 144 | margin-top: 36px; 145 | margin-bottom: 16px; 146 | color: #1a2e1a; 147 | font-weight: 400; 148 | line-height: 1.3; 149 | } 150 | 151 | .post-content p { 152 | margin-bottom: 24px; 153 | color: #1a2e1a; 154 | } 155 | 156 | .post-content ul, .post-content ol { 157 | margin-left: 32px; 158 | margin-bottom: 24px; 159 | color: #1a2e1a; 160 | } 161 | 162 | .post-content li { 163 | margin-bottom: 12px; 164 | } 165 | 166 | .post-content strong { 167 | font-weight: 600; 168 | color: #0d1f0d; 169 | } 170 | 171 | .post-content em { 172 | font-style: italic; 173 | } 174 | 175 | .post-content code { 176 | background-color: #e8f2e8; 177 | color: #2d5f2d; 178 | padding: 3px 8px; 179 | border-radius: 4px; 180 | font-size: 0.9em; 181 | } 182 | 183 | .post-content pre { 184 | background-color: #e8f2e8; 185 | padding: 24px; 186 | border-radius: 6px; 187 | overflow-x: auto; 188 | margin-bottom: 24px; 189 | border: 1px solid #d4e5d4; 190 | } 191 | 192 | .post-content pre code { 193 | background: none; 194 | padding: 0; 195 | color: #1a2e1a; 196 | } 197 | 198 | .post-content blockquote { 199 | border-left: 3px solid #2e7a2e; 200 | padding-left: 24px; 201 | margin: 32px 0; 202 | color: #2a3f2a; 203 | font-style: italic; 204 | } 205 | 206 | .post-content a { 207 | color: #2e7a2e; 208 | text-decoration: underline; 209 | text-decoration-color: #7aa87a; 210 | text-decoration-thickness: 1px; 211 | text-underline-offset: 2px; 212 | transition: text-decoration-color 0.2s ease; 213 | } 214 | 215 | .post-content a:hover { 216 | text-decoration-color: #2e7a2e; 217 | } 218 | 219 | .back-link { 220 | margin-top: 64px; 221 | margin-bottom: 80px; 222 | padding-top: 32px; 223 | border-top: 1px solid #d4e5d4; 224 | } 225 | 226 | .back-link a { 227 | color: #5a7a5a; 228 | text-decoration: none; 229 | font-size: 0.95rem; 230 | letter-spacing: 0.3px; 231 | transition: color 0.2s ease; 232 | } 233 | 234 | .back-link a:hover { 235 | color: #2e7a2e; 236 | } 237 | 238 | footer { 239 | border-top: 1px solid #d4e5d4; 240 | padding: 48px 0; 241 | margin-top: 120px; 242 | text-align: center; 243 | color: #5a7a5a; 244 | font-size: 0.9rem; 245 | } 246 | 247 | @media (max-width: 768px) { 248 | .container { 249 | padding: 0 24px; 250 | } 251 | 252 | header { 253 | padding: 40px 0 30px 0; 254 | margin-bottom: 40px; 255 | flex-direction: column; 256 | gap: 24px; 257 | } 258 | 259 | header h1 { 260 | font-size: 1.3rem; 261 | } 262 | 263 | .about { 264 | max-width: 100%; 265 | } 266 | 267 | article.post h1 { 268 | font-size: 1.4rem; 269 | } 270 | 271 | .post-content { 272 | font-size: 0.85rem; 273 | } 274 | 275 | .post-content h2 { 276 | font-size: 1.15rem; 277 | margin-top: 36px; 278 | } 279 | 280 | .post-content h3 { 281 | font-size: 1rem; 282 | margin-top: 28px; 283 | } 284 | 285 | .posts { 286 | gap: 20px; 287 | } 288 | 289 | .post-preview { 290 | padding-bottom: 20px; 291 | } 292 | 293 | .post-preview h2 { 294 | font-size: 1rem; 295 | } 296 | 297 | footer { 298 | margin-top: 80px; 299 | } 300 | } 301 | -------------------------------------------------------------------------------- /blog/2025.md: -------------------------------------------------------------------------------- 1 | # 2025 recap 2 | 3 | Two weeks ago I have promised to write about what I learnt in 2025 ([here](https://x.com/mervenoyann/status/1997040301022589161?s=20)). 4 | 5 | I succeeded and failed in a lot of things, have grown a lot in the process. I recently [read](https://www.goodreads.com/author/show/970747.Byung_Chul_Han) that we are living in a positivity & transparency society, this often reinforces everyone to share their successes and good times. You compare yourself to others' good sides and feel inadequate, work more, consume more to feel better, which the system wants you to do. Positivity isn't inherently bad, but toxic positivity is, where you avoid negativity. 6 | 7 | **Few facts to digest:** 8 | - Happiness is not something completely individual, whatever I experienced you probably did as well because the mood is macro, it's societal. 9 | - People across countries used to define themselves as "quite happy". [source](https://oskarwolthoorn.com/wp-content/uploads/2019/12/Demographics-and-hapiness-in-the-world.pdf) This is no longer the case for the people today. 10 | - We are bombarded with ideal humans online, but they are mostly performative. Modern humans in general avoid themselves, because they're less happy and content, constantly feel "behind". My generation is even less capable of sitting with discomfort because we ignore negative part of the life (toxic positivity). 11 | - The system constantly asks to focus on positives, pushes "art of not giving a fuck", "you can do this" type of mindset, with a ton of positive psychology books and through media. Modern humans in general avoid themselves, because they're less happy and content, believing everyone but them realize their potential, so they constantly feel "behind". The system shifts the blame: _So if you fail, it's completely your fault._ ignoring the class issues. We eat this up, treat our lives as projects and constantly try to improve some metrics, ignore our conditions. I believe in growth, but this is not it. 12 | - As humans, we are all escaping from sitting with ourselves. All the fidgeting, stress eating, excessive sports, overworking, most of them helps get rid of the thoughts. It could also be that you internally think you will be loved more (or receive more attention or approval). Very rarely people are genuinely curious with no expectations of gratification. 13 | 14 | ## how it all materializes 15 | 16 | For the last seven years I have been trying to digest positive psychology, it worked well when I had a ton of energy and living with my family and friends (the first 2-3 years). I worked hard, did a master's at the same time, I was more in flow. 17 | 18 | Last four years (after immigration) living alone, I was thinking a lot (living alone does that, it's statistically proven). I was constantly telling myself I should be grateful that I have the perfect life, I'm surrounded by kindest people I can learn from, I have always dreamt of living abroad since childhood. In fact, it takes a long time to make a place home, in the meantime, it's normal to feel alone even if you're surrounded by people. This made me feel form of an emptiness, I couldn't sit with it. 19 | 20 | Last two years, living alone, I wanted to make sure to take good care of myself and achieve my goals. I had a bunch of habits to keep myself on track while living alone. I ate same thing every day, have taken French classes, did sports 4x a week, batch meal prep, full-time work, keeping track of macros, supplements, write [book](https://www.oreilly.com/library/view/vision-language-models/9798341624030/) on weekends, socialize and more. 21 | 22 | This year, on top of them, I went for a functional medicine doctor, who prescribes an [elimination diet](https://www.healthline.com/nutrition/elimination-diet) and supplements, this was the last straw for burnout. I was too stressed, too controlling over my life, I have broken down mentally. It's insanely counterproductive to do anything for your wellbeing if it increases the stress as it's the #1 detriment to your health. I burnt out, and all the realizations came after that. I also noticed I have social anxiety over French language. 23 | 24 | ## truly transparent recap 25 | 26 | **all the things I succeeded in:** 27 | 28 | - I learnt snowboarding and surfing, I started doing it to overcome my mental barriers (you fall a lot, and confidence comes when you sail smoothly). 29 | - I had a big bump in French (A2 → B1). 30 | - I started running, prepared for a 10K for 7 weeks and finished it in 1h 15m (which was shorter than anticipated). 31 | - I got rid of some of my health issues through eating well & working out. I went through a lot 10 years ago, had few issues left. It's still not perfect but hey. 32 | - Wrote a book. Overall I love working on multimodality so I learnt a ton. 33 | - I worked on many things at my job that I enjoyed and ended up impactful, which is rare. 34 | - Reduced my screen time. I don't like scrolling on social media in general and short form content anyhow, I find it very detrimental to dopamine mechanism. 35 | - I got back to reading books. It's very good to reverse brainrot if you have one. 36 | - Realized a ton of things (see below). 37 | 38 | **things I failed at:** 39 | 40 | - I was burnt out (wrote above). 41 | - I failed the diet after a month and a half, couldn't finish the procedure. 42 | - I have stopped my French classes and tracking my food/activity, to focus on the book until it's done, so my French might have regressed. 43 | - I am actually still tired as I have to keep writing the book over weekends (at least it is 99% done as of Dec 25). 44 | 45 | Some of the things I learned from the experience: 46 | 47 | - **Most important:** home is where you can completely be yourself. You unconsciously filter yourself in other places. People say "life starts outside of your comfort zone", I think once you have satisfied your needs, which includes having connections, you can flow, lock-in, thrive. Having an emotional support system where you can make a living is priceless. It takes time to build home somewhere else. 48 | - Most of the voices critical of you in your head are other people you internalized over time. You just need to notice this and get help. Trust in your potential and don't let the inner critics get ahead of you. 49 | - Also related to above, your perception of life determines your experience as well, because whatever information you receive, you frame it. Assume good intentions, if it's bad, it's on them. 50 | - You have an inner child (id) that lets you enjoy life, and an old person (superego) that keeps your life on track. You need to find balance between them to have a sustainable wellbeing. Being on top of your life is not a default, you should congratulate yourself. 51 | - If you are an immigrant living alone, you have to cheer for yourself and treat yourself kindly. (I think this applies to everyone though) 52 | - Your experience is universal, whatever you go through, others do too. There's no such thing as perfect life. Due to positivity & transparency culture people show the best parts but you eventually learn it's not the complete picture. Many people feel inadequate or "behind", which many previous generations haven't felt, so chances are when you speak to your family they won't get it, because you have a job, you have a roof over your head, it's more than enough (it actually is!). 53 | - Personal development books always tell you you can do xyz, and happiness is individual. You can do xyz but should you? I completely quit them, it's a whole industry. I just read philosophy and psychology now, which I find more genuine with no ulterior motives. 54 | - You need 7-8 hours of sleep, eat healthy, be physically active. There's no "hack", taking supplements without supervision will mess your system (human body is more complex than you think it is), if you take too much caffeine you will mess your dopamine system, none of these are sustainable, it's not worth messing your health and trying to fix it. 55 | - **Progress counts.** I learnt this while trying to learn French for my citizenship process. I have been taking classes for the last two years, especially with all the responsibility I have, it's immensely tiring to do context switching. I need to attend the exam in a year, but it feels like I've been learning the language, it's very slow, ungrateful process, I keep forgetting things. I can hold a conversation, my colleagues appreciated me many times, but due to how sluggish the process was, I felt very tired. I am sometimes rejected or people switch to English, I feel disappointed. I overlooked over the process itself. It actually counts, but it's hard to take a step back and see how far you've come when you are so intertwined in the process. 56 | 57 | Overall I've grown to be kinder to myself and others and noticed what was wrong with my life and mindset, which matter the most. Sometimes when we constantly move to make our lives _put together_ we don't question our patterns, our counterintuitive habits. We need to stop and do introspection. 58 | 59 | I wrote this blog hoping you can find a piece for yourself in case you think similarly. Remembering that our experience is universal helps a lot. On the next post I will talk about some habits that actually worked for me, and again with complete transparency, because I don't want to paint an ideal picture. -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright [yyyy] [name of copyright owner] 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | --------------------------------------------------------------------------------