A crise na segurança de código aberto reside em confiar demais no GitHub? ——Entrevista exclusiva com Brain Behlendorf, pai do Apache e gerente geral da OpenSSF Foundation...

9ee690579c84b6f501d05beb16b38345.gif

[Nota do editor CSDN] A Apache Software Foundation e a Linux Foundation, como bandeira do código aberto global, foram estabelecidas há mais de 20 anos e influenciaram profundamente bilhões de desenvolvedores em todo o mundo. À medida que a taxa de penetração do código aberto no mundo se aprofunda ano após ano, questões de segurança, como a cadeia de fornecimento de código aberto, que causaram enormes impactos, também desafiam os profissionais de código aberto. Este artigo seguirá a perspectiva de Brian Behlendorf, um dos fundadores. do Apache e gerente geral da OpenSSF Foundation, para enfrentar o pensamento aprofundado do fundador do código aberto sobre ecologia e segurança do código aberto.

Autor | Wang Qilong Editor | He Miao

Produzido | Departamento Editorial "Novo Programador"

Na mente dos desenvolvedores de código aberto, a importância do Apache e do Linux é evidente. O desenvolvimento do código aberto hoje é inseparável da ajuda de muitas organizações de software de código aberto sem fins lucrativos, e elas são as melhores entre essas organizações. Até hoje, o servidor Apache HTTP, que foi formado por programadores liderados por Brian Behlendorf nos primeiros anos para reescrever o programa de código aberto NCSA HTTPd, ainda é o servidor web número um do mundo. Essa existência, originalmente chamada de "servidor de patch", tornou-se a lenda do servidor Web e rendeu a Brian Behlendorf o título honorário de "Pai do Apache".

Ao mesmo tempo, Apache ShardingSphere, Apache SkyWalking e Apache Doris, que são familiares aos desenvolvedores domésticos, também são os principais projetos de código aberto incubados pelo Apache. A cultura de código aberto do Apache afeta profundamente os desenvolvedores em todo o mundo. "Apache Way" apontou um caminho para o pessoal técnico "como fazer código aberto? Como fazer bem o código aberto?". Entre eles, o princípio “o que não aconteceu no e-mail não aconteceu” é um movimento acidental herdado de Brian Behlendorf.Nos primeiros anos, para se comunicar melhor, ele criou uma mailing list para reunir todos. Trabalhe melhor juntos.

O código aberto de hoje entrou em um novo estágio. Os pioneiros retornaram do pioneirismo e começaram a estudar questões de segurança de código aberto mais realistas. Brian Behlendorf, um dos fundadores do "Apache", também se juntou à OpenSSF Open Source Security Foundation como gerente geral. comprometida com a construção da segurança do ecossistema global de código aberto.

ce60b0f737cc57284d583cb0ed6886ae.jpeg

Brian Behlendorf, cofundador do Apache, gerente geral da OpenSSF Foundation

Esta edição do "Novo Programador 005" teve a sorte de convidar este mestre de código aberto para uma entrevista exclusiva. Ele não apenas compartilhou conosco muitas experiências práticas e pensamentos valiosos sobre a construção de campos de segurança de código aberto, mas também revelou seus mais sinceros e elevados ideais de código aberto.

A seguir está uma transcrição da entrevista com Brian Behlendorf:

d181c568e0fda19333397d2f15d95fa4.png

O caminho de crescimento do "Pai do Apache"

"Novo Programador": Entende-se que seus pais trabalham na área de tecnologia, mas você não se formou em ciência da computação na faculdade. O que você mais se interessou naquela época? O que mais tarde despertou seu interesse pela programação de computadores?

Brian: Terminei o ensino médio em 1991, mesmo ano em que Tim Berners-Lee lançou o primeiro navegador e servidor web do mundo, mas poucas pessoas sabiam disso na época. Meus pais trabalhavam na IBM e se conheceram quando eu estava no ensino médio, e graças a isso tínhamos um computador pessoal em casa. Mas meu pai era um programador COBOL e a linguagem COBOL era chata para mim, então não planejei escrever software como meu futuro trabalho.

