From 8d0f1c98ec21eb0bfe6e32869714c1b6875a46c8 Mon Sep 17 00:00:00 2001 From: albarry4 Date: Mon, 24 Jun 2024 13:11:43 -0700 Subject: [PATCH 1/4] Create proposal to replace bluecheckmark --- accepted/2024/bluecheckmark-replacement | 79 ++++++++++++++++++++++++ accepted/2024/image-1.png | Bin 0 -> 5186 bytes accepted/2024/image.png | Bin 0 -> 16779 bytes accepted/2024/lock.jpg | Bin 0 -> 6851 bytes 4 files changed, 79 insertions(+) create mode 100644 accepted/2024/bluecheckmark-replacement create mode 100644 accepted/2024/image-1.png create mode 100644 accepted/2024/image.png create mode 100644 accepted/2024/lock.jpg diff --git a/accepted/2024/bluecheckmark-replacement b/accepted/2024/bluecheckmark-replacement new file mode 100644 index 000000000..c3a900130 --- /dev/null +++ b/accepted/2024/bluecheckmark-replacement @@ -0,0 +1,79 @@ +# ***Replacing the Blue Checkmark*** + + +- Author Name Allie Barry +- GitHub Issue + +## Summary + + +The purpose of this proposal is to provide a replacement for the blue checkmark as a signifier of prefix reservation on NuGet. This proposal aims to maintain the concept of prefix reservation, as it is a crucial defense mechanism against dependency confusion attacks, while fixing the confusion that it currently causes for package trust. This proposal is a small first step to conquering the larger problem of package trust and publisher authenticity within the NuGet ecosystem. + +## Motivation + + + +The blue checkmark icon is a common paradigm across many online platforms that is known to signal some sort of "verification", trust, or authenticity on the platform. Additionally, it can often signal that the recipient of the icon is important or respected in some way. A quick Bing search of "blue checkmark meaning" returns the following: "A blue checkmark is a symbol used on many social media platforms to indicate that an account’s identity has been verified. Verification is usually reserved for accounts that are most likely to be targeted by copycats, like celebrities, brands, or influencers...The badge has one simple purpose, and that is to show that the user is an official profile". NuGet's usage of the icon goes against this paradigm, and is therefor misleading and a cause for concern. + +Knowing that a package is linked to an authentic publisher is a challenge for NuGet today. The current blue checkmark misinforms developers into thinking a publisher is verified when the reality is the prefix is reserved. Common paradigms in other marketplaces are to verify ownership through different means such as a DNS record ownership and provide a blue checkmark next to the owner’s account name. These are options for us as we look beyond this proposal and towards tackling the problem of conveying package owner trust on NuGet. First, however, its imperative that we change the false trust that is placed in the blue checkmark, and find a different way to convey prefix reservation. + +The blue checkmark is a known cause for confusion and misplaced perceptions of trust within the NuGet ecosystem. It is actively causing confusion because people think it means far more than it does, granting trust where none exists. In a December 2023 survey on NuGet.org, ~30% of respondents indicated having used the blue checkmark to evaluate package trust in the past month. This is largely problematic in that a significant portion of users in our ecosystem are placing trust in an unreliable source, and this could make them vulnerable to attacks. + +## Explanation + +### Functional explanation + + + + +The core of this proposal is to simply change the blue checkmark icon to a different signifier of prefix reservation. We don't want to just do away with the icon without a replacement since prefix reservation is still an important concept in the NuGet ecosystem. Our goal in selecting a new icon is to find something that represents "reserved" rather than "verified". Below is a mock-up screenshot of the proposed new prefix reservation icon. + +![alt text](lock.jpg) + +The lock icon is a known indicator of security -- which is the purpose of the prefix reservation concept. However, the lock icon doesn't necessarily imply authenticity or some sort of vetted trust. It does a better job of communicating increased security that might come with using a package whose prefix is reserved in terms of protecting from attacks such as dependency confusion, without the potential for misplaced trust in a certain package author. There isn't as much obvious external context with something like a lock icon, as opposed to the blue checkmark (whose context is described in detail in the motivation section above). + +Additionally, the lock icon is used as an analogy to the concept that prefix reservation is similar to "reserving your own land" on NuGet. Reserving a prefix on NuGet allows you to have full jurisdiction over all packages with a specific ID prefix. In a way, this is analogous to reserving "real estate" in NuGet -- you own a specific prefix, similar to how you might purchase and own a property. Similar to putting a lock on a house to restrict unwanted people from coming in, you can now put a lock on your reserved prefix to restrict unwanted parties from utilizing it. + +This new icon will appear in all of the same places, and behave the same way as the current blue checkmark icon. The only thing that will change with the implementation of this proposal is the appearance of the icon. + +### Technical explanation + + +TBD + +## Drawbacks + + +Potential drawbacks here are that changing the icon could be confusing for long-time users of NuGet. They might be used to seeing the blue checkmark and familiar with what it means. However, the new icon clearly conveys its meaning and, in union with the fact that the location and placement of the icon will be the same, should result in as little confusion as possible. + +Additionally, with a change like this, it is imperative that we communicate the reasoning and implications of this change with users. We will plan to write a blog post and utilize other means (idea: a banner or notification on NuGet.org somewhere?) to notify users and minimize confusion. + +## Rationale and alternatives + + + + +There were a few alternative icons also considered for the icon to replace the blue checkmark. They are pictured below. +![alt text](image.png) +![alt text](image-1.png) +Ultimately, the decision was made on the lock icon since it most obviously represents its function. + +## Prior Art + + + + + +Twitter/X - "verified user" blue checkmark icon + +## Unresolved Questions + + + + +Are there any unknown implications/context to the lock icon? Is there a different icon that would be better to communicate prefix reservation? Should we have an icon to indicate prefix reservation in the first place? Is there anything else about the placement/behavior of the icon that should be changed given this proposal and other context? + +## Future Possibilities + + +This proposal leaves open a lot of opportunity to actually answer the question of how we can communicate trust or authenticity in a package, or in an author. How can we actually accomplish what the blue checkmark was falsely conveying? How can we anchor trust of off something that is already known/trustworthy, and how can we do this in a way so as to not add or increase operational cost (i.e. individually vetting or verifying authors)? diff --git a/accepted/2024/image-1.png b/accepted/2024/image-1.png new file mode 100644 index 0000000000000000000000000000000000000000..5e9144763650a3953829940e168558faae6bbbf4 GIT binary patch literal 5186 zcmeHLXH-+$whk>|s47K35K!s88=4AA2T3RaghahcCmuSX3kp)DOK(yWAR>}O3FUA= zIwBA$0tYonm6nJE0(X1fegEE{H{N?=+#hd@z1P}f&AsN@bFMYNZ_fSvj+HSdLLmys@ zD!rZ|yx8j{O~AK%G%7n(cFCeajRZ_m&cmmhQY$u{lkzz z-IxUs=?w4u<{e8*0c6BhAZJB>uH)=A2WO{Id%qQJ6#4T;@g9UT*Tz*;8_`#}eP)vh zZ&f;z&Kd4|K@oqtPWHMxU36tiiIl9 z@E50~`Izgdz4nrBF3<*ZqR8?c+WF|c#37V&O%7{p&t9S#XJc5`LL*6AAB@XH?{)+) z!DZy<+w@@851k3vYeS@U&f`b+ntaxIPz6}! z<^AZu44(U(JZ+3@VJgIj3#BezrA z4dHQQg6sAxn{Mc!ZwmnlU!FfX6qpd616t3Bu%oyCIk9T|8+^IIS=|6*=%2KLrOHq# zeE8dL4upa4#+TK*J*KQ{mDsK zKAH=Muq#*ce+jZZ8NgahM$P$&(q zN2WJVa~y2zSV?y^2esy!DalX%$YXh`Mt#}#Np!RlFPt!73|VSnKMv*2Oyc{=G?(jwGPn-iibFW`%cxmB@2HBqU_; z!+p69MMo!`J{baz1q2?FjP}`^2KSi=nYtP(__j~QN}Zp|%=jQrgTB+8B4~9t9uG}< z=mba9A08+m!&?pED}G_1jZ4vW>9Pd1&u3z%$v-$SM4<`BnCqi?PNR-Dd>1MCYHw-V z%v=~E2F8FL`gYnUR4=jvW7>GtVLrRn;~Swm_v-#ZBJB@MVe)+Hq8jU$tsf|YejB5% zv7IEt278+J1vG)RovQm=@**Ef<9&SWZcrHB8IAY(A=B-NI{P2*FQVo*;nCCG5?uZB zfKp;l%WO3W8*}SoGGRV;0Tb)<#+t#NDd}Ij!1Iqv7;#|!-;@`9xq~)1TSoO+5S;R# zQ5_4Sn}CDQepOsQ1zoMK_x>aA zW%`lwXw>=4b4yI_p??_ZjZZ@~Yt&kTNT%5a>pkWK@63)I-&y{*%64D|Ib`+PC?6X8;Y#YM^VN8eoM}vSJ7aWqyWwgYKv!2-7{3E-^_{EC00zQm@Us0b2ST*!#GRNhbeqA% z{%QcB$lrNrms$RuC&moMO>Z9<(COTPUy}b?o2+JHVzMsLPYKmQfBg!;p3iPZCCMS- zULv(G&(=y3*EgIqeA?u1ZLM_vnrmmu_j$saLF38S!OR(ci@)(+?a}C4eZ6NgBmpT z57@T*G=jTqL*g;!vXD`mC!%aIm4_m&UFj7DfhQVLt7;*!yW}$BC!;Mt65~rz@L^ zy82ft*C9QU?k>i&gDFV^$KDV(61zab#Dl@$E1`#IqJr^d7u|Y=q zCpg`;xwYlv?%omkrGIA!A89*^XtZ^^l{ni&J7JAV*8~XZLsLDx$|_TdJg!IPi&;`B zr`J%8(?mW_2`D)?*pv)7+ciDoFZ-*zM>ez+fc!X~rH_R+X$}4APZ>+brNrf=3k5mA zzc@8_J~O+>kR`u+Lqy_t@(@73OW)@&v4Jo5czO+KWrvZQfOy=VX-&$KaU`Zf1utCq z8A5dmL@E;8mdpDV2xvGbOQ+kozAMrG$8Go?`{LT_<|`pVMB|i2@=1mWj$J?@=cf1k z$u*gBu&}1DJ;8{2I_uJqV{=#gK?^PC_~-6}Yt8rVp0}kYABbp68%KHTD#dBjiJS<4 zn{)huv7g6L&9D}`PHzvN$xG5a9AjYzdXA-sj!rGpJofGIAvsy{5Y~)T6EB9KM@B6t z&#v?IN{aF$9;(FJ~ z+^zY`2=Z!T_Eilx&vB$XY$^LA&e@vUf}&#Lfo;hzXdLKU8X5KS@cDJ2yKb|?lnL&g z@?pn652e<|KQ<2Mu20m447ZGbb$7z_KT9cyI)44S;lz7zJy2C9%Clj7(@Gpc_5>ng z+hE7Vh3+^TF3l@p>c3yLEz|hBA9+0{)((hV14-V`BmTH!k6A zBmok?S@z;n5!DRVd%s(NG=kd%*m_;_#Hqu=3~qC%K(<3*xh|D;Bqj}SdH8lp#C!M1 zRwG)w*SEW*!U_()hfVbgUu*rF%nkh`!@u-fI&S)f0kB(z5jO(JPY8A|V3Vfb#fxu5M*jb}2<8-wfc{EGK(eOa}W>V|uj#})%4Lsd3UbWZCD z8|&kq`f@cEZ1;$;qK8*k*s&{hNH!H+U3r(gd&^7iXlCp(i?=jyhJYLZfI~9RqqD87 zzwwXe9<;2w*$1U=Iucz6l|qaqITfNPt9@5XAzmDCHv7@MXFQ)5i2_mzKokM#39YM1 zFLz!|TU$D?0x2$(uTky(Zp?*dOeV<<8YM9x5o>WpLFYtB>FH2R*Xq&4R8ou?*h38mENGMc-T06KztBe(D_j_CEzQ|}9GrX0z|1I=j zd#PGgJdSD>nB%c|5kdXtdXo+M6r-kP?Ri#&gg)5HeKg?g;0K9t7t;6TWM&Lthoi4N z+&js#e#FZ=mURdqrcK6^BW}?F8$Qy7Dx(;?2)BBy0roVE7LZ~=3)lCw07pd7S-I@_ zqA1*fAAx+GW~@w-(}+)?e7J^>MEc+E8U%3u)o#GyEeGx-{-~P9>Ul%by?TSN)C8P< zpwnsY?WnboUB$P)^lDX8hxeXR0{MzV|5`0Ok}gs7rjBluNRK?-JwLrS8$Y~Ns~<=s z%U!M)+aHUW-kC2!Mi8Batb^~Z%4=$&+gyd(OnuqpihkCe7f^DP<^FB=v$bdO=Q_jq zhc{+PTdJmnlosEkBl4r?&l|N&L*s*f1-NFN!T|Bztuknza4Di9O~LzF6cl=r!GWAr{jCm%a`9-+cwHN z8d|?LA8x7h%krI-q*|JfOE=bZ1hlrcG`Q|lOrF}Y-Ei<|4V?_$K3uWzDZ2akG-mrN zti)H=j=SvnTFxz?^zcj24QkbkLU!)W?4CDH6?JZEMl?u9)!`xHn^w=cyrg-{EFwt?ddV9~_Z+92@j`*`D5f8%Pa6!tERA|A?i@ryBvBhUoZ5Ek>{4 zp!#@aMUGNhQ@bX?H@poIg@$MO1_2d}IJ4gU$~5!9M4_W_{n@nPt+F(ml5v8^K7V%f z2+lh+Pa+d2MrxDT#Jw%ckjj`ToTDY%GL_5c)7`2cfBA(0yf{%+rzbL6rxw|&v6af-luRV@#H+hdr<6YJmLjIy2s$G2&2AK7=klt3U5>G`)N zXh++Q-ZPko6fSZN)4jJ%K2ujJ7^5`=UCbwn8N3pON|NWTFo@j7pNL5A*fGb<2{6U` zR?MsT=^;s*FB~i&tXjCma~BXP3qLDZz>FK)QMnq#fPnw;$j$p49@_gZYla17d8VM~ zwQ2V{$0hiEfoP4Z-a-A64FC5N2erGQQ0O{`0-k*glAM~_&p>*tJrbI^Iw}Z>>svLAdS^whnpL;&w*UL+u3BhXM$)b}G?&3xu-pqkY>Z|T2^VfM5N zSU8_?&C7J=wIlOe<>hGtSC=|AX^C4ORO{#;n?8uV@ti-7NRao&FIp9aL@u^lY}VqW zWDo_Vh-aHz4BhOxFc`|r*WY`2&0vc8<nQ9f@CAff6U94$V8+L^{g-;z5H*H6bRb*nEyM; zDZ$*eBezJ%|1A+)7>1te-x3j!VqyrAhsPh&6P^3Vnia6*7yh|g4`qTjXV+@-@Q8n{ zg#auin)qKU1utsZ!!Y8v&7u_)|FN7zWYa(9{l8Jucgzkt55gb>MLwC1h-RfBRs7Wy zO@aH_Yf+b(TGg2Gp?&WT15xQV!xdiJR0964rEWI3C8>%-;XQ1?=I`&84;9Hs-m^Uc zFCDgwj2XXITU}%#GLSoB7Gl_0&M`^ouqYyg8))d!}C;~Gv~1* z*dHN>X9Moc#NooIIB#Fy=KtN$YymdiR`-h}g65wa-7E}v8~-^8+vo21r}^Dz`pCvc`>XxjEjEApJHI8piNY^lVJu*gArg)X zV}s@>E7Mq~7t)b_$m^Bd`E@CborGkQlR62>`2KDd?B*iexkBa>UD;fESaC>lsz3Dh z!yY<94R(t+vyPch#d}E1clb=6VZ?g^;f^a@pLQH`ZqoAed6EQi^84TNe6FaFLCahC zUYl4e$;u?1;}^%fo|~MA^f7f3%#3rJUd{!gHX7XTBOl%P#?SVP!}{OvITLdt+E%FS z$P^j}_1oGB`g3lQMzOKo{NP+c)Bm22l!Wb9QT8L-Fvs4@BuX@imvtRtFybU0Uh%PE zzZ`O!|6Vt4S;l{>LlLPEyQvcOKv98{MjbMFwXOKarPe~aUp}`k>r%52UR6?1yg&J! zM#b1}iR7~fdGtW!U4j@Ioy3Z|I;OT__5h4yy3?%+sJ|)C!!A)m0 zNgT!i^K@o_>|50y+vOp-<BRPu!E~Sr|?j1!|IH@R*e87bZoa`ByT{pBqKO_Km+_qIWLJ(E_vjFyd;`iH9PcVICKIP zidq$;qGiYDF7>eV*O>U*le|Jg_HgXk?)nr84i}``Tx22PkGF~K$&~i(k==We?Qh)_ zMK%?*rNu0|B+Ctc6>9BRsgKWcW6`m!A+Ie3DWaPO3iVtH+!IOhaZ80rGc>u%d06*> z`>;mFosC$x6N98o|x?iS(F^_Uu)f7P`5B0fvzCDLX3fWr1zqaKMo-fU$> z6c%0@xSss0r}v%md{4I9sHHbp9~xm+^U}caV zre<{V)60ywus;|Ru)WZ?tz-iJWyWXI^BKNQVa8?Ak!rpE$fLEo1T(4NL$8MRvqQw$ z@0~V=fSskCuNPQ1tSW^X(GE4QC(Fg3{8Etev$f^g^IsdU-M-v@3d#=o>>PV*N1cZv zt9Vu0@NpuJF7bY*H5@nv6tKEBO5izi>P=Jj2f)@57pO zMWrJp{yZc%j~tRad#wc&2i5gCPFKj!ja%C0rVJ1Yem?ym`WguhJ=r-<9ZnauKWs&` zniw-Wu#Sz5F$kK!ZoKet+||gYxk0B9^f?N!jXs^ee%Hz?|!;J zp50$gMH(6z@$4_cQJP#qeCWygK)UZq=trgcEJ4c3&7o&|p<9-2w7fFgy~@~W$8lO% zyPF_?sy)361n=NJ;rZvHm8^mN9dCo?yoU40bD@`AuI|A(TrEte@Bp&tLR={qe%$CC zSGV3U79~*1PXXrGK094M`!Y)FJo~fEW|m{1ii3tmuT;9s8bkJ&U}6xq$Nx@kEB5vs=o1VeIY4~k#J zLtXZ%GIYZ7ZmyN5g`e(#Ei{|+9t+dSZnRC)Qk4JRf92!Qh12%K>_Ns(?dKhju}(xm z4Qip(Cp}n2P2S_4vt#Xt44U&QG4qI1mcwju#rq8{^2gKE=2_Ftv8<9$!m{I#rLGfF zhk5SNN`$b(;)Q@KZN*)h>>9IfKWUe0XWbbRkzY)g^&H3UYf(Q+9$s2n5_opp8yl97 zoJgC+HAHJ1PNsn)wrLMEl7$kO@1PTfx}PxW>#Am-@9q8HYRLf36mns@%E%>%$OtO* zEcCcF^fGyLhhW{~MRXq5SpWF}D0s4ouKKXuX!ARY4>2F0SrRUc@mfdaxGoz1o*nv- zq+C-`vt9U<^NRgecUAGFV`lZSB=fo$Wour=R9%_Q-H{FYvRA=!1U_3{^=p)T9p z&4zac@?!i3k3>gGt(6m4WIx7(Em~b#!mfYsLBB+zqaxD6MRvG1rk!z*UYn@9P2Cw4 zfwOkaU(LhnU6|Bo^i(V|>cnAr(EI2BpltcYev}6`;9xclVNo|Ev6gV*`$Kn-P6zsu zZ8I_?FAP-0kTX`6@X>t{bh;`2tvG9!z8#V#=p8J&f8BSyZ*o#l%t!VERh>j{mB`2R z%6hn_`LHUbMtxAf*6rH!h0a`6f(|A|-08JA{)n~rm-ddSbgRS+; z2-In3x@fhW>jf{8nyt|x|7*N@2!YEr(GQf-0+ya#;v)Cz1a2U_MI-{M+Lkj?f9KoX zqRjbOSX>P8)1ZI_klh^M@UOaaH~W-6dAPm3eWo>GOwCK$Z@qp`5OwTv=&*UKf8d)7 zr|dGxUE=FY8s8dj;l-GoJc`ZT-QAU5``p|i1)Tz>&>TxGUDwYz`B{gzH(<3Ryz(-m zGj*(BB4hHyk;bG|A~k&8ZRXp3RHFJ({6sHH)kYmH7Cbg8XCN z-n+Jx*F?TaB!2q}!qy^jOO>WPsm4Qftqjta=cNWn!q-JU=HWa{>gVmLAkUpaqq_Dv zy;_$s2`N&6erP51$b(HFy5(9ye2T!uE&m!8dj@&lYv5+ zmtp6V|9~o8x`*4Wy#5pQfi*5{wUMnXfiISp`TGY{T-C3eo=bgQJ#2lFH>7~K_Wn(~ zu8i4%l1E*jP&?~WbV%RL+Zj#6g%R9?_4jR`-J>rzH!*P>4TfJ1(GhhFlzO>q>$Ldd zn&@xn`e*lo$(>xd2X)C+XGNaujtyAZ10|z#=NjI9sDpQTp!}Yl z(}5JSLwCG>fN&xyo>KTOvR7mkvRoxpx5Q&oD9ik%ktfS9;$HHjk&U+mHIzEkCmsC- z+68u}YrZHZ+A(ca)pMC0m|^pge08Wqv>iw+_xkJ36Hjb8F{vI}4Hg;bKeSJu?BkVn zT4N#yO71-Q&2{DPg|a&`6}ZWXd(oKYTR7D3&MKIa$5+KFGyEJMKYlZH921bNc`cnU z*=Xrq=r!2k*0Y_GC;qQwR6wx5JY5((@bSS)rOrBXe^f0=P64|VcMoScaAGGz4Hp$` z#?agsu!3~MPRFh~$A0d4anYfSaN-LYK{W(Z4meMs%gbr~xWD707+0+E0YU zIw`08Qq*t`X5_qT=cM-lRPFgylybB%nN-8ho85J8Qw`GVNYSCFRLaRZ-*u3W^FE_B zwJdOHD&16FosE)Yuq=bUd z=M}O^iT;EO-4bH-yqC$h6Pmi$z6^aVe0<;Z&(`Z{J1_|{xmcONG?^x&sUzHeChx)e zmBZTMe z?##p@J<5au9U;7pJUk3s2pw|POj)*eWUgCZe>ZG`D{E<>*4IVtE=r$_d-iPdI1V?h z)=V|H&$I|&?18N-b#OsoiCbncAxce}KP8O}PRH!kRfjD^{npiXxX2U}hu(XlK6Kd!v}>w+mhZ(uLLA*sBjRWW|&Hfem15`hgW8! zkr?!}?!qRO4wr&S$9=|J+&hzJfif!Vlo9oQv*Nd^OT}&_KV~*&6wsE)z`?>``hKEA zN8*w`P`@qE`IO9p^wEDMT?5~4aX)zvJLEw`D^1s+PFDN1GsIMqQp1VewM2i?WCYdk1s|ID44B8|pjZUFWk}e(n(_97i6IH7*pC_8CDPPuf%Y7z9iQ>U`bKQFGND?;t{D zJ?CDKHChalLM+O7jnK|Q$wsy>lYn>O53J zM#p`TNrFEy9Ui~laI|()FCUjJ!HOjat9lr%3#pl-_0%aY=cKL>K_EBC2MA#2o47`d zaZt4cQeO*U1a-OogoYRowOnm#8&4e2J!DKZ3ZA=?qpDCUHtMon<_l8cF@i8xEk4c% zT7Ne(uWt>|bD*)-!p(x~X@Lv8)7ZdcB435|-o%*#1pAXqSYBW9UOA(sE=`OmKc#Zd z2m?$iJqm$uU*lyA=s=Ruioly0Sxow<{s5TF(S;byj7%F;hc-Wn0dV)7BixQ{h~w=j zso;Nj(qy`Yg+=}BeD*u#SS$*T4z$(-UB@$E@ng%jJ1_yWqT=G(pW9~Cxs(bWeW0ly z!!_e=YI^t{TIfIZ(9(`*&QtR>gP)(>ZQlQte)}5e<9lpN1TT{VxTCMTc+UZ7EEI z5D4HD=*ss`1%50ldhhrZ)0Xm|P%p5zIu9IcLBkwLEvGK8GQkm+m$Y7*Fxa^Purf)k z#tsV&OsxS`D(3M4uOJr{8=DzWMg8P4pA1~D=h4op%xqD-foBP5$%N@rN-XMpzCFFv zR8V$5U1WBlFE{kiiMT+r)_aUvFvw3{@ML zot@f@K3++!{R7RJ+lbV8;Apf?LGo}%H3FDZ^*d9+3oxhJPZwc%xU((ML92H z`Ju!MfQ_N9dlc}Zbij)kTN;7`F6OM=D4#z7#8!u}zOkzlkilu;uQD-0<6H6MlzM+i zq5+AEbb*&}n}lVg+hL;-0KAug_KPbQ!1oIVFRlsTnJu+CimL)dczE!VW&*o{0-#h< z!=kuv0&eQ28$o^=8$L#mRXQZ|64Q*w6E}Ke!kR0pI30I5YYs#zRD#u4 z%KT-@48Ak#|7BPChlpGiw5lW}#o>sm!m=?0gk(ge`b4xD9{`n@k0g8zjlfUF)%#wf z9B(Sg@s}&oAq23Dy1fIFJN#We&~&CkT(amA=dR#00#diHyr+3>2V}8hDw_4MDuj&{ zjl9Q^o<-^BrTFgxfgrIvHkAIrGPX(~`K_c7t=nwW%Qz~@nPqpV^eRp{7nP%D^TDR) z$FR^rfR520dxgdEJe!tFvv3&$PRBxszaCH%^#LXKVZS-J0}9Mt=lknET0FB?Sr^uK zgAIp((SO~(N<_j5m@6`Mhh!1J6k^X?1(4wOSauRG!9Kx)2<=So%?K-U>AA7LHgd8V$#cF%QjvBHjVp_CaX(Dk7NaZEVi z&zc3(SvdH`C&FY(EODml|I@7bp*~QK$VGbC8%7`lV}K^V76I&Du2S>BA6l=9viTbn zuVZA3iY%!LP_kMFUG8^90$7V8y^R_K&qejh*miC=+r!( zXnC_bS}*;*G&e&k5vDZr@geUWD*ouah(M9pS`Fxd`0S3Y8!SjzWsvO<=HUn?V)BBlWnzP8307}!@`@lhw3otVF@Pl;lV4*wPVuB;BYWbly%``h?M9d`fK z(AhzE61r(m|0w0}Wx5^ZxP@OoaeEP{LE1M2 zJZWi^I~`MH%+Dg}=g^r7#OdaofMtjY>**}i2nkKShWd5Li734cYyY`y8xpm1tZPyi9J^dvbGk@X zZDP6dse->aH#avgZ>QON*<^N`r+CCW|70GO1;D_v3{a!Kr1V=FC`^!WJzUwcXxdjq zG#B)|J=m`3kstkB=sG25pJlPK0-z`tS691mN)`_~ikUZV4VUKVsSY}dd%Ao=>HT-# z&X2qnsz*lcxi~vJJ34yDd}Vwq>Fxm>QhpMdS5}r}5uRzx-*M~8bAI&@S^40(&U~#m zdqac%@twp^tJ!RFjovtLxL>D)HR*CB8+DXtWuw9@T%)8dLDzhCx}fh9cjmkOa}%$n z*C70O&UMeAd@6S7Q;A{x!3GY@zSvQ}KxiakzY*>V1Fk8MKmfJ$&oS>-GUp?oIk*oLzK<=fTk}JUp!ay_At7YJR~R zdNZ3dRb##bu2Ww_yt5AzLecRvv+`4S-p1FuO@$cVv0p=Ky^+{L{V>v}`jvA23zZqH zD)cOTnnP`~*4TPU{!~L0Db89#&$yv1hj6w&Oc^Z68y<536yLS*mYLQA(v{$vNY|^K z&c@bL4JV<8TNXh}N+t(Y#OH^GT&GZH1jTP<=lv&bH_=AMvoE!M;34z%aqWbaGs>ZX zAM(DR%+ks!>7O$?;pEGW`)bc@Ob*e~fLfYwi`0?#j^SeUzR;6x#s|E7sG|3}eq_~E zRjKk;Q7zHsSe~q)jE48uoUvbmTX~d-x@H!E%k12JX$l{Yv@~(^@+^pkOhpXH1 zc9hGFe%5&XlodV969m6It*rqyvv?DoU5_E<0(xuD49{~kX;0}ZD9XNBSZQkl;%19) z{1rc}X^k6e@mWVO-D31}9z;028D=XkArVlY{TOWJv3N&@cw8G_Pk>v)j?d|#yT)aB zn=?>2^j){*22rz!^RBtveg_0r-dO6{7r+pygfY9HE3~`D?8+Hr2IB)OFoX0#iyfYDx`z;F@>e^ zH%3c?2ep2SeA&Sb&TbYH&!0o*(q?1>8-B&xXh9D$3BV$DXVZ2pLxX)l4Dh97ZEHFj z21?NpIv2R z=`0noz~T8DKJNd(sf-+AF^fqZ&)X*#7iTTy(*OzX;UK2oTYjAB*Ouq;w`XAX5dTeW zli_bgZ7WiGmS@dweK6a;=gRL&j(dEmEcbuE-(iw_=%z#&aNX6>adx;eQ0=9^^Y`{l zX?ctNrW>a>W@q}dA8u7wR)#b0{YPeGL6zI(Do#Xj2++JY<*+v z8tTD~`1A=CCH15?p5jWw{-S+0!o2Dbq?pZ33foz*E$>Q@_6WI(c^MQimpY&IEKy&U z_44CS^h%BH%pS9s$=$zkydZ;E7hY=PLsix47*39lce0!ZNw`b!!Z6iUKX_iWyaZ^6 zrL$1zw2LG36>ccLC~5M2>8lPl(U??=?{-~T%ZCY5=3{=xk`#gaPanwGb(A+8%rWgY zJpolluVvQ(q@#P;Er24zFTgpp@)9TxXx`ix3fC-o#9Nt@(SK!HWcIQTT zW@q<&v6QxALxoic9>YztF$SOK_q%4@%KBPf)TMPZ>5Ul3x3#}kdf(inYg}Z8JzR1| zAk0wVCr2P2aX~C+5q9+L?e;RFDe?sS!Rp8KL?LlgGiPZ>+}L{vB{MUoy8IW{<-=

