Vue normale

Reçu hier — 22 avril 2026

Après un premier échec en Europe, ce constructeur retente sa chance en 2026

22 avril 2026 à 12:10

Ce n’est pas parce que Great Wall Motor a dû faire une pause dans son développement européen en 2024 que la marque a fait une croix dessus. 2026 devrait signer le retour du groupe chinois dans la course aux ventes.

Reçu avant avant-hier

Pourquoi Sora, le « TikTok » 100 % IA d’OpenAI, va disparaître

30 mars 2026 à 06:01
Sora Openai

OpenAI tire déjà un trait sur Sora, son « TikTok » 100% IA. Moins d’un an après son lancement, la plateforme s'apprête à disparaître. Entre coûts colossaux, dérapages autour des droits d’auteur et inquiétudes sur la désinformation, Sora aura contribué à compliquer la vie d'OpenAI. Retour sur cet ovni des réseaux sociaux et de l'IA.

Sora ferme - Comment sauvegarder vos vidéos IA avant la coupure

Par :Korben
25 mars 2026 à 14:22

Sora, c'est fini les amis !

Hé oui, cest chacals d'OpenAI ferment leur plateforme de vidéos IA, et franchement, ça me rend un peu triste. À vrai dire, même si c'était que de la vidéo générée à partir de prompts, moi je me marrais bien. C'était fun de regarder le produit de ses prompts mais aussi de regarder les conneries des autres. Les versions québécoises, aïe aïe aïe, c'était quelque chose quand même !

Mais bon, le plus urgent maintenant, c'est de sauvegarder vos vidéos avant que tout disparaisse. OpenAI n'a pas encore communiqué de date précise pour la coupure, juste un vague « on vous dira bientôt ». Du coup, autant ne pas traîner, parce que quand ce genre de service cloud ferme, en général c'est pas 6 mois de préavis qu'on vous file...

Depuis la fuite du modèle jusqu'à aujourd'hui, Sora aura fait parler de lui. Côté raisons, c'est Fidji Simo (la patronne de la division Applications) qui a lâché le morceau : ils éparpillent leurs efforts sur trop d'apps, d'API et de stacks serveur différents, et ça les ralentit. En gros, entre préparer une entrée en bourse pour fin 2026 et cramer du GPU H100 sur des vidéos de chats en IA, le choix est vite fait. L'équipe de recherche Sora, elle, continuera à bosser sur la simulation de mondes 3D... mais pour la robotique. Et le fameux deal à 1 milliard de dollars avec Disney pour des films et séries ? Pouf, magie magie, c'est envolé !!

Faut dire que les chiffres n'étaient pas glorieux non plus. Après un lancement en fanfare fin 2024 (et une app iOS lancée à l'automne 2025 qui avait cartonné dans les charts), les téléchargements sur l'App Store avaient plongé de 32% entre novembre et décembre 2025. La hype, ça dure qu'un temps.

Mais maintenant les gens, on passe aux choses sérieuses !

Sora Backup - le script qui sauve vos vidéos

Je n'avais absolument pas de temps aujourd'hui, mais j'ai quand même taffé pour vous développer un petit script JavaScript qui récupère TOUTES vos vidéos Sora d'un coup, avec les prompts et les métadonnées, et qui vous génère un joli ZIP prêt à archiver. Pas besoin d'installer quoi que ce soit, pas d'extension louche. Vous avez juste besoin d'être connecté à votre profil Sora et d'un navigateur.

Comment ça marche

Allez sur sora.com , connectez-vous à votre compte, puis ouvrez la console JavaScript de votre navigateur (F12 sur Chrome ou Firefox, onglet Console). Ensuite, glissez-déplacez ou collez le script ci-dessous dedans et appuyez sur Entrée.

Le script va automatiquement récupérer votre token d'authentification (pas besoin de le chercher vous-même), puis il va paginer sur votre profil Sora pour récupérer tous vos posts publiés. Pour chaque post, il extrait les vidéos attachées (MP4), les télécharge, et empaquette le tout dans un fichier ZIP directement dans votre navigateur.

Y'a même un fichier manifest.json dans le ZIP qui contient tous vos prompts, les dimensions, les durées, les permalinks, les dates de création... bref, tout ce qu'il faut pour retrouver vos petits. Le ZIP est généré en format STORE (pas compressé, parce que compresser du MP4 ça sert à rien), avec un calcul CRC32 maison et sans aucune librairie externe.

Le script complet

Voici le code à coller dans la console :