Enquanto estava na faculdade na UC Berkeley, comecei como estudante de física, mas lentamente fiquei mais interessado em ciência da computação quando criei minha primeira conta de e-mail na faculdade e fui exposto à Internet. Foi também a partir dessa época que comecei a executar alguns projetos de programação independente e, assim, consegui um emprego em laboratório ajudando a gerenciar máquinas Unix, adquirindo uma certa compreensão do trabalho e das operações da indústria de programação de computadores. Mais tarde, fiquei muito interessado em música eletrônica, então criei um site sobre música eletrônica em 1992 e comecei a construir uma comunidade lá, o que também fez com que eu não tivesse tempo para concluir minha graduação.

"Novo Programador": Então, quando você ouviu falar pela primeira vez sobre o sistema operacional Unix, o que você achou dele?

Brian: Minha primeira impressão do Unix – ele é orientado por linha de comando e estou em êxtase. Para mim, entrar na linha de comando é como falar com o computador: posso fornecer ao computador requisitos muito precisos e específicos através da linha de comando. A linha de comando é ainda mais fácil de usar do que a GUI porque não preciso abrir pasta após pasta e tentar encontrar o botão ou entrada certa. Nessa perspectiva, o nascimento do Unix é inspirador.

Olhando agora para trás, entre 1991 e 1993, a atmosfera da Internet e até mesmo a cultura social daquela época encorajaram enormemente a ajuda mútua. Era uma época em que tudo era perfeito. Você ficava entusiasmado ao receber e-mails de estranhos. Você imaginava que todas as pessoas com quem entrava em contato na Internet eram amigáveis ​​e interessantes. Você gostaria de alcançar mais pessoas. para a Internet . Essa cultura é anterior até mesmo ao software de código aberto, mas acho que ainda é levada adiante hoje, e muitas comunidades de código aberto são agora produtivas e criativas.

"Novo Programador": Você ainda se lembra do primeiro programa interessante que escreveu? Seu estilo inicial de programação foi transferido para seu trabalho atual?

Brian: Quando eu tinha oito anos, li um livro sobre como programar um computador TRS-80 em BASIC e usei esse livro para escrever alguns jogos e programas simples. Quanto ao primeiro programa real que escrevi, remonta a quando eu estava na quarta série. Naquela época, eu precisava organizar uma tabela aleatória de vagas para minha turma a cada duas semanas, então escrevi um programa que pudesse atribuir vagas aleatoriamente e imprimir os resultados. O engraçado é que, se eu fosse designado aleatoriamente para sentar ao lado de alguém de quem não gostasse, eu deixaria correr novamente e simplesmente sentaria "aleatoriamente" ao lado das crianças legais da classe - então esta tabela de assentos não é exatamente "Aleatório". O professor não entendeu o princípio, então não percebeu meus pequenos movimentos.

Mas depois disso, não programei muito durante a maior parte da minha carreira. Lembro-me de ter escrito muito nos primeiros dias da construção do servidor web Apache e de ter escrito muito quando o primeiro site patrocinado do Apache foi lançado. Ainda mantenho meu próprio servidor de e-mail, mas nunca afirmei ser um grande desenvolvedor de software, não sou ótimo.

"Novo Programador": Depois de deixar o campus em 1993, você fundou a Organic.Inc com seus parceiros, mas o software de servidor web da época não conseguia atender às necessidades da empresa, então você tentou mexer no código-fonte aberto, que foi sua primeira exposição para abrir o código? Como você se envolveu com o código aberto?

Brian: Não, não naquele momento. A primeira vez que tive contato com o código aberto foi quando fui para Berkeley, em 1991. Comecei a explorar como era o início da Internet. Vi que havia muitos softwares disponíveis para download na Internet e pude baixar facilmente cada software e usá-lo sozinho, rodando no computador. Desde então, tive uma ideia: o software não deveria ser algo que uma ou duas pessoas pudessem escrever e vender por mais de US$ 30 a cópia; em vez disso, o software deveria ser algo que centenas de pessoas reunissem em pequenos pedaços de código. de reunir tudo, pode ser o protótipo do meu pensamento de código aberto. Essa experiência aconteceu em 1991, e foi a primeira vez que usei o que hoje seria considerado “software de código aberto”, mas só foi chamado de código aberto em 1998, e o termo código aberto foi inventado depois disso.

8cd0396468a31835fad58260d3592c12.png

O desenvolvimento seguro de código aberto requer uma “lista de ingredientes” pública

