Feeds
Darren Oh: The Drupal Forge business model
Drupal Forge is a non-profit project of the Drupal community. Our mission is to support vendors that devote a portion of their revenue to sustaining the software and infrastructure Drupal needs to be a great product. Our product launch buttons are part of a business module to sustain contribution. This is what makes them different from launch buttons that hosting vendors offer on their own.
Darren Oh Tue, 09/10/2024 - 15:13 Tags- Read more about The Drupal Forge business model
- Log in or register to post comments
unifont @ Savannah: Unifont 16.0.01 Released
10 September 2024
Unifont 16.0.01 is now available. This is a major release.
From the NEWS file:
* Updates to synchronize Unifont with Unicode 16.0.0 release.
* Many new upper-plane Chinese ideographs added.
* New "make" build dependency on ImageMagick's "convert" program
to build thumbnail images of the Unicode plane bitmaps.
* unifont-combining-$(VERSION).txt is now included in the
distribution set to provide spacing information on all
combining characters.
* Many other minor updates; see ChangeLog for details.
Download this release from GNU server mirrors at:
https://ftpmirror.gnu.org/unifont/unifont-16.0.01/
or if that fails,
https://ftp.gnu.org/gnu/unifont/unifont-16.0.01/
or, as a last resort,
ftp://ftp.gnu.org/gnu/unifont/unifont-16.0.01/
These files are also available on the unifoundry.com website:
https://unifoundry.com/pub/unifont/unifont-16.0.01/
Font files are in the subdirectory
https://unifoundry.com/pub/unifont/unifont-16.0.01/font-builds/
A more detailed description of font changes is available at
https://unifoundry.com/unifont/index.html
and of utility program changes at
https://unifoundry.com/unifont/unifont-utilities.html
Enjoy!
Paul Hardy
OpenUK Awards 2024
https://openuk.uk/openuk-september-2024-newsletter-1/
https://www.linkedin.com/feed/update/urn:li:activity:7238138962253344769/
Our 5th annual Awards are open for nominations and our 2024 judges are waiting for your nominations! Hannah Foxwell, Jonathan Riddell, and Nicole Tandy will be selecting winners for 12 categories. ?
Nominations are now open until midnight UK, 8 September 2024. Our 5th Awards again celebrate the UK’s leadership and global collaboration in open technology!
Nominate now! https://openuk.uk/awards/openuk-awards-2024/
Up to 3 shortlisted nominees will be selected in each category by early October and each nominee will be given one place at the Oscars of Open Source, the black tie Awards Ceremony and Gala Dinner for our 5th Awards held at the House of Lords on 28 November, thanks to the sponsorship of Lord Wei.
FSF Events: Free Software Directory meeting on IRC: Friday, September 13, starting at 12:00 EDT (16:00 UTC)
ListenData: How to Integrate Gemini API with Python
In this tutorial, you will learn how to use Google's Gemini AI model through its API in Python.
Steps to Access Gemini APIFollow the steps below to access the Gemini API and then use it in python.
- Visit Google AI Studio website.
- Sign in using your Google account.
- Create an API key.
- Install the Google AI Python library for the Gemini API using the command below :
pip install google-generativeai.
Real Python: When to Use .__repr__() vs .__str__() in Python
One of the most common tasks that a computer program performs is to display data. The program often displays this information to the program’s user. However, a program also needs to show information to the programmer developing and maintaining it. The information a programmer needs about an object differs from how the program should display the same object for the user, and that’s where .__repr__() vs .__str__() comes in.
A Python object has several special methods that provide specific behavior. There are two similar special methods that describe the object using a string representation. These methods are .__repr__() and .__str__(). The .__repr__() method returns a detailed description for a programmer who needs to maintain and debug the code. The .__str__() method returns a simpler description with information for the user of the program.
The .__repr__() and .__str__() methods are two of the special methods that you can define for any class. They allow you to control how a program displays an object in several common forms of output, such as what you get from the print() function, formatted strings, and interactive environments.
In this video course, you’ll learn how to differentiate .__repr__() vs .__str__() and how to use these special methods in the classes you define. Defining these methods effectively makes the classes that you write more readable and easier to debug and maintain. So, when should you choose Python’s .__repr__() vs .__str__?
[ Improve Your Python With 🐍 Python Tricks 💌 – Get a short & sweet Python Trick delivered to your inbox every couple of days. >> Click here to learn more and see examples ]
Python Circle: Removing PDF pages using Python and PyPDF2
Jordan Maris joins OSI
Helen Keller said, “Alone we can do so little; together we can do so much.” Although she wouldn’t have understood this 2024 expression, we know “she nailed it.” It takes many of us working together to truly accomplish great things. That’s why the OSI staff is so excited to welcome Jordan Maris to our team.
As OSI’s European Policy Analyst, Jordan will work to build a bridge between European Union legislators, the OSI and the wider Open Source community. He will monitor upcoming EU policies and flag issues and opportunities, educate and inform EU lawmakers about Open Source and its benefits, represent the OSI at EU-level events and conferences, and provide analysis and support to the OSI’s board and members on EU policy issues. He will also work closely with other Open Source foundations and organizations to make sure the voice of the Open Source community is heard at an EU level.
Jordan comes well-equipped with the experience he needs to excel in this role. He worked for three years with members of the European Parliament. In his previous position as a senior parliamentary policy advisor, he fought for the Open Source community on laws such as the AI Act, European Digital Identity, Data Act, Product Liability Directive, and Cyber-Resilience Act. He is a strong advocate for the Public Money–Public Code principle and a long-time user of and occasional contributor to Open Source software. He speaks English, French and German.
When asked about his vision for the future of Open Source, Jordan replied, “A world where Open Source is the rule — not the exception, and where developers and communities are consistently supported, listened to and valued.”
Jordan says, “I’m looking forward to being able to devote more time to raising awareness about Open Source among lawmakers and to bringing together the Open Source community and EU lawmakers so that new laws better reflect the needs of the Open Source community.”
Please join me in welcoming Jordan to the team.
joshics.in: Can Contact Forms Be Replaced by AI Chatbots on Drupal Websites?
Contact forms have been a staple on websites for years.
But, are they becoming outdated?
Say hello to AI chatbots.
Here’s why an AI chatbot might just be the better choice.
Real-time Engagement- Contact forms often mean waiting. Users type out their message, hit send, and then wait for a response. With AI chatbots, the response is instant, providing immediate support and answers.
- Example: A user needs information about your services. Instead of waiting hours (or days) for an email reply, the chatbot instantly provides the details they need.
- Chatbots can guide users through their queries, step-by-step. This ensures visitors aren't left guessing, navigating through multiple pages to find answers.
- Example: Someone asks about your pricing. The chatbot not only shares the info but can also offer links to relevant pages, FAQs, and even schedule a meeting with a sales rep.
- Unlike human staff, chatbots never sleep. They're available around the clock, ensuring your site visitors always get the support they need, no matter the time zone.
- Example: A potential client from another continent visits your site at 3 AM. The chatbot assists them in real-time rather than making them wait until your business hours.
- Modern AI chatbots can personalise interactions based on user data. This means more relevant responses and recommendations tailored to each visitor.
- Example: The chatbot recognises a returning user and picks up the conversation where it left off, making the interaction feel continuous and personal.
But is it all sunshine and rainbows? Not quite.
There are challenges.
Some users may prefer human touch over automation. And, implementing a sophisticated AI chatbot can be resource-intensive.
So, should you replace your contact form with a chatbot?
Maybe not completely. A hybrid approach might work best. Let the chatbot handle routine inquiries and simple tasks, while the contact form can serve for more detailed and specific requests.
What do you think? Can AI chatbots replace traditional contact forms on Drupal websites?
Drupal Drupal 10 AI Drupal Planet Add new commentThe Drop Times: Noah’s Page Builder Simplifies Front-End Design: Julian Chabrillon
1xINTERNET blog: Bridging the gap: unlocking non-code contributions
Non-code contributions in open source communities attract considerable interest. Join a panel discussion with diverse experts who are actively involved in non-code contributions within the Drupal community to bridge a gap between experienced contributors and those considering their first step!
1xINTERNET blog: Hidden Diamonds - The best lesser known Drupal modules you want to add to your website
Discover together with Norman Kaemper-Leymann and Yannick Leyendecker a selection of Drupal contrib modules tailored to specific use cases, including Config Patch GitLab API, Content Templates, Frontend Editing, and more!
1xINTERNET blog: Unlocking AI potential in Drupal: from possibilities to practical applications
AI tools like OpenAI's ChatGPT integrate well with Drupal, but identifying the right use cases can be challenging. Explore together with Christoph Breidert the opportunities and limitations of LLMs and learn how to create impactful AI solutions!
1xINTERNET blog: Elevating content editor experience with realtime inline editing
Learn together with Artem and Bruno how to simplify content management using the Drupal modules “Content Templates” and “Frontend Editing.” Discover best practices for managing content at scale and improving the editor experience!
1xINTERNET blog: Transforming digital strategy at scale: a case study of Schwabe Group's journey with Drupal
Explore the digital transformation of one of Europe’s oldest pharmaceutical companies together with Baddy Breidert, CEO of 1xINTERNET, and Alexander Reisenauer, Director of Global Digital Marketing at Schwabe Group. Discover how strategic decisions led to Drupal becoming a key component of Schwabe's digital ecosystem!
Python Anywhere: Issues after system maintenance on 2024-09-05
On Thursday 5 September 2024 we performed some system maintenance. It appeared to have gone well, and was completed at the scheduled time (06:20 UTC), but unfortunately there were unexpected knock-on effects that caused issues later on in the day, and further problems on Saturday 7 September. This post gives the details of why we needed to perform the maintenance, what happened, and what we will do to prevent a recurrence.
The Drop Times: Correction Notice: Important Update in Our Recent Newsletter
Steinar H. Gunderson: GS1900-10HP web session hijack
While fiddling around, I found a (fairly serious) vulnerability in Zyxel's GS1900-10HP and related switches; today Zyxel released an advisory with updated firmware, so I can publish my side of it as well. (Unfortunately there's no Zyxel bounty program, but Zyxel PSIRT has been forthcoming all along, which I guess is all you can hope for.)
The CVE (CVE-2024-38270) is sparse on details, so I'll simply paste my original message to Zyxel below:
Hi, GS1900-10HP (probably also many other switches in the same series), firmware V2.80(AAZI.0) (also older ones) generate web authentication tokens in an unsafe way. This makes it possible for an attacker to guess them and hijack the session. web_util_randStr_generate() contains code that is functionally the same as this: char token[17]; struct timeval now; gettimeofday(&now, NULL); srandom(now.tv_sec + now.tv_usec); for (int i = 0; i < 16; ++i) { long r = random() % 62; char c; if (r < 10) { c = r + '0'; // 0..9 } else if (r < 36) { c = r + ('A' - 10); // A..Z } else { c = r + ('a' - 36); // a..z } token[i] = c; } token[16] = 0; (random() comes from uclibc, but it has the same generator as glibc, so the code runs just as well on desktop Linux) This token is generated on initial login, and stored in a cookie on the client. This has multiple problems: First, the clock is a known quantity; even if the switch is not on SNTP, it is trivial to get its idea of time-of-day by just doing a HTTP request and looking at the Date header. This means that if an attacker knows precisely when the administrator logged in (for instance, by observing a HTTPS login on the network), they will have a very limited range of possible tokens to check. Second, tv_sec and tv_usec are combined in an improper way, canceling out much of the intended entropy. As long as one assumes that the administrator logged in less than a day ago, the entire range of possible seeds it contained within the range [now - 86400, now + 999999], i.e. only about 1.1M possible cookies, which can simply be tried serially even if one did not observe the original login. There is no brute-force protection on the web interface. I have verified that this attack is practical, by simply generating all the tokens and asking for the status page repeatedly (it is trivial to see whether it returns an authentication success or failure). The switch can sustain about one try every 96 ms on average against an attacker on a local LAN (there is no keepalive or multithreading, so the most trivial code is seemingly also the best one), which means that an attack will succeed on average after about 15 hours; my test run succeeded after a bit under three hours. If there are multiple administrator sessions active, the expected time to success is of course lower, although the tries are also somewhat slower because the switch has to deal with the keepalive traffic from the admins. This is a straightforward case of CWE-330 (Use of Insufficiently Random Values), with subcategories CWE-331, CWE-334, CWE-335, CWE-337, CWE-339, CWE-340, CWE-341 and probably others. The suggested fix is simple: Read entropy from /dev/urandom or another good source, instead of using random(). (Make sure that you don't get bias issues due to the use of modulo; you can use e.g. rejection sampling.) Session timeout does help against this attack (by default, it is 3 minutes), but only as long as the administrator has not kept a tab open. If the tab is left open, that keeps on making background requests that refreshes the token every five seconds, guaranteeing a 100% success rate if given a day or two. There is also _tons_ of outdated software on the switch (kernel from 2008, OpenSSH from 2013, netkit-telnetd which is no longer maintained, a fork of a very old NET-SNMP, etc.), but I did not check whether there are any relevant security holes or whether you have actually backported patches.I haven't verified what their fix looks like, but it's probably somewhere there in the GPL dump. :-)
Specbee: Upgrading from Drupal 10 to the all-new Drupal 11 (and what’s new)
Ben Hutchings: FOSS activity in August 2024
- For the Debian firmware-nonfree package:
- I opened the MR:
- I reviewed the MRs:
- I responded to a query about backporting.
- For the Debian linux package:
- I opened or updated the MRs:
- I reviewed the MRs:
- !964: tools/arch/x86/intel_sdsi: Add sdsi package for Intel SDSi provisioning tool (merged)
- !1136: Compile with gcc-14 on all architectures (merged)
- !1148: [arm64] drivers/phy/marvell: Enable PHY_MVEBU_CP110_UTMI as module (merged)
- !1149: [arm64] Include modules for Lenovo Yoga C630 and Lenovo Miix 630 (merged)
- !1150: Draft: debian/lib/python/debian_linux/debian.py: allow more liberal revision suffixes than just \+b\d+
- !1155: [ia64] Purge ia64 from installer (merged)
- !1156: [x86] enable mfd components for BXT pmic (merged)
- !1157: [x86] Enable IPU6 and related camera options (merged)
- !1163: riscv64 kernel config update for 6.11 (merged)
- !1173: Update to 6.11-rc5 (merged)
- !1165: [amd64] Enable DRM_ACCEL_HABANALABS and DRM_ACCEL_IVPU (merged)
- !1176: [riscv64] fix conflict between kernel-image and mtd-core-modules (merged)
- I merged my own MRs:
- !1161: Fix and clean up Build-Depends
- !1164: d/config: Fix broken configs that were being resolved differently by kconfig
- !1175: Fix perf build failure on many architectures
- I uploaded:
- linux version 6.11~rc4-1~exp1 to experimental.
- linux version 6.11~rc5-1~exp1 to experimental.
- linux version 6.10.6-1~bpo12+1 to bookworm-backports.
- Upstream, I commented on additional backports required to address CVE-2024-26621 and CVE-2024-42258.
- I responded to bug reports:
- Upstream, I submitted the patch aacraid: Fix double-free on probe failure which should fix part of bug #1075855.
- Upstream, I pointed out that the fix in !1175 is needed in Linux 6.11.
- I updated the bullseye-security branch to upstream version 5.10.224, but didn’t make a new upload.
- I updated the bullseye-security-6.1 branch, merging changes from version 6.1.106-3.
- For initramfs-tools:
- I opened and later merged the MRs:
- I reviewed the MRs:
- I uploaded:
- version 0.144 to Debian unstable.
- version 0.145 to Debian unstable.
- version 0.142+deb12u1 to Debian bookworm.
- I responded to Debian bug reports:
- For the Debian iproute package, I reverted the recent removal of the /usr/sbin/ip symlink and uploaded version 6.10.0-2.
- For kernel-wedge:
- I fixed a bug in duplicate detection that linux !1176 had revealed.
- I added support for packages installing modules under /usr/lib/modules, and a test case for this.
- I uploaded version 2.106 to Debian unstable, including the above and some other bug fixes.
- For the Debian sgt-puzzles package, I responded to and wrote a patch for bug #1079717: sgt-puzzles: [Mozaic] crashes when copying the game.