// ==========================================================
// SORA BACKUP - Sauvegarde complète vidéos + images + prompts par Korben
// ==========================================================
// Usage : Ouvrir https://sora.com, F12 > Console, coller ce script
// Les fichiers sont téléchargés via le navigateur (dossier Downloads)
// Un fichier manifest.json récapitule tout (prompts, metadata, URLs)
// ==========================================================

(async () => {
 // --- Mini ZIP builder (STORE, pas de lib externe) ---
 const crc32table = new Uint32Array(256);
 for (let i = 0; i < 256; i++) {
 let c = i;
 for (let j = 0; j < 8; j++) c = (c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1);
 crc32table[i] = c;
 }
 function crc32(buf) {
 let c = 0xFFFFFFFF;
 for (let i = 0; i < buf.length; i++) c = crc32table[(c ^ buf[i]) & 0xFF] ^ (c >>> 8);
 return (c ^ 0xFFFFFFFF) >>> 0;
 }
 const zipFiles = []; // {name, data (Uint8Array), crc, size}

 const PAGE_SIZE = 50;
 const DELAY_MS = 1500;
 const manifest = [];
 let totalDownloaded = 0;
 let totalErrors = 0;

 // --- Auth : récupérer le Bearer token ---
 // OPTION 1 : Coller ton token ici (Network tab > Authorization header)
 // OPTION 2 : Laisser vide, le script tentera de le récupérer auto
 let AUTH_TOKEN = '';

 async function getAuthToken() {
 if (AUTH_TOKEN) return AUTH_TOKEN;

 // Auto-detect : endpoint session ChatGPT
 for (const path of ['/api/auth/session', '/backend-api/auth/session']) {
 try {
 const r = await fetch(path, { credentials: 'include' });
 if (r.ok) {
 const json = await r.json();
 if (json.accessToken) {
 AUTH_TOKEN = json.accessToken;
 console.log(' 🔑 Token récupéré automatiquement');
 return AUTH_TOKEN;
 }
 }
 } catch(e) {}
 }

 // Fallback : demander à l'utilisateur
 const input = prompt(
 'Token non trouvé automatiquement.\n\n' +
 'Pour le récupérer :\n' +
 '1. F12 > onglet Réseau\n' +
 '2. Rafraîchis la page\n' +
 '3. Clique sur une requête /backend/...\n' +
 '4. Copie le header Authorization\n\n' +
 'Colle le token ici (Bearer eyJ...):'
 );
 if (input) {
 AUTH_TOKEN = input.replace(/^Bearer\s+/i, '').trim();
 return AUTH_TOKEN;
 }

 console.error(' ❌ Pas de token. Annulation.');
 return null;
 }

 // --- Fetch API avec auth ---
 async function apiFetch(url) {
 const token = await getAuthToken();
 const headers = {};
 if (token) headers['Authorization'] = 'Bearer ' + token;

 // oai-device-id requis par certains endpoints
 const deviceId = localStorage.getItem('oai-did') || '';
 if (deviceId) headers['oai-device-id'] = deviceId;

 const resp = await fetch(url, {
 method: 'GET',
 credentials: 'include',
 headers
 });

 if (!resp.ok) throw new Error(`HTTP ${resp.status} for ${url}`);
 return resp.json();
 }

 // --- Pagination générique ---
 async function fetchAllPages(baseUrl, dataField = 'data', cursorParam = 'after', cursorField = 'last_id') {
 let allItems = [];
 let cursor = '';
 let page = 0;

 while (true) {
 let url = baseUrl;
 if (cursor) url += `&${cursorParam}=${cursor}`;

 console.log(` 📄 Page ${++page} (${allItems.length} items so far)...`);
 const json = await apiFetch(url);

 const items = json[dataField];
 if (!Array.isArray(items) || items.length === 0) break;

 allItems = allItems.concat(items);
 cursor = json[cursorField] || '';

 if (!json.has_more && !cursor) break;
 await sleep(DELAY_MS);
 }

 return allItems;
 }

 // Variante pour les endpoints project_y (cursor-based)
 async function fetchAllPagesCursor(baseUrl) {
 let allItems = [];
 let cursor = '';
 let page = 0;

 while (true) {
 let url = baseUrl;
 if (cursor) url += `&cursor=${cursor}`;

 console.log(` 📄 Page ${++page} (${allItems.length} items so far)...`);
 const json = await apiFetch(url);

 const items = json.items;
 if (!Array.isArray(items) || items.length === 0) break;

 allItems = allItems.concat(items);
 cursor = json.cursor || '';

 if (!cursor) break;
 await sleep(DELAY_MS);
 }

 return allItems;
 }

 function sleep(ms) { return new Promise(r => setTimeout(r, ms)); }

 // --- Extraire URL du média depuis une generation ---
 function getMediaUrl(gen) {
 return gen?.encodings?.source?.path
 || gen?.downloadable_url
 || gen?.url
 || '';
 }

 // --- Extraire le prompt (peut être dans actions, prompt, ou input_text) ---
 function getPrompt(item, gen) {
 // Prompt direct
 if (gen?.prompt) return gen.prompt;
 if (item?.prompt) return item.prompt;
 if (item?.input_text) return item.input_text;
 // Storyboard : les actions sont les descriptions des scènes
 if (item?.actions && typeof item.actions === 'object') {
 return Object.entries(item.actions)
 .sort((a,b) => Number(a[0]) - Number(b[0]))
 .map(([frame, desc]) => `[frame ${frame}] ${desc}`)
 .join(' | ');
 }
 if (gen?.actions && typeof gen.actions === 'object') {
 return Object.entries(gen.actions)
 .sort((a,b) => Number(a[0]) - Number(b[0]))
 .map(([frame, desc]) => `[frame ${frame}] ${desc}`)
 .join(' | ');
 }
 return '';
 }

 // --- Dérouler les items du profil Sora en items plats ---
 function flattenProfileItems(items) {
 const flat = [];
 for (const item of items) {
 const post = item.post || item;
 const attachments = post.attachments || [];
 if (attachments.length === 0) continue;

 for (const att of attachments) {
 const url = att.encodings?.source?.path || att.downloadable_url || att.url || '';
 if (!url) continue;

 flat.push({
 id: post.id || att.generation_id || '',
 generation_id: att.generation_id || '',
 task_id: att.task_id || '',
 title: att.title || post.discovery_phrase || '',
 prompt: post.text || '',
 emoji: post.emoji || '',
 type: att.generation_type || att.kind || '',
 width: att.width || 0,
 height: att.height || 0,
 duration_s: att.duration_s || 0,
 is_public: !!post.posted_to_public,
 created_at: post.posted_at ? new Date(post.posted_at * 1000).toISOString() : '',
 url: url,
 permalink: post.permalink || '',
 username: item.profile?.username || '',
 });
 }
 }
 return flat;
 }

 // --- Sanitize filename ---
 function sanitize(name) {
 return name.replace(/[<>:"\/\\|?*\x00-\x1f]/g, '_').substring(0, 100);
 }

 // --- Ajouter un fichier au ZIP ---
 async function addToZip(url, filename) {
 try {
 const resp = await fetch(url);
 if (!resp.ok) throw new Error(`HTTP ${resp.status}`);
 const buf = await resp.arrayBuffer();
 const data = new Uint8Array(buf);
 zipFiles.push({ name: filename, data, crc: crc32(data), size: data.length });
 totalDownloaded++;
 return true;
 } catch(e) {
 console.warn(` ⚠️ Erreur ${filename}:`, e.message);
 totalErrors++;
 return false;
 }
 }

 // --- Déduire l'extension ---
 function getExt(url, type) {
 if (!url) return type === 'video' ? '.mp4' : '.png';
 const m = url.match(/\.(mp4|webm|mov|png|jpg|jpeg|webp|gif)/i);
 return m ? '.' + m[1].toLowerCase() : (type === 'video' ? '.mp4' : '.png');
 }

 // ==========================================================
 // MAIN
 // ==========================================================
 const origin = window.location.origin;
 console.log('🎬 SORA BACKUP - Démarrage');
 console.log('='.repeat(50));

 // 1. Mes posts Sora (profil)
 console.log('\n📦 1/2 - Récupération de mes posts Sora...');
 let myPosts = [];
 try {
 myPosts = await fetchAllPagesCursor(
 `${origin}/backend/project_y/profile_feed/me?limit=${PAGE_SIZE}&cut=nf2`
 );
 console.log(`  ${myPosts.length} posts de profil`);
 // Debug premier item
 if (myPosts.length > 0) {
 const first = myPosts[0];
 console.log(' 🔍 Premier item - clés:', Object.keys(first).join(', '));
 console.log(' 🔍 URL:', first.url?.substring(0, 80) || 'none');
 console.log(' 🔍 DL:', first.downloadable_url?.substring(0, 80) || 'none');
 console.log(' 🔍 ENC:', first.encodings?.source?.path?.substring(0, 80) || 'none');
 console.log(' 🔍 GENS:', first.generations?.length || 'none');
 console.log(' 🔍 TITLE:', first.title || 'none');
 }
 } catch(e) {
 console.warn(' ⚠️ profil failed:', e.message);
 }

 // 2. Mes likes sur Sora
 console.log('\n📦 2/2 - Récupération de mes likes Sora...');
 let myLikes = [];
 try {
 myLikes = await fetchAllPagesCursor(
 `${origin}/backend/project_y/profile_feed/me?limit=${PAGE_SIZE}&cut=appearances`
 );
 if (myCameos.length) console.log(`  ${myCameos.length} cameos trouvés`);
 } catch(e) {}

 // --- Dérouler les generations et dédupliquer ---
 console.log('\n🔄 Extraction des vidéos...');
 const rawAll = [...myPosts, ...myLikes];
 const flatItems = flattenProfileItems(rawAll);

 const seen = new Set();
 const allItems = [];
 for (const item of flatItems) {
 if (item.id && seen.has(item.id)) continue;
 // Filtrer : vidéos uniquement
 const isVideo = item.type === 'video_gen' || item.url.includes('/videos/') || item.url.includes('.mp4');
 if (!isVideo) continue;
 if (item.id) seen.add(item.id);
 allItems.push(item);
 }

 console.log(`📊 Total unique: ${allItems.length} vidéos à télécharger`);
 console.log('='.repeat(50));

 // --- Construire le manifest et télécharger ---
 console.log('\n⬇️ Téléchargement en cours...');
 console.log('(Les fichiers arrivent dans ton dossier Downloads)');

 for (let i = 0; i < allItems.length; i++) {
 const meta = allItems[i];
 const url = meta.url;

 if (!url) {
 console.log(` ⏭️ [${i+1}/${allItems.length}] ${meta.id} - pas d'URL, skip`);
 meta.downloaded = false;
 manifest.push(meta);
 continue;
 }

 const type = (meta.task_type === 'image_gen' || url.match(/\.(png|jpg|jpeg|webp|gif)/i)) ? 'image' : 'video';
 const ext = getExt(url, type);
 const nameBase = meta.title
 ? sanitize(meta.title)
 : (meta.prompt ? sanitize(meta.prompt.substring(0, 60)) : meta.id);
 const filename = `sora_${String(i+1).padStart(4,'0')}_${nameBase}${ext}`;

 console.log(` ⬇️ [${i+1}/${allItems.length}] ${filename}`);
 meta.filename = filename;
 meta.downloaded = await addToZip(url, filename);
 manifest.push(meta);

 // Pause entre downloads pour pas surcharger
 if (i < allItems.length - 1) await sleep(800);
 }

 // --- Ajouter le manifest au ZIP ---
 console.log('\n📝 Ajout du manifest au ZIP...');
 const manifestData = new TextEncoder().encode(JSON.stringify(manifest, null, 2));
 zipFiles.push({ name: 'manifest.json', data: manifestData, crc: crc32(manifestData), size: manifestData.length });

 // --- Générer le ZIP (format STORE, pas de compression) ---
 console.log('\n📦 Génération du ZIP...');
 const enc = new TextEncoder();
 const blobParts = [];
 const centralParts = [];
 let offset = 0;

 for (const f of zipFiles) {
 const nameBytes = enc.encode(f.name);
 // Local file header (30 bytes + name)
 const lh = new ArrayBuffer(30);
 const lv = new DataView(lh);
 lv.setUint32(0, 0x04034b50, true);
 lv.setUint16(4, 20, true);
 lv.setUint16(8, 0, true); // STORE
 lv.setUint32(14, f.crc, true);
 lv.setUint32(18, f.size, true);
 lv.setUint32(22, f.size, true);
 lv.setUint16(26, nameBytes.length, true);
 blobParts.push(new Uint8Array(lh), nameBytes, f.data);

 // Central directory entry (46 bytes + name)
 const ch = new ArrayBuffer(46);
 const cv = new DataView(ch);
 cv.setUint32(0, 0x02014b50, true);
 cv.setUint16(4, 20, true);
 cv.setUint16(6, 20, true);
 cv.setUint16(10, 0, true); // STORE
 cv.setUint32(16, f.crc, true);
 cv.setUint32(20, f.size, true);
 cv.setUint32(24, f.size, true);
 cv.setUint16(28, nameBytes.length, true);
 cv.setUint32(42, offset, true);
 centralParts.push(new Uint8Array(ch), nameBytes);

 offset += 30 + nameBytes.length + f.size;
 }

 const centralSize = centralParts.reduce((s, p) => s + p.length, 0);
 const eocd = new ArrayBuffer(22);
 const ev = new DataView(eocd);
 ev.setUint32(0, 0x06054b50, true);
 ev.setUint16(8, zipFiles.length, true);
 ev.setUint16(10, zipFiles.length, true);
 ev.setUint32(12, centralSize, true);
 ev.setUint32(16, offset, true);

 const zipBlob = new Blob([...blobParts, ...centralParts, new Uint8Array(eocd)], { type: 'application/zip' });

 const zipName = `sora_backup_${new Date().toISOString().split('T')[0]}.zip`;
 const a = document.createElement('a');
 a.href = URL.createObjectURL(zipBlob);
 a.download = zipName;
 document.body.appendChild(a);
 a.click();
 document.body.removeChild(a);
 URL.revokeObjectURL(a.href);

 // --- Résumé ---
 const sizeMB = (zipBlob.size / 1024 / 1024).toFixed(1);
 console.log('\n' + '='.repeat(50));
 console.log('🎬 SORA BACKUP TERMINÉ');
 console.log(`  Vidéos dans le ZIP : ${totalDownloaded}`);
 console.log(`  Erreurs : ${totalErrors}`);
 console.log(` 📦 Fichier : ${zipName} (${sizeMB} MB)`);
 console.log(` 📝 manifest.json inclus dans le ZIP`);
 console.log('='.repeat(50));
})();

Quelques précisions

Si le token n'est pas récupéré automatiquement (ça peut arriver selon votre config), le script vous demandera de le coller manuellement. Pour le trouver, c'est simple : F12 > onglet Réseau > rafraîchissez la page > cliquez sur n'importe quelle requête vers /backend/... > copiez le header Authorization.

D'ailleurs, si la vidéo IA vous branche toujours, Higgsfield propose des séries entièrement générées par IA. C'est pas la même approche que Sora, mais c'est un signe que la vidéo IA ne meurt pas avec la fermeture d'un seul service.

Bon, bref, c'est la fin d'un truc sympa. Moi je préférais largement scroller sur Sora que d'aller sur TikTok ou Instagram parce qu'au moins c'était drôle !

Merci à mes Patreons qui me permettent de prendre le temps de développer ce genre de petits outils pour vous. Sans eux, j'aurais jamais pu me poser une après-midi pour coder ça.

Source

OpenAI débranche Sora, son outil de génération de vidéos par IA

Lancé fin 2025 sous la forme d’une application et d’un réseau social, Sora servait de vitrine à OpenAI pour montrer les avancées de ses modèles de génération de vidéos par IA. Un concurrent à Veo, de Google, qui rend finalement les armes. D’après les informations de The Hollywood Reporter, l’investissement d’un milliard de dollars de Disney autour de l’utilisation de ses licences par Sora tombe naturellement à l’eau.

La génération de vidéos, c’est terminé pour OpenAI

« Nous faisons nos adieux à Sora », annonce OpenAI dans un post publié sur X, promettant d’autres informations à suivre sur le sujet et la feuille de route. Cela concerne non seulement la fonction de génération de vidéos à l’aide de prompts, mais également le réseau social éponyme, inspiré de TikTok, permettant de scroller à l’infini parmi les vidéos générées par les internautes. L’accès à l’API de Sora sera également désactivé dans les prochaines semaines. Bref : Sora est mort.

Une annonce qui peut surprendre, mais qui ne sort pas de nulle part. On sait depuis des mois que la génération de vidéos coûte une véritable fortune à OpenAI qui, pour rappel, n’a toujours pas dégagé le moindre profit, alors qu’elle envisage une entrée en bourse plus tard cette année. D’après la dernière étude du MIT, générer cinq secondes de vidéo avec Sora équivaut à faire tourner un micro-ondes pendant une heure. Forbes publiait en fin d’année dernière un article estimant à 15 millions de dollars quotidiens le coût de l’entretien de Sora par OpenAI.

Au vu des finances de l’entreprise californienne, ce n’est donc plus tenable. D’autant que la concurrence, comme Veo 3.1 de Google ou l’impressionnant Seedance de ByteDance, semble désormais intéresser davantage les internautes avides de slop.

We’re saying goodbye to Sora. To everyone who created with Sora, shared it, and built community around it: thank you. What you made with Sora mattered, and we know this news is disappointing.

We’ll share more soon, including timelines for the app and API and details on…

— Sora (@soraofficialapp) March 24, 2026

L’avenir nébuleux d’OpenAI

Seulement, la coqueluche de l’IA, conceptrice d’un ChatGPT qui reste à ce jour le chatbot le plus utilisé dans le monde, donne ces derniers temps l’impression de ne plus savoir ce qu’elle fait ni où elle va. Après s’être dédit de sa promesse de ne pas intégrer de pubs sur ChatGPT, on apprenait hier que le programme Instant Checkout, permettant de réaliser des achats directement depuis le chatbot, était envoyé à la casse. Dans le sillage de l’annonce de la fermeture de Sora, c’est donc le milliard de dollars promis par Disney qui part en fumée. Un investisseur qui sort de table, et pas des moindres, qui s’ajoute au géant Nvidia, qui annonçait il y a quelques jours revoir sa promesse d’une injection de 100 milliards de dollars à la baisse (ce ne sera finalement que 30 milliards).

Alors, OpenAI fait-elle encore rêver ? D’après elle, en tout cas, oui. Hier, alors même que Sora était envoyé au bûcher, la CFO de l’entreprise Sarah Friar annonçait à CNBC avoir levé 10 milliards de dollars de la part de nouveaux investisseurs. La bulle grossit, donc, sans que la moindre promesse de rentabilité ne semble atteignable avant, au moins, 2030, de l’aveu du patron de l’entreprise Sam Altman lui-même.

La nouvelle lubie d’OpenAI ? Une « superapp », qui regrouperait en son sein l’ensemble des produits OpenAI, et agirait peu ou prou comme un système d’exploitation embarqué sur l’appareil où elle est installée. L’entreprise doit également se lancer dans le hardware, avec un premier appareil énigmatique attendu en 2027. À moins, bien sûr, que ce drôle de projet soit la prochaine cible de la Faucheuse.

Générer 5 secondes de vidéo par IA consomme autant qu’un micro-ondes qui tourne pendant une heure

L’institut technologique du Massachusetts (MIT) publie une étude enrichissante sur la consommation énergétique, et en particulier électrique, de l’utilisation de l’intelligence artificielle. Alors que de nouveaux data centers poussent aux quatre coins du globe et que les politiques publiques, notamment américaines, visent à un débridage total en matière d’adoption de l’IA, ce nouveau constat fait froid dans le dos. On imagine à peine le moral des experts du GIEC.

La consommation de la génération de vidéos dans le viseur

Alors que les moteurs de génération de vidéos par IA (autrement dit : de deepfakes) se perfectionnent et qu’OpenAI se prépare à intégrer son Sora 2 directement à ChatGPT, le MIT alerte sur la consommation folle de ce genre de technologie. On sait déjà que la moindre requête sur un chatbot d’IA consomme une quantité d’eau astronomique. On sait désormais combien d’électricité est dépensée pour chaque interaction avec ChatGPT : entre 114 et 6 706 joules, estime l’institut de recherche.

Si le chiffre n’est pas très parlant, l’exemple utilisé l’est beaucoup plus. Cela représente la différence entre faire tourner un micro-ondes pendant 0,10 seconde et pendant huit secondes. Plus le modèle de langage est perfectionné, plus il consomme d’électricité en raison du nombre de paramètres mobilisés par le chatbot. En d’autres termes : pour consommer moins, mieux vaut privilégier les modèles les moins capables… mais on augmente alors la marge d’erreur.

Plus inquiétant encore : la génération de vidéos fait littéralement exploser les compteurs. Pour créer une vidéo de cinq secondes par IA, le dernier modèle en date d’OpenAI consomme 3,4 millions de joules. L’équivalent d’un micro-ondes qui tourne pendant une heure… et 700 fois plus d’énergie que pour générer une image en haute qualité.

IA et écologie semblent irréconciliables

Pour panacher un peu leurs observations, les chercheurs du MIT ont alors fait un test : poser à un chatbot 15 questions et générer dix images, et trois vidéos de cinq secondes. Bilan des courses ? 2,9 kWh consommés en quelques minutes. Le MIT Technology Review reprend sa comparaison : c’est un micro-ondes qui tourne sans s’arrêter pendant 3h30.

Le rapport ajoute qu’avant l’émergence de l’IA à partir de 2022, la consommation des data centers, bien qu’élevée, était relativement stable et maîtrisée. Depuis que l’intelligence artificielle s’est invitée partout, les centres de données subissent les assauts d’internautes avides d’essayer le dernier modèle à la mode, conduisant à des surcharges importantes et à une consommation qui part en flèche. L’énergie consommée par les data centers aux États-Unis a doublé depuis 2017, et plus de la moitié de l’électricité de ces infrastructures sera intégralement fléchée vers les outils d’IA dès 2028.

Cette situation n’est pas près de s’arranger. Pour pallier le problème, on construit davantage de data centers, qui appauvrissent les sols et assèchent les rivières. La faune et la flore se font déloger et le désastre écologique qui se joue devant nous depuis des décennies s’aggrave encore. Autre conséquence : les promoteurs de l’IA accaparent les stocks de composants informatiques, notamment la mémoire vive (RAM), ce qui mène à une inflation jamais vue et dessine des hausses de prix sensibles pour tous les produits tech dans les prochains mois.

Fedora 44 beta est disponible : Installateur, KDE, Wayland, voici les faits marquants

Distribution Linux Fedora 44 BetaÀ un peu plus d’un mois de sa sortie finale, la distribution Linux Fedora 44 en version Beta débarque. Il s'agit d'une étape importante

Cet article Fedora 44 beta est disponible : Installateur, KDE, Wayland, voici les faits marquants a été publié en premier par GinjFo.

Venez tester Fedora Linux 44 Beta !

En ce mardi 10 mars, la communauté du Projet Fedora sera ravie d’apprendre la disponibilité de la version Beta de Fedora Linux 44.

Malgré les risques concernant la stabilité d’une version Beta, il est important de la tester ! En rapportant les bogues maintenant, vous découvrirez les nouveautés avant tout le monde, tout en améliorant la qualité de Fedora Linux 44 et réduisant du même coup le risque de retard. Les versions en développement manquent de testeurs et de retours pour mener à bien leurs buts.

La version finale est pour le moment fixée pour le 14 ou le 21 avril.

Sommaire

Expérience utilisateur

  • L’environnement de bureau GNOME est proposé dans sa version 50 ;
  • Les variantes de Fedora reposant sur l’environnement KDE Plasma utiliseront le configurateur Plasma Setup pour la post-installation de manière analogue à GNOME avec GNOME init setup ;
  • De même ces variantes utiliseront Plasma Login Manager (PLM) comme gestionnaire de connexions au lieu de SDDM ;
  • L’environnement de bureau Budgie passe à la version 10.10 et tourne avec Wayland au lieu de X11 ;
  • La variante Games Lab est remaniée pour passer de Xfce à KDE Plasma et ainsi utiliser Wayland pour avoir une couche graphique plus moderne ;
  • Le spin MiracleWM remplace l’environnement nwg-shell avec Dank Material Shell (qui est basé sur QuickShell) ;
  • Le gestionnaire de paquets universel PackageKit, utilisé par GNOME Logiciels entre autres, exploite dorénavant dnf5 au lieu de la version précédente ;
  • L’installateur Anaconda ne fournira plus de configuration réseau par défaut pour les interfaces filaires mais uniquement pour les installations n’utilisant pas une image Live ;
  • La suite TeXLive nouveau millésime 2025 est proposée ;
  • Le paquet d’intégration avec la bibliothèque Qt5 pour LibreOffice est supprimé, les environnements de bureaux utilisant Qt6 maintenant.

Gestion du matériel

  • Pour les systèmes Aarch64 avec un EFI, la sélection du device tree sera automatique au démarrage en particulier pour les ordinateurs portables Windows ARM ;
  • Le module noyau NTSYNC est activé quand les paquets Steam ou WINE sont installés pour améliorer les performances et la compatibilité des applications Windows et en particulier les jeux ;
  • mkosi-initrd est proposé comme alternative à dracut pour générer des fichiers initrd pour être évalué avant un éventuel remplacement.

Internationalisation

  • L’outil d’aide à la saisie IBus évolue à la version 1.5.34 ;
  • Le module Ibus pour la transcription vocale est mis à jour à la version 0.7.0 qui propose un module pour utiliser le modèle Whisper d’OpenAI en plus du modèle Vosk déjà employé.

Administration système

  • Les images Fedora Cloud n’ont plus une partition /boot dédiée mais utilisent un sous-volume btrfs à la place ;
  • L’émulateur QEMU n’aura plus de paquets compatibles avec l’architecture 32 bits i686, car cette architecture n’est plus maintenue par le projet officiel. Mais exécuter un système 32 bits reste évidemment toujours possible avec cet utilitaire ;
  • Le gestionnaire de paquets nix est introduit dans Fedora Linux ;
  • Le gestionnaire de paquets Kubernetes Helm utilise la version 4 dorénavant tandis que la version 3 reste disponible avec le paquet helm3 ;
  • Le gestionnaire de bases de données passe par défaut de la version 10.11 à la version 11.8 ;
  • L’outil Ansible est mis à jour à sa 13ᵉ version ;
  • Les paquets pour le gestionnaire de bases de données MySQL avec le nom community-mysql sont supprimés.

Développement

  • La chaine de compilation GNU progresse avec GCC 16.1, binutils 2.46, glibc 2.43 et gdb 17.1.
  • La chaine de compilation LLVM version 22 est proposée ;
  • L’outil de configuration de l’environnement de compilation CMake passe à la version 4.2. Cela entraine une rupture de compatibilité pour les projets ayant besoin de la version 3.5 ou inférieure ;
  • Par ailleurs CMake utilisera le générateur ninja au lieu de make par défaut pour compiler un projet ;
  • La bibliothèque C++ Boost passe à la vitesse supérieure avec la version 1.90 ;
  • Le langage de programmation Ruby prend de la valeur avec sa version 4.0 carats ;
  • Le paquet ruby-build est d’ailleurs scindé en plusieurs sous paquets pour rendre son utilisation plus modulaire ;
  • Le langage Go saute vers sa version 1.26 ;
  • Le langage PHP passe à la version 8.5 ;
  • Le langage Haskell devient plus fonctionnel avec son compilateur GHC version 9.10 et sa suite de paquets Stackage 24 ;
  • La boîte à outils web pour Python nommé Django serpente à la version 6 ;
  • Des paquets nodejsXX-bin et nodejsXX-npm-bin sont fournis pour créer les fichiers des binaires /usr/bin/node et /usr/bin/npm sans nom de versions qui pointent vers la version de référence voulue pour simplifier la vie des utilisateurs ;
  • La bibliothèque rust-bindgen pour lier du code Rust avec du code C ou C++ est empaquetée à la version 0.72 ;
  • De même pour les bibliothèques rust-coreutils et rust-nu qui vont respectivement de la version 0.0.27 à 0.5.x et de la version 0.99.1 à 0.109.2 ;
  • La bibliothèque d’édition des métadonnées des fichiers audio taglib passe à la version 2.0 ;
  • Le parseur et moteur de rendu de CommonMark cmark progresse vers la version 0.31 ;
  • La machine virtuelle Java OpenJDK 21 n’est plus proposée dans les dépôts ;
  • Le paquet python-mock a été supprimé des dépôts.

Projet Fedora

  • Les paquets avec des fichiers identiques utilisent des liens physiques par défaut ;
  • Les systèmes atomiques ne fournissent plus de bibliothèques et de binaires FUSE 2 ;
  • Ces systèmes atomiques ne prennent plus en charge les règles dépréciées pkla polkit ;
  • Packit remplace Fedora CI et Zuul pour démarrer les instances d’intégration continue pour compiler et exécuter les tests des paquets après un pull request ;
  • L’outil d’intégration continue Konflux peut être utilisé pour générer des images reposant sur bootc ;
  • D’ailleurs Konflux est aussi utilisé en lieu et place de Jenkins pour construire les images Fedora CoreOS ;
  • Koji ne prend plus en charge le service distant RedHat Image Builder Service, uniquement les instances locales peuvent être utilisées ;
  • Les labels des images pour conteneurs passent à org.opencontainers.image.title et org.opencontainers.image.licenses pour suivre la spécification OpenContainers ;
  • Les paquets autour du langage R ont de nouvelles macros et une meilleure uniformisation des bonnes pratiques pour simplifier leur maintenance.

Tester

Durant le développement d’une nouvelle version de Fedora Linux, comme cette version Beta, quasiment chaque semaine le projet propose des journées de tests. Le but est de tester pendant une journée une fonctionnalité précise comme le noyau, Fedora Silverblue, la mise à niveau, GNOME, l’internationalisation, etc. L’équipe d’assurance qualité élabore et propose une série de tests en général simples à exécuter. Suffit de les suivre et indiquer si le résultat est celui attendu. Dans le cas contraire, un rapport de bogue devra être ouvert pour permettre l’élaboration d’un correctif.

C’est très simple à suivre et requiert souvent peu de temps (15 minutes à une heure maximum) si vous avez une Beta exploitable sous la main.

Les tests à effectuer et les rapports sont à faire via la page suivante. J’annonce régulièrement sur mon blog quand une journée de tests est planifiée.

Si l’aventure vous intéresse, les images sont disponibles par Torrent ou via le site officiel.

Si vous avez déjà Fedora Linux 43 ou 42 sur votre machine, vous pouvez faire une mise à niveau vers la Beta. Cela consiste en une grosse mise à jour, vos applications et données sont préservées.

Nous vous recommandons dans les deux cas de procéder à une sauvegarde de vos données au préalable.

En cas de bogue, n’oubliez pas de relire la documentation pour signaler les anomalies sur le BugZilla ou de contribuer à la traduction sur Weblate. N’oubliez pas de consulter les bogues déjà connus pour Fedora 44.

Bons tests à tous !

Commentaires : voir le flux Atom ouvrir dans le navigateur

❌