"Novo Programador": Desde que a vulnerabilidade "chocante" do Log4j2 foi exposta em dezembro do ano passado, ela despertou a atenção e a reflexão de governos e gigantes da tecnologia em muitos países ao redor do mundo. Ao mesmo tempo, a discussão sobre a segurança do o software de código aberto tornou-se cada vez mais urgente. Para você, quais são as grandes mudanças que ocorreram no espaço de segurança de código aberto nos últimos anos?

Brian: A segurança de código aberto é algo em que governos e empresas precisam trabalhar juntos. Lembro-me que naquela época eles divulgaram alguns relatórios após o incidente do Log4j, mas em um relatório divulgado há cerca de 3 semanas eles disseram: Houve muitas situações diferentes que levaram a esta crise, então espero que fundações de segurança de código aberto como o OpenSSF sejam mais e mais. O OpenSSF foi citado 29 vezes nesse relatório do governo. Parece-me que, pelo menos nos últimos anos, o Conselho de Segurança Nacional deixou de nos dar uma palavra a dizer na resolução de vulnerabilidades, pelo que o facto de a fundação chegar onde está hoje não é apenas muito satisfatório, mas também muito intimidante. A segurança de código aberto é uma tarefa difícil que temos pela frente, e a sociedade depende dela para funcionar tanto quanto dependemos de pontes, rodovias, redes elétricas ou outras partes da sociedade, e não podemos viver sem ela.

"Novo programador": Em outubro de 2021, a Linux Foundation anunciou um novo investimento de US$ 10 milhões para expandir e apoiar a Open Source Security Foundation (OpenSSF) para proteger a cadeia de suprimentos de código aberto. Por que a cadeia de suprimentos de código aberto é tão importante? Que lugar ocupa na evolução do código aberto?

Brian: A cadeia de abastecimento representa tudo. Pode-se dizer que o mundo em que vivemos é composto pela cadeia de abastecimento. Agora há um mouse ao lado do meu computador por causa da existência da cadeia de abastecimento. E o software não é exceção: há muito pouco software escrito por uma pessoa e depois enviado diretamente aos utilizadores finais, porque o software de código aberto não pode prescindir da existência de uma cadeia de abastecimento.

Por causa disso, as cadeias de abastecimento são agora também um importante alvo de ataque. Dez anos atrás, nunca teríamos imaginado que alguém poderia inserir secretamente um pacote malicioso em nosso banco de dados de pacotes, muito menos que o autor de um módulo JavaScript poderia vender sua conta para um hacker, e que o hacker poderia usar nosso site para configurar backdoors ... Nosso negócio foi construído em uma era de grande confiança mútua, quando não precisávamos nos preocupar com esse tipo de ataque. Agora percebemos que precisamos ajudar os desenvolvedores de código aberto a tomar decisões mais seguras.

"Novo Programador": Qual você acha que é o maior desafio enfrentado atualmente pela segurança do software de código aberto?

Brian: Os desenvolvedores de hoje muitas vezes ignoram um problema: a seleção da plataforma. Por exemplo, quando preciso adicionar uma função, geralmente a construo com base na biblioteca existente.Durante o processo de construção, preciso da ajuda da plataforma, mas sempre optamos por uma plataforma e confiamos nela, sem pensar profundamente sobre isso. Questões de segurança. Você pode pensar que isso ocorre porque a maioria dos programadores são “eficientes”, mas também é uma espécie de “preguiçoso”. Todos depositam muita confiança em organizações centrais como o GitHub durante o processo de desenvolvimento, nunca sequer questionando-as.

Claro, espero que o GitHub nunca seja hackeado, e quando o GitHub é hackeado, muitas pessoas sofrem. O GitHub está indo muito bem até agora, mas deveríamos realmente colocar toda a nossa confiança em uma organização?

Também não sei a resposta para esta pergunta. Temos um projeto em OpenSSF chamado Sigstore que usa uma maneira muito leve, Let's Encrypt, de assinar artefatos no pipeline de desenvolvimento com chaves para que possam ser incorporados às ferramentas que todos usam para construir e lançar o meio. É como listas de ingredientes em toda a nossa vida: se você pegar um frasco de ketchup, o fabricante terá que lhe dizer o que há no frasco, caso alguém seja alérgico. Resumindo, os desenvolvedores agora também precisam de melhores ferramentas de software para promover a segurança de código aberto.