bL-M!#OPs+V zQz~uM!Pj6(4wflaU%7}>ZK5vHv8Ef1k%mSY;4JQ@@Olwd2!UF7Pv+eC4Dz0wVrlm=h{;U ztf4)|LksG7+BIX{a}U~Mf;8cb&KcGol}jezybzvO`sxdhUbh~06jYa|r_{TN06n~n zV%b^sjoxCF@0dclnHYi`(Unn!i$W*yIv~sKTNWDIWGsP`z$XagmyV-Yx#WZTqQ{e< zbb4{kcO8Vd{x__CfoB+l5LG!x!r-KqSd4tOU-DggJw-Khgv4LbDzQ7-Q0u~F7vgXh z-_loyR}5-FJpzIzr~%z!*<~Hw-ozLBdfp~$Ko`fBOdbPYSZ~;qLy1TWi62MEfY=bU zYMpE(_v2t|-nnM|wRqrKqvCBWLBQ@(Md%sfq?$TZ`>kY~X~4;|6#z`yP@1P0O=l5G zP#mEVK*|k`89qM?9^0jv=k4~7KnS$OtgNkdJ7B-Kp2P$n?N)>y$8;!}+zFjc9tqv( zWe=gm3NcIiJ@r1ob_5JFu>0+8v=#So=t=GXOWhV}xA6m!HmdG?aPqJMA6A26A^w^S zt-Uo!1$2g&4)C1R4eFLVY+%hd`Mpz1ALZ#4aXQCkW*)C@fCPxk+arU?!#Ts#MwWpS z{?_h8z1xDxm{g(u@{)wxZqp{%e$lMif+)-mrY#%FdhJdCvzs!-vB9HZj5jE29BmBM zuuG4Amw@dYI8(~#!x-$Zy>FvF$+Q@ak{9ip+CPvjuhh}oB9wmQ>swV*vvrgWzb?E{ zxMUBjFGJdOjeZ()+FLn@&`NrQZD%R-KH3!sa=(PCh>K<)?_N(up8sRh{=vJoBd^$n zL|->qj=W{a+z`i|te}(+Y`f%#B?k_Kiig@mq+kk>_F2I%Eu0qW5CgbXS)aBqm%eeE zNn^)wflaB0zduli z9!$BC+s*<`YC3^3L^TB&>aYd-bnNt9{%&G?%hW__5Vk$7e|#KiHT|5wNy)@tPmfN1 z_CG{MEzN+~x9P8U)35E8UbaFb6yM>9#QFI8wz@2q*-(Nu@3pjB_%dJUW1p-7^lb-h zdwRt;x4hrk62FixYzy9>eU7MnQt6;CHoi6$BqHZQncV#b^<)isuGkPYBhJs7A{Q)~ zGMtp#TIR64yGj>x3$zhEm5SI~jW+?NYkf0C1zUbotm7^~j<1|m&RgG}Qe&k*KEO7H zM^+O58K&9)`puK$h%z!@`wP{5*7Hs!*@Md~5@?f9AfSGufDq#3H=CLS`w?E?z+- zw0oS)64p=(kAgNpgpO0_jZ(!pCt}{zbl>uLIOOw7OJ`toZ!Pjc6Z%2Oz!X+h1Am$M zdy23Er0^2EuT2aGq%hm-vH>qbC4EFdi>TdWl_VqWc_kimB$PF6c@-kx5*_;N_mQ}> z!%+@jIe&-qN6^Cwjsr(Jpn&F7cme&t8cpBphb6r_2l#$9+ORV=Ik4}xhRwR6jwk1y zWB5ZoPsZoxDQdXQU^^r8b^F(|x6>Y-UJB`E?vwYY^txWn|2(wm476cU8~d>pJPe(8OwG*165qv z696ED_i0x=oA`y1*!FAf43f%VD^3vU-4*yQ&2$_6&?o)lN9IO(fnuQBc>|E*?uV8K z0N?;ux@|6MZ$7_%CYS=sgN=5StjH{AoNl{~NZGH+gj^STl^UxF1!d7-Pv`bw&0J*F zN_a463t8Ggxb*;?93^FZRn^!*CZdU=v;Xvf#CfV_ie9_NZx;X@E6QXM@E_&;2wXGr za9w-xbkCCbFT3%2M8oc3wM&(oVCZvb-5vh}KK)+UeXUvNi0-`JNgmK*mg=_{oLi3Y zna*}G;^kwNTxdy4<3HJ-=>iR2;QYkizOP3}D8mq_k^7lG?oa4}odIo#K&bP%voMA; zjCim2&+-z_`R+397q?!eQnPsUZ*4I=9{IAG={vCTG3bHRT`;;yg%;nwCvZ zqLtld7D0Ny<2nE7dgB%-(A_|9@3U7MnM##FQ7DNb zixA>zislxEsDgsS(TpP;b!2i*oZ{K>$bx5#nCXgt&? z?_b5w*XzB1B>$HeIubCugGgbuV~7C#okhK6 zt&_O(M)TgQE6?ex}D2;>bmF<@{4ZAqstxpT0~&80O;cfs!C~TX%nHt z;7>9sX5gdiYX-lbi8HnCpbV(xRO;Nu43ApBDm!)nI0@Gj&x^*{ngCl{+#=Ve;O|Jb zy!2+m{v)eg*33*-vui`V8V&}+HBWAexy4VB=4jLG^GO$Gm}x+lJ!?eq`pf;ohedau z{L0xdwo6zBlg@W$-nI0cCB#u}lgH6A^SBCUq>%UmRe1vl+P~tXm2#Fh_I%qz4s1^> z*WRcLi38D5Q>`sqj{{QYW=hSP7wf+57yh7-OKVRq09o8w z0XQ&Zbm4L0C(Izkwe9d>+0UOpKil^(fEirf-1gQ7K{f(E0^frhJvnRW%M$SM8DhOt zUIT~ccvBG-X?wki-K9^yEAhUmq=ZZRK(X#n`?|JYleqe!C~y@ zHm!`HzJNAk4*`q=(3@&qBfrTk`j^>~Wg*RX5ki4m0QJ0|&}*U@JZ6) zA%~20Ue|sd)zGIYg=JA)7|KJ+j2lT}400F0cff){t^qbJznma3Z-_2@vy) zTMP6Ygy|H;MsKb*H}$e9koti`U)nK>e=U=Yj*a=pNG-&C1%av>6ek%O)LB`Z{3xcc z%SSc3mTzz;9B>!De$WZ`0%#o@kYlSvf)vab*&&O5>iB{Ohu|>HOwV3yyvuZZQ^w%4 za*d8*$l14|oIPRA>JTAf+a)>*S~^vwMlnFPsJ*8=|13GIGkUOC>y^6|Kg|aBFWVf= z`n`{mDG!M3yMs=8n-fUax9jaOuZLmvNqtX4FG6q!3rwI44?Vf8UIFUE;<|!u#vc(J zTjFcAZs0{okzA}EdinAthh;EVkgT;G!y=eB*p4B(@gA-4S0Fi;xI*LyvLEKg^`o5E z`Q}7Z!FdgloqUnzFDcx380v$~_n>^*4Ut|HOIvYa!y~^5T*1|~QBIR#NOCN@EniGe z%Fo@5fB9zGmR;-<>3-mXH#nhcNV`yWRmjA4X@@P$;8AuMPG{vPDV2{G2yyHG*Sp;k z>d*>QMT_dffPO=Zq_OdndnA}luWHSkk2IZ`2@3+T;w@jBBJ^&st#i77dxCkZO_h@* zxU-^@xxX)xs%Wr*(}KZ&>rDZiP}pUmw^v}hN2J*GXcZ{8_QF*@T0Co(L=vW`ki$u6 zY)X5H@xy(<>@=Js1wZ2mFBr-5^BQz`7Dmdj)BYAqU0J_$BP#C++tDA9Pcp>?m2kT`V`csICfM(r z;jNW~fD0uk?G@t!K)#o*#w}0B$nE)mec6l`K zuEGeKpl$j4bB2C1Ham&vM)0Z`pwt7GALv@}@N3b_bEkpZJ9)zI9u$$h5}-^(Lce(3 z929@(!9i*cUTK2fCccz&RkaCS=}WMc#!Uc$h$=m=B;z$>WbrR?ycC(*W8FweR~KR%EYe~ zctJSSk*Ks%jH6QhjeV(R;&% zXj;HP16o&C2W~NYZT?n8R!F-LddQ!F``3a{VQ``K%0J!>Ck2u2 rZv+V7{w@H1(ErJY{{J3$EdRl#rZ(O~t`_`t1p*D#`zmlHtBC&wRxHiN literal 0 HcmV?d00001 diff --git a/accepted/2024/lock.jpg b/accepted/2024/lock.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5987ac0fbd52ad9da1352f8b1c78515b50ad66ca GIT binary patch literal 6851 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 literal 0 HcmV?d00001 From 4d954107461046076723690db99bbe869517b004 Mon Sep 17 00:00:00 2001 From: albarry4 Date: Mon, 24 Jun 2024 13:28:21 -0700 Subject: [PATCH 2/4] rename file --- .../{bluecheckmark-replacement => bluecheckmark-replacement.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename accepted/2024/{bluecheckmark-replacement => bluecheckmark-replacement.md} (100%) diff --git a/accepted/2024/bluecheckmark-replacement b/accepted/2024/bluecheckmark-replacement.md similarity index 100% rename from accepted/2024/bluecheckmark-replacement rename to accepted/2024/bluecheckmark-replacement.md From f646a34da0b3b607383c9f061a64ea43ac606ee8 Mon Sep 17 00:00:00 2001 From: albarry4 Date: Mon, 24 Jun 2024 13:32:35 -0700 Subject: [PATCH 3/4] add image --- accepted/2024/bluecheckmark-replacement.md | 2 ++ accepted/2024/image-2.png | Bin 0 -> 4625 bytes 2 files changed, 2 insertions(+) create mode 100644 accepted/2024/image-2.png diff --git a/accepted/2024/bluecheckmark-replacement.md b/accepted/2024/bluecheckmark-replacement.md index c3a900130..8e9c54e0b 100644 --- a/accepted/2024/bluecheckmark-replacement.md +++ b/accepted/2024/bluecheckmark-replacement.md @@ -56,6 +56,8 @@ Additionally, with a change like this, it is imperative that we communicate the There were a few alternative icons also considered for the icon to replace the blue checkmark. They are pictured below. ![alt text](image.png) ![alt text](image-1.png) +![alt text](image-2.png) + Ultimately, the decision was made on the lock icon since it most obviously represents its function. ## Prior Art diff --git a/accepted/2024/image-2.png b/accepted/2024/image-2.png new file mode 100644 index 0000000000000000000000000000000000000000..a73dba6a6d26be1433d90b2876361d7515f936d4 GIT binary patch literal 4625 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 Date: Tue, 25 Jun 2024 10:57:41 -0700 Subject: [PATCH 4/4] moving image files into resources folder --- accepted/2024/bluecheckmark-replacement.md | 8 ++++---- .../bluecheckmark-replacement}/image-1.png | Bin .../bluecheckmark-replacement}/image-2.png | Bin .../resources/bluecheckmark-replacement}/image.png | Bin .../resources/bluecheckmark-replacement}/lock.jpg | Bin 5 files changed, 4 insertions(+), 4 deletions(-) rename {accepted/2024 => meta/resources/bluecheckmark-replacement}/image-1.png (100%) rename {accepted/2024 => meta/resources/bluecheckmark-replacement}/image-2.png (100%) rename {accepted/2024 => meta/resources/bluecheckmark-replacement}/image.png (100%) rename {accepted/2024 => meta/resources/bluecheckmark-replacement}/lock.jpg (100%) diff --git a/accepted/2024/bluecheckmark-replacement.md b/accepted/2024/bluecheckmark-replacement.md index 8e9c54e0b..b78a6631d 100644 --- a/accepted/2024/bluecheckmark-replacement.md +++ b/accepted/2024/bluecheckmark-replacement.md @@ -28,7 +28,7 @@ The blue checkmark is a known cause for confusion and misplaced perceptions of t The core of this proposal is to simply change the blue checkmark icon to a different signifier of prefix reservation. We don't want to just do away with the icon without a replacement since prefix reservation is still an important concept in the NuGet ecosystem. Our goal in selecting a new icon is to find something that represents "reserved" rather than "verified". Below is a mock-up screenshot of the proposed new prefix reservation icon. -![alt text](lock.jpg) +![alt text](../../meta/resources/bluecheckmark-replacement/lock.jpg) The lock icon is a known indicator of security -- which is the purpose of the prefix reservation concept. However, the lock icon doesn't necessarily imply authenticity or some sort of vetted trust. It does a better job of communicating increased security that might come with using a package whose prefix is reserved in terms of protecting from attacks such as dependency confusion, without the potential for misplaced trust in a certain package author. There isn't as much obvious external context with something like a lock icon, as opposed to the blue checkmark (whose context is described in detail in the motivation section above). @@ -54,9 +54,9 @@ Additionally, with a change like this, it is imperative that we communicate the There were a few alternative icons also considered for the icon to replace the blue checkmark. They are pictured below. -![alt text](image.png) -![alt text](image-1.png) -![alt text](image-2.png) +![alt text](../../meta/resources/bluecheckmark-replacement/image.png) +![alt text](../../meta/resources/bluecheckmark-replacement/image-1.png) +![alt text](../../meta/resources/bluecheckmark-replacement/image-2.png) Ultimately, the decision was made on the lock icon since it most obviously represents its function. diff --git a/accepted/2024/image-1.png b/meta/resources/bluecheckmark-replacement/image-1.png similarity index 100% rename from accepted/2024/image-1.png rename to meta/resources/bluecheckmark-replacement/image-1.png diff --git a/accepted/2024/image-2.png b/meta/resources/bluecheckmark-replacement/image-2.png similarity index 100% rename from accepted/2024/image-2.png rename to meta/resources/bluecheckmark-replacement/image-2.png diff --git a/accepted/2024/image.png b/meta/resources/bluecheckmark-replacement/image.png similarity index 100% rename from accepted/2024/image.png rename to meta/resources/bluecheckmark-replacement/image.png diff --git a/accepted/2024/lock.jpg b/meta/resources/bluecheckmark-replacement/lock.jpg similarity index 100% rename from accepted/2024/lock.jpg rename to meta/resources/bluecheckmark-replacement/lock.jpg