O desenvolvimento de código aberto também requer essa “lista de ingredientes” e um processo de colaboração transparente e aberto. Muitas empresas muitas vezes não sabem qual software estão executando e o Log4j tem problemas por causa disso. Ao implantar software, os desenvolvedores precisam entender a construção do objeto alvo e o processo de execução de todo o conjunto de trabalho. Tentamos evitar software que apenas um desenvolvedor tenha visto, software de fontes não confiáveis ​​ou software onde você não possa garantir se o servidor de compilação foi comprometido.

271904f4b2415f7f948fe7af04c87520.png

Superando barreiras linguísticas, OpenSSF impulsiona a construção de segurança de código aberto na China

“Novo Programador”: Muitos problemas podem ser diferentes na China, o que levará a novos problemas. Qual é a sua opinião sobre a situação atual do código aberto na China?

Brian: A segurança de código aberto é um problema em todos os países. Neste ponto, os interesses de todos são iguais, afinal, a vulnerabilidade Log4j foi descoberta por pesquisadores do Alibaba (Alibaba Cloud). Precisamos trabalhar juntos, e essa é uma das razões pelas quais estou participando desta entrevista. Eu realmente quero ver a comunidade chinesa, as empresas, os desenvolvedores e até mesmo os legisladores realmente unidos nisso.

Claro, também estou ciente de alguns problemas que os desenvolvedores chineses estão enfrentando agora, o mais importante deles é definitivamente o problema de idioma. Se a sua língua nativa não for o inglês, trabalhar com desenvolvedores fora da China pode ser um desafio, dificultando a colaboração e o desenvolvimento por não saber como fazer as perguntas certas. O Linux está trabalhando com o OpenSSF e estamos tentando criar uma subcomunidade chinesa que se concentre em servir e ajudar os desenvolvedores chineses a adotar essas tecnologias avançadas, ao mesmo tempo que permite que os desenvolvedores chineses nos ajudem a melhorar a tecnologia e, eventualmente, abrir o projeto Sigstore que mencionei anteriormente. na China. Todos estes devem ser localizados na China para que a comunidade chinesa possa aprender e utilizá-los de forma mais ampla.

"Novo programador": Para reduzir os riscos de segurança do software de código aberto, a conscientização sobre a segurança também é muito importante.Como o OpenSSF ajuda os usuários de código aberto a melhorar efetivamente a conscientização sobre a segurança?

Brian: Publicamos bastante conteúdo no OpenSSF não apenas para ajudar os desenvolvedores a aprender como usar as ferramentas, mas também para ajudá-los a escrever códigos mais seguros. Na verdade, publicamos um curso sobre treinamento básico em segurança do Linux no site de treinamento e agora o estamos traduzindo para o chinês, chamado curso básico sobre desenvolvimento de software de segurança. O curso tem cerca de 20 horas de duração, o que não é muito longo, mas ensina como evitar problemas como não analisar usuários não confiáveis ​​e como enviar a string de formato de entrada correta - um problema que causou o bug do Log4j. Acreditamos que se mais desenvolvedores fizerem este curso e se tornarem certificados, o risco de código entrar na cadeia de fornecimento de software poderá ser bastante reduzido.

Resumindo, incentivo os desenvolvedores a fazerem este curso no site do OpenSSF, especialmente depois de localizá-lo para o chinês. Também publicamos um guia que descreve uma série de coisas que os projetos de código aberto podem fazer para melhorar a segurança. O OpenSSF abre muitos recursos para ajudar os desenvolvedores, não apenas para tornar seu código mais seguro, mas, mais importante ainda, para cultivar uma maneira diferente de pensar e de fazer as coisas.

"Novo Programador": A maioria dos desenvolvedores chineses são relativamente pragmáticos e estão muito preocupados com a comercialização e abertura do software de código aberto. Quais são seus pensamentos sobre isso?

Brian: Se todos decidirem vender o código, empresas como Google, Amazon ou mesmo Baidu e Tencent não poderão crescer e crescer. Deveríamos realmente pensar especificamente sobre como comercializar código-fonte aberto, mas certamente não vendendo o código-fonte aberto em si, mas fazendo outras coisas em torno dele; por exemplo, podemos usar código-fonte aberto para construir um ótimo site, ou um site móvel application , o back-end do aplicativo móvel, lançando alguns novos serviços atraentes e muito mais. Nem sempre pense em como vender código-fonte aberto. Você deve pensar em como pode usar esse código-fonte aberto para criar mais valor no mundo, e as pessoas naturalmente pagarão a você.

"Novo Programador": Uma vez você mencionou o conceito de software de código aberto sustentável. Como os desenvolvedores chineses podem se beneficiar desse conceito?

Brian: O conceito de código aberto sustentável não está necessariamente relacionado ao software. Em primeiro lugar, você precisa perceber que a maioria das pessoas não escreve código-fonte aberto por caridade. Elas escolhem o código-fonte aberto não por abnegação, mas para escrever código para livre. Por exemplo, se você estiver trabalhando em um projeto para construir um serviço web ou uma plataforma de pagamento, toda vez que você corrigir um bug, adicionar um recurso ou escrever algo novo ao longo do caminho, você precisará de Pago. Portanto, um projecto de código aberto bem gerido e duradouro é o principal motor das actividades das pessoas, e penso que esta é uma questão fundamental a ser considerada pelas empresas.

Aos desenvolvedores chineses, o que também quero dizer é que estamos aqui, queremos fortalecê-los e também queremos que vocês ajudem uns aos outros para alcançar a colaboração global. Acho que muitos desenvolvedores se esforçaram muito para resolver esse problema. "Comunicação" é uma coisa muito importante. O desenvolvimento humano tem origem na comunicação. Forneceremos ferramentas para permitir que todas as empresas chinesas - e até mesmo indústrias globais - compartilhem os resultados deste empreendimento de código aberto.

5a3efbf9a4699dffb4bdef2b8af0d85a.png

O Apache Way é uma maneira mais segura de colaborar

"Novo Programador": Como membro fundador da Apache Software Foundation, qual é o seu entendimento do famoso "Modo Apache"? Como essa operação de código aberto garante a segurança do software de código aberto?

Brian: Na verdade, nunca houve uma definição clara do Apache Way. Ele tem dois pontos principais: email e comunicação digital. O Apache Way é uma forma de trabalhar totalmente inclusiva, aberta, transparente e baseada em consenso. Vamos fazer uma analogia: se um projeto ou coisa não acontecer em nossa lista de discussão pública, então você pode trabalhar nele primeiro de forma privada, mas Você precisa trazê-lo de volta ao público e ter uma conversa em grupo antes de prosseguir com o projeto. O tema do Apache Way é transparência e colaboração. Devemos tentar evitar a situação em que "uma pessoa é responsável por todo o software", pois se um dia o único responsável por um projeto deixar o projeto, ninguém saberá como continuar a manutenção.

Como eu disse anteriormente, você quer ter certeza de que em projetos de código aberto sempre haverá muitas pessoas responsáveis ​​por cada linha de código, ou mesmo por todo o projeto. Este é o Estilo Apache e acho que é na verdade um modo de vida. Usamos ferramentas simples para coordenar nossas atividades dessa maneira e temos expectativas comuns sobre como as coisas devem ser escritas para que possamos ser produtivos, escrever o melhor software possível e construir a confiança do público em nosso código.

"Novo Programador": Você tem alguma história interessante para compartilhar sobre o "Apache Way" e seus métodos de trabalho?

Brian: Gosto muito de usar e-mail para comunicação no trabalho. Gosto da sensação de colaboração on-line de forma assíncrona. O e-mail também tolera nossas diferenças de horário, diferenças culturais, diferenças de idioma, etc. Quanto aos fatos interessantes, nosso projeto de servidor Web Apache é na verdade um exemplo. Há uma pessoa chamada Alexico em nosso projeto. Ele nos forneceu muita ajuda prática durante a maior parte dos três anos desde que o projeto do servidor foi estabelecido. Ele não apenas ajudou a escrever alguns códigos, mas também ajudou outras pessoas no projeto a escrever códigos, auxiliou na revisão do código de outras pessoas e até nos ajudou a responder perguntas dos usuários. Devo dizer que ele é realmente um excelente construtor de comunidades.

Mas a videoconferência não era popular naquela época e não tínhamos muitas oportunidades presenciais, então não o conheci pessoalmente, então a única coisa que sabia era o endereço de e-mail desse Alexico. Até que um dia, ele enviou uma mensagem para a lista de discussão de desenvolvedores do servidor Web Apache, dizendo: "Ei, pessoal, tenho uma novidade para vocês. Talvez eu não consiga contribuir tanto para o projeto no futuro, nem o farei. direito está frequentemente online; porque vou para a faculdade neste outono."

Ele tem trabalhado neste projeto de código aberto quando era estudante do ensino médio, interagindo com todos os outros desenvolvedores de software profissionais! Naquela época, todos em nosso projeto ficaram chocados com sua diligência, inteligência e puro espírito de código aberto, que mais tarde vimos entre pessoas de muitos países diferentes. Portanto, acho que o Apache Way pode ajudar pessoas cujo inglês nativo não é sua primeira língua a se comunicarem por e-mail muito melhor do que por vídeo, chamadas telefônicas ou outros métodos, porque o uso de e-mail garante que a mensagem seja transmitida com mais precisão.

56e679898f1a0f55b699e4e111ef4139.png

O código aberto nasce livre, a colaboração global é o ideal final

"Novo Programador": No campo do código aberto, o valor da liberdade de Richard Stallman (o líder espiritual do movimento do software livre) é uma ideia importante que nunca pode ser evitada. Qual você acha que é a diferença entre “software livre” e “software de código aberto” hoje em comparação com o passado?

Brian: Eu respeito muito Richard M. Stallman. Há um ditado popular em nossa comunidade: Se Richard M. Stallman não existisse, deveríamos criar um Richard M. Stallman. Porque é muito útil fazer com que ele represente uma variedade de pontos de vista. Outros na comunidade parecem moderados em comparação. Estou muito ciente dos benefícios práticos de compartilhar código-fonte e acho que esse direito é muito importante, e Richard M. Stallman até considera isso um direito humano. Acredito que conseguimos converter muitas pessoas na indústria para carreiras em software de código aberto. Você sabe, 90% do software usado em telefones celulares, carros ou sites no mundo hoje é software de código aberto.

É claro que não estou enfatizando que o software deva ser de código aberto do ponto de vista moral ou de direitos humanos. É precisamente porque os projetos de código aberto que trabalham juntos como uma equipe para construir software melhor com mais eficiência é que penso que o software livre e o desenvolvimento ágil podem coexistir com o software de código aberto, não acho que sejam antitéticos ou inconsistentes. O movimento do software de código aberto sempre foi sobre “como podemos ajudar os desenvolvedores?” “como podemos ajudar as empresas a escrever códigos melhores?” Pensando que o debate sobre essas questões já terminou, o código aberto venceu em grande parte. Agora que vencemos, deveríamos pensar em como usar o código aberto para desenvolver a sociedade e o futuro que desejamos. Meu ideal é a colaboração global.

"Novo Programador": Finalmente, que palavras você deseja enviar aos desenvolvedores chineses? Como você avalia as perspectivas de desenvolvimento do código aberto globalmente e na China?

Brian: Sou um idealista. Quero um futuro onde possamos colaborar globalmente em projetos comuns, onde possamos encontrar uma forma de trabalhar juntos independentemente de barreiras como línguas, fusos horários, política, etc., mas estou preocupado que isso aconteça. Na verdade, não creio que haja um número suficiente de pessoas escrevendo código-fonte aberto hoje para atender às necessidades do mercado. Quero que o futuro seja como os primeiros dias do Apache, onde todos possam trabalhar juntos, independentemente das origens, idades ou origens uns dos outros. Este é o futuro que desejo para o código-fonte aberto. Espero também que os governos reconheçam mais o papel crítico que o software de código aberto desempenha na construção da sociedade que queremos, e que o código aberto construa uma sociedade muito digital. Todas as empresas (principalmente as grandes, claro) e os indivíduos precisam de reconhecer e investir no código-fonte aberto e perceber as consequências positivas que o código-fonte aberto pode trazer para a sociedade. Estas são as minhas esperanças, o meu receio é que não cheguemos perto disso, receio que iremos na direcção oposta, mas não posso prever se iremos numa direcção mais optimista no futuro, por isso todos Posso apenas falar sobre a atual direção otimista.

- Leitura recomendada -

☞中国联通与腾讯共同设立新公司;苹果被曝已冻结招聘,直至2023年9月;Apache Flink 1.16发布|极客头条
☞元宇宙与AI热度不减,Gartner 2023 年十大战略技术趋势完整解析
☞吴峰光杀进 Linux 内核

dd72f1f96d352fe1a754f4ca7a1886dc.jpeg

Acho que você gosta

Origin blog.csdn.net/CrisAppleYan/article/details/127681392
Recomendado
Clasificación