Feeds

Dries Buytaert: State of Drupal presentation (September 2024)

Planet Drupal - Mon, 2024-09-30 14:09

Approximately 1,100 of Drupal enthusiasts gathered in Barcelona, Spain, this week for DrupalCon Europe. As a matter of tradition, I delivered my State of Drupal keynote, often referred to as the "DriesNote".

If you missed it, you can watch the video or download my slides (177 MB).

In my keynote, I gave an update on Drupal Sharshot, an ambitious initiative we launched at DrupalCon Portland 2024. Originally called Drupal Starshot, inspired by President Kennedy's Moonshot challenge, the product is now officially named Drupal CMS.

The goal of Drupal CMS is to set the standard for no-code website building. It will allow non-technical users, like marketers, content creators, and site builders, to create digital experiences with ease, without compromising on the power and flexibility that Drupal is known for.

A four-month progress report A preview of Drupal.org's front page with the updated Drupal brand and content.

While Kennedy gave NASA eight years, I set a goal to deliver the first version of Drupal CMS in just eight months. It's been four months since DrupalCon Portland, which means we're halfway through.

So in my keynote, I shared our progress and gave a 35-minute demo of what we've built so far. The demo highlights how a fictional marketer, Sarah, can build a powerful website in just hours with minimal help from a developer. Along her journey, I showcased the following key innovations:

  1. A new brand for a new market: A brand refresh of Drupal.org, designed to appeal to both marketers and developers. The first pages are ready and available for preview at new.drupal.org, with more pages launching in the coming months.
  2. A trial experience: A trial experience that lets you try Drupal CMS with a single click, eliminating long-standing adoption barriers for new users. Built with WebAssembly, it runs entirely in the browser – no servers to install or manage.
  3. An improved installer: An installer that lets users install recipes – pre-built features that combine modules, configuration, and default content for common website needs. Recipes bundle years of expertise into repeatable, shareable solutions.
  4. Events recipe: A simple events website that used to take an experienced developer a day to build can now be created in just a few clicks by non-developers.
  5. Project Browser support for recipes: Users can now browse the Drupal CMS recipes in the Project Browser, and install them in seconds.
  6. First page of documentation: New documentation created specifically for end users. Clear, effective documentation is key to Drupal CMS's success, so we began by writing a single page as a model for the quality and style we aim to achieve.
  7. AI for site building: AI agents capable of creating content types, configuring fields, building Views, forms, and more. These agents will transform how people build and manage websites with Drupal.
  8. Responsible AI policy: To ensure responsible AI development, we've created a Responsible AI policy. I'll share more details in an upcoming blog, but the policy focuses on four key principles: human-in-the-loop, transparency, swappable large language models (LLMs), and clear guidance.
  9. SEO Recipe: Combines and configures all the essential Drupal modules to optimize a Drupal site for search engines.
  10. 14 recipes in development: In addition to the Events and SEO recipes, 12 more are in development with the help of our Drupal Certified Partners. Each Drupal CMS recipe addresses a common marketing use case outlined in our product strategy. We showcased both the process and progress during the Initiative Lead Keynote for some of the tracks. After DrupalCon, we'll begin developing even more recipes and invite additional contributors to join the effort.
  11. AI-assisted content migration: AI will crawl your source website and handle complex tasks like mapping unstructured HTML to structured Drupal content types in your destination site, making migrations faster and easier. This could be a game-changer for website migrations.
  12. Experience Builder: An early preview of a brand new, out-of-the-box tool for content creators and designers, offering layout design, page building, basic theming and content editing tools. This is the first time I've showcased our progress on stage at a DrupalCon.
  13. Future-proof admin UI with React: Our strategy for modernizing Drupal's backend UI with React.
  14. The "Adopt-a-Document" initiative: A strategy and funding model for creating comprehensive documentation for Drupal CMS. If successful, I'm hopeful we can expand this model to other areas of Drupal. For more details, please read the announcement on drupal.org.
  15. Global Documentation Lead: The Drupal Association's commitment to hire a dedicated Documentation Lead, responsible for managing all aspects of Drupal's documentation, beyond just Drupal CMS.

The feedback on my presentation has been incredible, both online and in-person. The room was buzzing with energy and positivity! I highly recommend watching the recording.

Attendees were especially excited about the AI capabilities, Experience Builder, and recipes. I share their enthusiasm as these capabilities are transformative for Drupal.

Many of these features are designed with non-developers in mind. Our goal is to broaden Drupal's reach beyond its traditional user base and reach more people than ever before.

Release schedule

Our launch plan targets Drupal CMS's release on Drupal's upcoming birthday: January 15, 2025. It's also just a couple of weeks after the Drupal 7 End of Life, marking the end of one era and the beginning of another.

The next milestone is DrupalCon Singapore, taking place on December 9–11, 2024, less than 3 months away. We hope to have a release candidate ready by then.

Now that we're back from DrupalCon and have key milestone dates set, there is a lot to coordinate and plan in the coming weeks, so stay tuned for updates.

Call for contribution

Ambitious? Yes. But achievable if we work together. That's why I'm calling on all of you to get involved with Drupal CMS. Whether it's building recipes, enhancing the Experience Builder, creating AI agents, writing tests, improving documentation, or conducting usability testing – there are countless ways to contribute and make a difference. If you're ready to get involved, visit https://drupal.org/starshot to learn how to get started.

Thank you

This effort has involved so many people that I can't name them all, but I want to give a huge thank you to the Drupal CMS Leadership Team, who I've been working with closely every week: Cristina Chumillas (Lullabot), Gábor Hojtsy (Acquia), Lenny Moskalyk (Drupal Association), Pamela Barone (Technocrat), Suzanne Dergacheva (Evolving Web), and Tim Plunkett (Acquia).

A special shoutout goes to the demo team we assembled for my presentation: Adam Hoenich (Acquia), Amber Matz (Drupalize.me), Ash Sullivan (Acquia), Jamie Abrahams (FreelyGive), Jim Birch (Kanopi), Joe Shindelar (Drupalize.me), John Doyle (Digital Polygon), Lauri Timmanee (Acquia), Marcus Johansson (FreelyGive), Martin Anderson-Clutz (Acquia), Matt Glaman (Acquia), Matthew Grasmick (Acquia), Michael Donovan (Acquia), Tiffany Farriss (Palantir.net), and Tim Lehnen (Drupal Association).

I also want to thank the Drupal CMS track leads and contributors for their development work. Additionally, I'd like to recognize the Drupal Core Committers, Drupal Association staff, Drupal Association Board of Directors, and Certified Drupal partners for continued support and leadership. There are so many people and organizations whose contributions deserve recognition that I can't list everyone individually, partly to avoid the risk of overlooking anyone. Please know your efforts are deeply appreciated.

Lastly, thank you to everyone who helped make DrupalCon Barcelona a success. It was excellent!

Categories: FLOSS Project Planets

Dries Buytaert: Announcing the Drupal Starshot leadership team

Planet Drupal - Mon, 2024-09-30 14:09

Although my blog has been quiet, a lot has happened with the Drupal Starshot project since its announcement a month ago. We provided an update in the first Drupal Starshot virtual meeting, which is available as a recording.

Today, I am excited to introduce the newly formed Drupal Starshot leadership team.

Meet the leadership team Product Lead: Dries Buytaert

I will continue to lead the Drupal Starshot project, focusing on defining the product vision and strategy and building the leadership team. In the past few weeks, I have cleared other responsibilities to dedicate a significant amount of time to Drupal Starshot and Drupal Core.

Technical Lead: Tim Plunkett (Acquia)

Tim will oversee technical decisions and facilitate contributions from the community. His role includes building a team of Drupal Starshot Committers, coordinating with Drupal Core Committers, and ensuring that Drupal Starshot remains stable, secure, and easy to upgrade. With 7 years of engineering leadership experience, Tim will help drive technical excellence. Acquia is providing Tim the opportunity to work full-time on the Drupal Starshot project.

User Experience Lead: Cristina Chumillas (Lullabot)

Cristina will define the design and user experience vision for Drupal Starshot. She will engage with contributors to initiate research activities and share the latest UI/UX best practices, ensuring a user-centric approach. She has been leading UX-related Drupal Core initiatives for over 7 years. Lullabot, Cristina's employer, has generously offered her the opportunity to work on Drupal Starshot full-time.

Product Owner: Pamela Barone (Technocrat)

Pam will help ensure alignment and progress among contributors, including defining and prioritizing work. She brings strong communication and organizational skills, having led Drupal projects for more than 12 years.

Contribution Coordinator: Gábor Hojtsy (Acquia)

Gábor will focus on making it easier for individuals and organizations to contribute to Drupal Starshot. With extensive experience in Open Source contribution and community engagement, Gábor will help communicate progress, collaborate with the Drupal Association, and much more. Acquia will provide Gábor with the opportunity to work full-time on the Drupal Starshot project.

Starshot Council (Advisory Board)

To support the leadership team, we are establishing the Starshot Council, an advisory board that will include:

  1. Three end-users (site builders)
  2. Three Certified Drupal Partners
  3. Two Drupal Core Committers (one framework manager and one release manager)
  4. Three Drupal Association board members, one from each of the following Board Working Groups: Innovation, Marketing, and Fundraising
  5. Two staff members from the Drupal Association

The council will meet monthly to ensure the leadership team remains aligned with the broader community and strategic goals. The Drupal Association is leading the effort to gather candidates, and the members of the Starshot Council will be announced in the coming weeks.

More opportunities to get involved

There are many opportunities for others to get involved as committers, designers, developers, content creators, and more.

We have specific tasks that need to be completed, such as finishing Project Browser, Recipes and Automatic Updates. To help people get involved with this work, we have set up several interactive Zoom calls. We'll update you on our progress and give you practical advice on where and how you can contribute.

Beyond the tasks we know need to be completed, there are still many details to define. Our next step is to identify these. My first priority was to establish the leadership team. With that in place, we can focus on product definition and clarifying the unknowns. We'll brief you on our initial ideas and next steps in our next Starshot session this Friday.

Conclusion

The Drupal Starshot project is off to an exciting start with this exceptional leadership team. I am grateful to these talented individuals for stepping up to drive this important project. Their combined expertise and dedication will drive excitement and improvements for the Drupal platform, ultimately benefiting our entire community. Stay tuned for updates as we continue to make strides in this ambitious initiative.

Categories: FLOSS Project Planets

Dries Buytaert: State of Drupal presentation (May 2024)

Planet Drupal - Mon, 2024-09-30 14:09

This week, approximately 1,400 Drupal enthusiasts came together for DrupalCon North America in Portland, Oregon. As a matter of tradition, I delivered my State of Drupal keynote, often referred to as "DriesNote". In case you missed it, you can watch the video or download my slides (385 MB).

This year's keynote was inspired by President John F. Kennedy's famous "Moonshot" speech. After being global leaders, the U.S. had fallen behind in the Space Race. Challenged by the Soviet cosmonaut program, President Kennedy rallied Americans around the ambitious goal of landing on the moon before the decade was out.

Drupal Starshot, a new version of Drupal

Drupal has always been known for its low-code capabilities. However, many competitors now offer similar features, and in some areas, they even surpass what Drupal provides. While Drupal is celebrated for its robustness, it can be challenging for newcomers, especially those with limited technical expertise. So in my keynote, I was excited to introduce Drupal Starshot, our "Moonshot" to make Drupal more accessible and easier to use.

Twenty-three years after Drupal's inception, we are preparing to launch a second official version of Drupal. For the time being, we're calling this second version "Drupal CMS". It will be built on top of Drupal Core and common contributed modules, and available as a separate download alongside Drupal Core. Wireframe of the Drupal.org download page featuring two options: Drupal CMS (Drupal Starshot) and Drupal Core, with Drupal CMS being promoted as the preferred starting point for most.

Drupal Starshot will be designed to have a great out-of-the-box experience. It will enable Ambitious Site Builders without Drupal experience to easily create a new Drupal site and extend it with pre-packaged recipes, all using their browser.

The vision for Drupal Starshot is the outcome of highly productive brainstorming sessions with Drupal Core Committers, the Drupal Association, colleagues at Acquia, various Drupal agencies, and others.

From an implementation standpoint, it will primarily rely on the Project Browser and Recipes initiatives, while also incorporating the Experience Builder initiative. We actually started prototyping Drupal Starshot a few weeks ago and showcased our progress at DrupalCon. Our goal is to launch a first version of Drupal Starshot within 8 months.

At DrupalCon, hundreds of people pledged to get involved, and we had two "super BoFs" with over 50 people each. If you're interested in getting involved with Drupal Starshot, you can register your interest at https://drupal.org/starshot. Additionally, join the conversation in the #Starshot channel on Drupal Slack.

Drupal's brand refresh and marketing strategy

Alongside our technical efforts, we've launched a bold marketing strategy. At DrupalCon Lille, I discussed the need for a fresh marketing approach. Since then, we've made tremendous progress.

I introduced a Drupal brand refresh, which includes updated brand guidelines to ensure a consistent and modern visual identity. This refresh aims to invigorate our brand – making it more vibrant and appealing to newcomers, while still honoring our history and representing our diverse, global community.

I couldn't cover all the details around the brand refresh in my keynote, so I'm expanding on them in this blog post. For a detailed explanation of Drupal's refreshed brand, check out this video by Shawn Perritt: Drupal 2024 brand refresh explained.

Our efforts went beyond just a brand refresh. The Marketing Committee has also guided the community in developing a comprehensive marketing toolkit, which includes messaging guides, pitch decks, and more. All these resources will be available at https://www.drupal.org/marketing.

Let's reach for the stars

As we advance with Drupal Starshot, I recall President Kennedy's famous words:

We choose to go to the moon in this decade and do the other things, not because they are easy, but because they are hard, because that goal will serve to organize and measure the best of our energies and skills, because that challenge is one that we are willing to accept, one we are unwilling to postpone, and one which we intend to win.

Embracing the Drupal Starshot initiative reflects a similar ethos; we're not choosing the easy path, but the one that tests our strength, creativity, and ability to do hard things. The success of Drupal Starshot will be a testament to the incredible collective power of the Drupal community. It's a challenge we are also unwilling to postpone, and intend to win.

Drupal Starshot is more than a technological leap; it represents a shift in how we think, innovate, and collaborate. It's about reaching for the stars and making the Open Web accessible to everyone.

Thank you for being part of this journey. I can't wait to see where it takes us together. The feedback from the last two days at DrupalCon has been overwhelmingly positive. I am more committed than ever and excited to pledge a significant amount of my time to this mission, and to the future of Drupal.

Categories: FLOSS Project Planets

Horizontal Digital Blog: Introducing a useful tool for hospitals on Drupal

Planet Drupal - Mon, 2024-09-30 14:00
Horizontal recently completed building a Drupal 10 site for a major children's hospital. Drupal has long been a favorite choice in the healthcare sector. This post will introduce a module we contributed that we hope will make Drupal an even more appealing choice when hospitals are considering how to present themselves on the Web.
Categories: FLOSS Project Planets

Talking Drupal: Talking Drupal #469 - Drupal’s Popularity & Dev Experience

Planet Drupal - Mon, 2024-09-30 14:00

Today we are talking about Drupal’s Popularity & Dev Experience, what could be better, and things that are great with guest Nathan Dentzau. We’ll also cover Spam Master as our module of the week.

For show notes visit: https://www.talkingDrupal.com/469

Topics
  • Drupal's popularity
  • What can Drupal to enhance popularity and enhance dev experience
  • What is missing in Drupal
  • What could use improvement in Drupal
  • What about recent tooling improvements
  • Drupal CMS (Starshot)
Resources Hosts

Nic Laflin - nLighteneddevelopment.com nicxvan John Picozzi - epam.com johnpicozzi Nate Dentzau - dentzau.com nathandentzau

MOTW Correspondent

Martin Anderson-Clutz - mandclu.com mandclu

  • Brief description:
    • Have you ever wanted to defend your Drupal website from webform spam using a constantly updating list of known bad actors? There’s a module for that.
  • Module name/project name:
  • Brief history
    • How old: created in Mar 2018 by Pedro Alves (pedro-alves)
    • Versions available: 8.x-1.99 and 8.x-2.50, the latter of which support Drupal versions 8 through 11
  • Maintainership
    • Actively maintained
    • Security coverage
    • Documentation on SpamMaster.org
    • Number of open issues: no open issues
  • Usage stats:
    • 449 sites
  • Module features and usage
    • Spam Master is a website protection technology that was originally created back in 2012, and is used across sites based on a variety of technologies, including Wordpress, Drupal, Joomla, and more
    • It uses a variety of techniques to identify and block malicious actors, including “real-time block lists”, honeypot traps, comment analysis, and more
    • By maintaining a list of known bad actors, tracked by IP address and email addresses used, you can also benefit from a “network effect” by being able to identify them based on malicious behavior on any of the thousands of sites using Spam Master
    • The module claims compatibility with a variety of forms, including registration, comments, commerce, and more
    • It includes a variety of reports you can use to understand the amount of spam your site is receiving, and the module can automatically send you an email if it believes your site has reached “Level 3” of spam targeting
    • Spam Master does use licenses on SpamMaster.org, but free licenses are available
Categories: FLOSS Project Planets

Python Morsels: Converting a string to a datetime

Planet Python - Mon, 2024-09-30 13:30

The datetime.strptime class method can parse a date/time string into a datetime object.

Table of contents

  1. Parsing strings into datetime objects ➡️
  2. The strptime formatting directives 📑
  3. Just parse my string please! ⚡
  4. What time is it? It's "string parse time" ⏱️
  5. Converting a datetime into a string ⬅️
  6. strptime parses and strftime formats 🔄
  7. f-strings for datetime formatting ✨
  8. strptime for date and time objects? 🤔
  9. Parse with str-p-time, format with str-f-time 📝

Parsing strings into datetime objects ➡️

Here's an example of the strptime class method in action:

>>> from datetime import datetime >>> datetime.strptime("Jun 1 2005 1:33PM", "%b %d %Y %I:%M%p") datetime.datetime(2005, 6, 1, 13, 33)

Note that strptime is a class method: we're calling it on the datetime class (not an instance of the class).

The strptime formatting directives 📑

Those single letter % codes …

Read the full article: https://www.pythonmorsels.com/converting-a-string-to-a-datetime/
Categories: FLOSS Project Planets

Kushal Das: Breaking out of algorithm

Planet Python - Mon, 2024-09-30 12:16

Many of you already know about my love of photography. I am taking photos for many years, mostly people photos. Portraits in conferences like PyCon or Fedora events. I regularly post photos to wikipedia too, specially for the people/accounts which does not have good quality profile photos. I stopped doing photography as we moved to Sweden, digital camera was old and becoming stable in a new country (details in a different future blog) takes time. But, last year Anwesha bought me a new camera, actually two different cameras. And I started taking photos again.

I started regular photos of the weekly climate protests / demonstrations of Fridays for Future Stockholm group. And then more different street protests and some dance/music events too. I don't have a Facebook account and most people asked me to share over Instagram, so I did that. But, as I covered more & more various protests as a photographer, I noticed my Instagram postos are showing up less in people's feeds. Very less. Was wondering different ways of breaking out of the algorithmic restriction.

Pixelfed is a decentralized, federated ActivityPub based system to share photos. I am going to share photos more on this platform, and hoping people will slowly see more. I started my account yesterday.

You can follow me from any standard ActivityPub system, say your mastodon account itself. Search for @kushal@pixel.kushaldas.photography or https://pixel.kushaldas.photography/kushal in your system and you can then follow it like any other account. If you like the photos, then please share the account (or this blog post) more to your followers and help me to break out of the algorithmic restrictions.

In the technology side, the server runs Debian and containers. On my Fedora system I am super happy to add a few scripts for Gnome Files, they help me to resize the selected images before upload (I will write a blog post tomorrow on this).

Categories: FLOSS Project Planets

The Drop Times: All Aboard the White Horse to Vienna

Planet Drupal - Mon, 2024-09-30 10:51

Dear Readers,

DrupalCon Barcelona 2024 closed its doors this past week, but the conversations and ideas sparked by the event are just beginning to take root. For four days, the Drupal community gathered to share, celebrate, and look ahead to what’s next for the platform. DrupalCon Barcelona 2024 has wrapped up, and now the wait for DrupalCon Vienna 2025 begins!

Reflecting on the progress of Drupal, Dries Buytaert proudly remarked, 

“I’m so proud of how far we have come and how fast. This transformation is an incredible collective effort involving everyone from core committers, Drupal Association staff, volunteers, and agency partners; together, we focused on iterating rapidly and focused more on user experience than ever before. We had some brave out-of-the-box thinking…”

Giannis Kyriazopoulos of E-Sepia reported for The DropTimes on all three days of the conference, offering comprehensive coverage of the event.

The event started with contribution workshops and the opening ceremony, where the Women in Drupal Awards took center stage. Esmeralda Braad-Tijhoff was celebrated for her innovative leadership, earning the Define award, while Pamela Barone took home the Build award for her role in advancing key Drupal solutions. Alla Petrovska received the Scale award for her work in growing businesses using Drupal, demonstrating the platform's transformative impact.

One of the most anticipated moments was the Driesnote, where Dries Buytaert delivered his 40th State of Drupal address. He shared several key updates, as reported by The DropTimes, including the announcement that Drupal CMS 1.0 is set to launch on January 15, 2025. The Experience Builder (XB), built using React, is also set to revolutionize how users interact with Drupal, though it will be completed after the release of Drupal CMS. Dries emphasized Drupal's commitment to AI with the introduction of a Responsible AI Policy and demonstrated AI’s potential for automating tasks such as content creation and migration. He also announced the introduction of Drupal Recipes, which are bundles of reusable solutions aimed at streamlining common processes. Additionally, a partnership with Drupalize.me was unveiled to overhaul Drupal's documentation through the “Adopt a Document” initiative, inviting organizations to sponsor specific sections of the new tutorials.

The second day of the conference featured a moving story shared by Theódór Ragnar Gíslason, who recounted how an accident led him to extensive computer use and, eventually, hacking. He founded the organization "Defend Iceland" to address digital threats by introducing bounty programs accessible to both the public and private sectors. Gíslason also highlighted Drupal's security robustness, noting that after testing nearly 32,000 modules, very few vulnerabilities were found, solidifying Drupal's reputation for security.

In governance news, the Drupal Association Board election results were announced. Alejandro Moreno was elected to the At-Large seat, joining Sachiko Muto, Chairperson of OpenForum Europe, and Stella Power, CEO of Annertech, on the Board of Directors.

Esmeralda Tijhoff reported on the BoF session, ‘Getting started with la_eu: local association site,’ led by Bjorn Brala. The session brought together associations, builders, and potential users to discuss the roadmap of the Drupal La_eu project. Participants agreed on monthly check-ins via Slack, focusing on new features and automated updates for local sites. The session also highlighted the need for creating user stories and a roadmap for further development, with discussions about potentially involving an agency to accelerate progress.

Finally, the location of next year's event was revealed—DrupalCon Europe 2025 will take place in Vienna from October 14-17. The event will feature a new mascot, the White Horse, symbolizing the next chapter of Drupal's journey. Stay tuned for more details as they unfold in the coming months.

On other news, in an article for The DropTimes, Sinduri Guntupalli explores how Lupus Decoupled Drupal merges the power of Drupal's backend with modern frontend frameworks like Vue.js and Nuxt. The platform offers a flexible, API-driven architecture with custom elements, caching optimizations, and diverse deployment options, providing an efficient solution for both developers and content editors working on complex web projects.

Drupal CMS is set to receive significant enhancements to its advanced search functionality as 1xINTERNET announces a community-driven plan based on insights from nearly 100 experienced users. The comprehensive survey revealed an overwhelming preference for the Search API module as the standard search solution, with 87% of participants endorsing it over the Core Search module. Related technologies also received strong support, including Facets (88%), Search API Autocomplete (87%), and Search API Decoupled (78%).

We have also covered Provus Edu from Promet Source and Blökkli Starterkit from Liip. A story on Government Website Usability and another on the exclusion of direct module installs in Drupal 10.4 are a bonus. 

Last but not least, The DropTimes would like to extend our heartfelt gratitude to all those who helped us cover DrupalCon Barcelona 2024. 

We acknowledge that there are more stories to share. However, due to selection constraints, we must pause further exploration for now.

To get timely updates, follow us on LinkedIn, Twitter and Facebook. You can also, join us on Drupal Slack at #thedroptimes.

Thank you, 
Sincerely 
Alka Elizabeth 
Sub-editor, The DropTimes.

Categories: FLOSS Project Planets

Bits from Debian: New Debian Developers and Maintainers (July and August 2024)

Planet Debian - Mon, 2024-09-30 10:30

The following contributors got their Debian Developer accounts in the last two months:

  • Carlos Henrique Lima Melara (charles)
  • Joenio Marques da Costa (joenio)
  • Blair Noctis (ncts)

The following contributors were added as Debian Maintainers in the last two months:

  • Taihsiang Ho

Congratulations!

Categories: FLOSS Project Planets

FSF Events: Free Software Directory meeting on IRC: Friday, October 4, starting at 12:00 EDT (16:00 UTC)

GNU Planet! - Mon, 2024-09-30 10:30
Join the FSF and friends on Friday, October 4 from 12:00 to 15:00 EDT (16:00 to 19:00 UTC) to help improve the Free Software Directory.
Categories: FLOSS Project Planets

Real Python: Python 3.13: Cool New Features for You to Try

Planet Python - Mon, 2024-09-30 10:00

Python 3.13 will be published on October 1, 2024. This new version is a major step forward for the language, although several of the biggest changes are happening under the hood and won’t be immediately visible to you.

In a sense, Python 3.13 is laying the groundwork for some future improvements, especially to the language’s performance. As you read on, you’ll learn more about the background for this and dive into some new features that are fully available now.

In this tutorial, you’ll learn about some of the improvements in the new version, including:

  • Improvements made to the interactive interpreter (REPL)
  • Clearer error messages that can help you fix common mistakes
  • Advancements done in removing the global interpreter lock (GIL) and making Python free-threaded
  • The implementation of an experimental Just-In-Time (JIT) compiler
  • A host of minor upgrades to Python’s static type system

If you want to try any of the examples in this tutorial, then you’ll need to use Python 3.13. The tutorials Python 3 Installation & Setup Guide and How Can You Install a Pre-Release Version of Python? walk you through several options for adding a new version of Python to your system.

In addition to learning more about the new features coming to the language, you’ll also get some advice about what to consider before upgrading to the new version. Click the link below to download code examples demonstrating the new capabilities of Python 3.13:

Get Your Code: Click here to download the free sample code that shows you how to use the new features in Python 3.13.

Take the Quiz: Test your knowledge with our interactive “Python 3.13: Cool New Features for You to Try” quiz. You’ll receive a score upon completion to help you track your learning progress:

Interactive Quiz

Python 3.13: Cool New Features for You to Try

In this quiz, you'll test your understanding of the new features introduced in Python 3.13. By working through this quiz, you'll review the key updates and improvements in this version of Python.

An Improved Interactive Interpreter (REPL)

If you run Python without specifying any script or code, you’ll find yourself inside Python’s interactive interpreter. This interpreter is informally called the REPL because it’s based on a read-evaluate-print loop. The REPL reads your input, evaluates it, and prints the result before looping back and doing the same thing again.

The Python REPL has been around for decades, and it supports an explorative workflow that makes Python a beginner-friendly language. Unfortunately, the interpreter has been missing several features you may have come to expect, including multiline editing and efficient pasting of code.

Note: Experienced Python developers often install a third-party interactive interpreter instead of relying on the built-in REPL. You can learn more about the alternatives in these tutorials:

You can also read more about alternative REPLs in the guide to the standard REPL.

Begin by starting the REPL. You can do this by typing python in your terminal. Depending on your setup, you may have to write py, python3, or even python3.13 instead. One way to recognize that you’re using the new interpreter shipping with Python 3.13 is that the prompt consisting of three chevrons (>>>) is subtly colored:

One improvement is that you can now use REPL-specific commands without calling them with parentheses as if they are Python functions. Here are some of the commands and keyboard shortcuts you can use:

  • exit or quit: Exit the interpreter
  • clear: Clear the screen
  • help or F1: Access the help system
  • F2: Open the history browser
  • F3: Enter paste mode

You can learn more about these options in Python 3.13 Preview: A Modern REPL.

Recalling code you’ve written earlier has been cumbersome in the REPL before Python 3.13, especially if you’re working with a block of code spanning several lines. Traditionally, you’ve had to bring back each line one by one by repeatedly pressing Up. Now in 3.13, you can bring back the whole block of code with a single Up keystroke.

To try this for yourself, enter the following code in your REPL:

Python >>> numbers = range(3, 13) >>> [ ... (number - 3)**3 for number in numbers ... if number % 2 == 1 ... ] [0, 8, 64, 216, 512] Copied!

You’re creating a somewhat complex list comprehension that calculates an offset cube of a range of numbers, but only if the numbers are odd. The important part is that for readability, you split the list comprehension over several lines. Now try hitting that Up key! The interpreter recalls all four lines at once, and you can continue to use your arrow keys to move around inside of the expression.

You can make changes to your code and run it again. To execute the updated code, you need to move your cursor to the end of the last line in the code block. If you press Enter inside the expression, you’ll create a new empty line instead:

The ability to recall and edit multiline statements is a huge time-saver and will make you more efficient when working with the REPL.

Another convenience coming in Python 3.13 is proper support for pasting code. In Python 3.12 and earlier, you’d need to make sure that your code doesn’t contain any blank lines before you could copy and paste it. In the new version, pasted code is treated as a unit and executes just as it would inside a script.

Read the full article at https://realpython.com/python313-new-features/ »

[ 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 ]

Categories: FLOSS Project Planets

PyCharm: What’s the Big Deal About Endpoints for Python Web Development?

Planet Python - Mon, 2024-09-30 09:38

Python has almost 30 years of history doing Python web development. Can you believe it? But 3-tier web projects have gotten really complicated and stressful. You’re busy, everything is all over the place – it’s hard!

But PyCharm is here to help: bring your work together with the Endpoints tool window. I just made a video explainer:

Try the Endpoints tool window!

Here are 3 things from the video that I really like about endpoints. Plus a bonus point at the end.

First…where is everything?

Python web projects can get really big, really fast. If you’re like me, it can be overwhelming – and exhausting. I really need a “helper brain” – one that deeply understands each web framework – to stitch everything together.

PyCharm has long provided icons to navigate from a view to a template, and vice versa. Endpoints adds icons to jump from a view to the route definition, to the parent context, and generate a request to this API.

I like to use my keyboard instead of the mouse. Good news – endpoints is wired into searchable actions.

Want a birds-eye view of all your endpoints? The Endpoints tool window shows all your APIs, with filtering by subapp, type, and framework.

It’s more than a list. Each entry lets you jump to the endpoint and perform operations.

These operations have framework-specific smarts, such as knowing the “parent context” for Django vs. Flask vs. FastAPI.

I like having this tool window when I’m thinking about the whole application. But I like even more how endpoints brings these operations into the editor, to my cursor, helping me focus.

Bring IDE smarts, into APIs

Our IDE has deep insight to connect the dots in Python development. What if we applied that to Python web frameworks?

I can’t remember all my API names. Endpoints gives me autocomplete in the HTTP client and even in JavaScript fetch.

Thanks to endpoints, these routes become symbols. I’m a symbol-first coder, using autocomplete, warnings, and navigation to the max. Now I can apply that with the web framework syntax for APIs.

Discover more powerful web development features Stay in one tool

I’ve always liked the “I” in IDE: integrating my important workflows into a single, consistent experience. Web development can mean bouncing around between lots of windows. What if we could bring that workflow into PyCharm?

We already brought best-in-class frontend development from WebStorm and database development from DataGrip.

Using our HTTP Client, you have a productive, mature workflow for issuing HTTP requests. No need to go to the browser or purchase another tool. With endpoints, HTTP Client gets easier and smarter. For example, issue an HTTP request, directly from the API listing.

As shown above, writing these HTTP requests is easier thanks to autocomplete, as endpoints knows your web framework and its route definitions.

You can also browse the OpenAPI documentation of your endpoint without going to a browser.

The “I” in IDE means it is one team that is bringing these features across web frameworks. When I learn a way of working once, I can use it when I shift to a project with another supported web framework. Same features, same UI.

Innovation in Python web development

Python web development needs fresh new ideas and with it, new thinking in tooling. Endpoints says: “You are going to use multiple frameworks on lots of big projects. Let’s step back, focus on the problem, re-imagine the workflow, and throw a bunch of powerful IDE machinery at it.”

Just this one tool window has so much value in it: a listing of your API, with info about HTTP method, and right-click available for each. Then, tabs for the common operations, keeping you in the IDE and in the flow.

So that’s endpoints, a vision from PyCharm to make API development joyful and productive. Give it a try and let us know what you think.

Try the Endpoints tool window!
Categories: FLOSS Project Planets

Russell Coker: Links September 2024

Planet Debian - Mon, 2024-09-30 09:07

CNA Insider has an insightful documentary series about Chinese illegal immigrants to the US [1]. They should migrate to Australia, easier to get in and a better place to live.

Linus tech tips has an informative video about using Windows on Snapdragon ARM64 laptops. [2]. Maybe I should get one for running Linux. They are quite expensive on ebay now which is presumably a good sign about their quality.

A web site for comparing monospace fonts so you can find the one that best suits yuor coding [3]. Roboto works well for me.

Noema has an interesting article about nationhood comparing the attitudes towards European colonisation in Africa and Russian colonisation in Ukraine [4].

Insightful lecture by Grace Hopper (then Captain) about the future of computers [5]. The second part is linked from the first part. Published by the NSA.

Tony Hoare gave an insightful lecture titled “The Billion Dollar Mistake” about his work on designing the Algol language in 1965 [6]. The lecture was recorded in about 2005. But it still has a lot of relevance to computer science.

Jascha Sohl-Dickstein wrote an interesting blog post about Goodhart’s law, Machine Learning models, and how to try and mitigate problems in society [7].

Cory Doctorow wrote an insightful article on the Marshmallow test and long term thinking [8]. The rich fail this test badly.

Insightful interview with Justice Breyer about interpreting the US constitution and the problems with “textualism” and “originalism” [9].

Cory Doctorow wrote an informative article about Google’s practices of deleting Gmail accounts for no apparent reason and denying people access to their data [10]. We need more laws like the Digital Markets Act in the EU and we need them to apply to eBay/PayPal and AWS/Amazon.

Related posts:

  1. Links September 2020 MD5 cracker, find plain text that matches MD5 hash [1]....
  2. Links August 2024 Bruce Schneier and Kim Córdova wrote an insightful article about...
  3. Links March 2024 Bruce Schneier wrote an interesting blog post about his workshop...
Categories: FLOSS Project Planets

CodeLift: From budget-friendly to full redesign: 6 migration paths for Drupal 7 end-of-life

Planet Drupal - Mon, 2024-09-30 06:30
Discover 6 options to handle Drupal 7's end-of-life in 2025. From staying on Drupal 7 short-term to upgrading to Drupal 11 or migrating to other platforms. Find the solution that fits your business, budget, and security needs.
Categories: FLOSS Project Planets

Droptica: Curious about Drupal 7 to 11 migration costs? Collect all the info for estimation in 5 minutes

Planet Drupal - Mon, 2024-09-30 05:48

Migrating from Drupal 7 to the latest version, like Drupal 11, might seem like a big challenge, but it doesn’t have to be. One of the most common obstacles is figuring out how much it will cost. You want to know the price, but you don’t want to give full access to your site just to get an estimate. The good news? You can collect all the necessary information for an accurate project estimate in just 5 minutes.

Categories: FLOSS Project Planets

The Drop Times: Non-Code Contributions Shine at DrupalCon Barcelona 2024

Planet Drupal - Mon, 2024-09-30 04:26
Reporting from DrupalCon Barcelona, Esmeralda Tijhoff highlights the growing focus on non-code contributions. From event organizing to marketing, the sessions underscored the crucial role non-coders play in shaping Drupal's future. Find out how you can contribute to the community without writing a single line of code!
Categories: FLOSS Project Planets

Python Bytes: #403 A machine learning algorithm walks into a bar…

Planet Python - Mon, 2024-09-30 04:00
<strong>Topics covered in this episode:</strong><br> <ul> <li><strong><a href="https://simonwillison.net/2024/Sep/8/uv-under-discussion-on-mastodon/?featured_on=pythonbytes">uv under discussion on Mastodon</a></strong></li> <li><strong><a href="https://github.com/drivendataorg/erdantic?featured_on=pythonbytes">erdantic: Entity Relationship Diagrams</a></strong></li> <li><strong>Extra, Extra, Extra</strong></li> <li><strong>Django Extra, Extra, Extra</strong></li> <li><strong>Extras</strong></li> <li><strong>Joke</strong></li> </ul><a href='https://www.youtube.com/watch?v=nqVZVvXcOps' style='font-weight: bold;'data-umami-event="Livestream-Past" data-umami-event-episode="403">Watch on YouTube</a><br> <p><strong>About the show</strong></p> <p>Sponsored by us! Support our work through:</p> <ul> <li>Our <a href="https://training.talkpython.fm/?featured_on=pythonbytes"><strong>courses at Talk Python Training</strong></a></li> <li><a href="https://courses.pythontest.com/p/the-complete-pytest-course?featured_on=pythonbytes"><strong>The Complete pytest Course</strong></a></li> <li><a href="https://www.patreon.com/pythonbytes"><strong>Patreon Supporters</strong></a></li> </ul> <p><strong>Connect with the hosts</strong></p> <ul> <li>Michael: <a href="https://fosstodon.org/@mkennedy"><strong>@mkennedy@fosstodon.org</strong></a></li> <li>Brian: <a href="https://fosstodon.org/@brianokken"><strong>@brianokken@fosstodon.org</strong></a></li> <li>Show: <a href="https://fosstodon.org/@pythonbytes"><strong>@pythonbytes@fosstodon.org</strong></a></li> </ul> <p>Join us on YouTube at <a href="https://pythonbytes.fm/stream/live"><strong>pythonbytes.fm/live</strong></a> to be part of the audience. Usually <strong>Monday</strong> at 10am PT. Older video versions available there too.</p> <p>Finally, if you want an artisanal, hand-crafted digest of every week of the show notes in email form? Add your name and email to <a href="https://pythonbytes.fm/friends-of-the-show">our friends of the show list</a>, we'll never share it.</p> <p><strong>Michael #1:</strong> <a href="https://simonwillison.net/2024/Sep/8/uv-under-discussion-on-mastodon/?featured_on=pythonbytes">uv under discussion on Mastodon</a></p> <ul> <li>It’s interesting that uv is slightly controversial</li> <li><p><a href="https://cloudisland.nz/@freakboy3742/113093889194737339?featured_on=pythonbytes">Russell</a>:</p></li> <li><p>As enthusiastic as I am about the direction uv is going, I <em>haven't</em> adopted them anywhere - because I want very much to understand Astral’s intended business model before I hook my wagon to their tools.</p></li> <li><p><a href="https://mastodon.social/@hynek/113094437303343866?featured_on=pythonbytes">Hynek</a>:</p></li> <li><p>As much as I hate VC, [...] FOSS projects flame out all the time too. … To me uv looks like a genius sting to trick VCs into paying to fix packaging. We’ll be better off either way.</p></li> <li><p><a href="https://mastodon.social/@glyph/113094489295782200?featured_on=pythonbytes">Glyph</a>:</p></li> <li><p>Rust is more expensive and difficult to maintain, not to mention "non-native" to the average customer here. … it can burn out <em>all</em> the other projects in the ecosystem simultaneously, creating a risk of monoculture</p></li> <li><p><a href="https://mastodon.social/@hynek/113094547139925962?featured_on=pythonbytes">Hynek on Rust</a>:</p></li> <li><p>I don’t think y’all quite grok what uv makes so special due to your seniority. The speed is really cool, but the reason Rust is elemental is that it’s one compiled blob that can be used to bootstrap and maintain a Python development.</p></li> <li><p><a href="https://social.coop/@chrisjrn/113094511860843571?featured_on=pythonbytes">Christopher Neugebauer</a>:</p></li> <li><p>Just dropping in here to say that corporate capture of the Python ecosystem is the #1 keeps-me-up-at-night subject in my community work, so I watch Astral with interest, even if I'm not yet too worried.</p></li> <li><p><a href="https://lucumr.pocoo.org/2024/8/21/harvest-season/?featured_on=pythonbytes">Armin Ronacher</a></p></li> <li><p>What uv is doing, even in the worst possible future this is a very forkable and maintainable thing.</p></li> <li><p>Finally, see the comment at the end by Charlie Marsh</p></li> </ul> <p><strong>Brian #2:</strong> <a href="https://github.com/drivendataorg/erdantic?featured_on=pythonbytes">erdantic: Entity Relationship Diagrams</a></p> <ul> <li>“erdantic is a simple tool for drawing entity relationship diagrams (ERDs) for Python data model classes. Diagrams are rendered using the venerable Graphviz library.”</li> <li>Supported data modeling frameworks are: <ul> <li>Pydantic V2</li> <li>Pydantic V1 legacy</li> <li>attrs</li> <li>dataclasses </li> </ul></li> </ul> <p><strong>Michael #3:</strong> <strong>Extra, Extra, Extra</strong></p> <ul> <li>Added <a href="https://search.pythonbytes.fm/api/browser">Python Bytes Search as a custom search engine</a>.</li> <li><a href="https://mkennedy.codes/posts/passkey-great-but-careful-of-the-lock-in/?featured_on=pythonbytes">Along came passkeys. A cool idea that quickly turned evil.</a></li> <li>Follow up from post and my conversation last week: <a href="https://github.com/dani-garcia/vaultwarden?featured_on=pythonbytes">vaultwarden</a> (via <a href="https://x.com/mkennedy/status/1838974519463334163?featured_on=pythonbytes">Pablo</a>)</li> <li><a href="https://github.com/astral-sh/uv/releases/tag/0.4.16?featured_on=pythonbytes">uv publish</a></li> <li>Trying the <a href="https://help.vivaldi.com/desktop/tabs/tab-display/?featured_on=pythonbytes">tabs on bottom lifestyle</a> inspired by Arc</li> <li>Adding <a href="https://search.pythonbytes.fm/api/browser">Python Bytes</a> (and Talk Python) <a href="https://mkennedy.codes/posts/you-should-use-custom-search-engines-way-more/?featured_on=pythonbytes">as custom search engines</a>.</li> <li><a href="https://www.python.org/events/python-events/1507/?featured_on=pythonbytes">PyCon 2025 dates</a>: From 14 May through 22 May, 2025</li> </ul> <p><strong>Brian #4:</strong> Django Extra, Extra, Extra</p> <ul> <li><a href="https://blog.jetbrains.com/pycharm/2024/09/django-project-ideas/?featured_on=pythonbytes">Django Project Ideas</a> <ul> <li>Evgenia Verbina</li> <li>Project ideas with list of tech stack stuff you’ll learn and/or work on with the project</li> <li>Ex: Recipe organizer <ul> <li>tech stack: Django templates, Django ORM, Optional JavaScript</li> <li>“Familiarize yourself with Django’s ORM (object-relational mapper) and database support by building an app to keep track of your favorite recipes. Add a web-based frontend with options to filter recipes by category, ingredients, and user ratings so you can easily browse for inspiration.”</li> </ul></li> </ul></li> <li><a href="https://djangotv.com?featured_on=pythonbytes">DjangoTV</a> <ul> <li>Jeff Triplett</li> <li>Django conference videos and tutorials.</li> </ul></li> <li><a href="https://github.com/django-commons?featured_on=pythonbytes">Django Commons</a> <ul> <li>Heard about from Lacey Henschel</li> <li>“Django Commons is an organization dedicated to supporting the community's efforts to maintain packages. It seeks to improve the maintenance experience for all contributors; reducing the barrier to entry for new contributors and reducing overhead for existing maintainers.”</li> </ul></li> <li><a href="https://docs.djangoproject.com/en/5.1/releases/5.0/#simplified-templates-for-form-field-rendering">Django 5 has simplified templates for better form field rendering</a></li> <li>But if you want a completely different take on forms, maybe try <a href="https://docs.iommi.rocks/en/latest/forms.html?featured_on=pythonbytes">iommi forms</a> <ul> <li>They wrote about it on <a href="https://kodare.net/2024/09/11/why-we-wrote-a-new-form-library-for-django.html?featured_on=pythonbytes">Why we wrote a new form library for Django</a></li> </ul></li> <li><a href="https://adamj.eu/tech/2024/09/26/django-introducing-djade/?featured_on=pythonbytes">Djade: a Django template formatter</a> <ul> <li>Adam Johnson</li> <li>Like black or ruff, but for Django templates.</li> </ul></li> </ul> <p><strong>Extras</strong> </p> <p>Brian:</p> <ul> <li><a href="https://liamwhite.dev/posts/0035-hostile-source-environment?featured_on=pythonbytes"><strong>The Open Source Project Maintainer's Guide</strong></a> <ul> <li>Suggested by Rafael Weingartner</li> </ul></li> </ul> <p><strong>Joke:</strong> <a href="https://devhumor.com/media/a-machine-learning-algorithm-walks-into-a-bar?featured_on=pythonbytes">A Machine Learning algorithm walks into a bar…</a></p>
Categories: FLOSS Project Planets

eGenix.com: Python Meeting Düsseldorf - 2024-10-02

Planet Python - Mon, 2024-09-30 04:00

The following text is in German, since we're announcing a regional user group meeting in Düsseldorf, Germany.

Ankündigung

Das nächste Python Meeting Düsseldorf findet an folgendem Termin statt:

02.10.2024, 18:00 Uhr
Raum 1, 2.OG im Bürgerhaus Stadtteilzentrum Bilk
Düsseldorfer Arcaden, Bachstr. 145, 40217 Düsseldorf


Programm Bereits angemeldete Vorträge
  • Detlef Lannert:
    pyinfra als Alternative zu Ansible
  • Marc-André Lemburg:
    Rapid web app development with Panel
  • Detlef Lannert:
    Low-cost-Objekte als Alternativen zu Dictionaries?
  • Charlie Clark:
    Editieren von ZIP Dateien mit Python
Weitere Vorträge können gerne noch angemeldet werden. Bei Interesse, bitte unter info@pyddf.de melden. Startzeit und Ort

Wir treffen uns um 18:00 Uhr im Bürgerhaus in den Düsseldorfer Arcaden.

Das Bürgerhaus teilt sich den Eingang mit dem Schwimmbad und befindet sich an der Seite der Tiefgarageneinfahrt der Düsseldorfer Arcaden.

Über dem Eingang steht ein großes "Schwimm’ in Bilk" Logo. Hinter der Tür direkt links zu den zwei Aufzügen, dann in den 2. Stock hochfahren. Der Eingang zum Raum 1 liegt direkt links, wenn man aus dem Aufzug kommt.

>>> Eingang in Google Street View

⚠️ Wichtig: Bitte nur dann anmelden, wenn ihr absolut sicher seid, dass ihr auch kommt. Angesichts der begrenzten Anzahl Plätze, haben wir kein Verständnis für kurzfristige Absagen oder No-Shows. Einleitung

Das Python Meeting Düsseldorf ist eine regelmäßige Veranstaltung in Düsseldorf, die sich an Python Begeisterte aus der Region wendet.

Einen guten Überblick über die Vorträge bietet unser PyDDF YouTube-Kanal, auf dem wir Videos der Vorträge nach den Meetings veröffentlichen.

Veranstaltet wird das Meeting von der eGenix.com GmbH, Langenfeld, in Zusammenarbeit mit Clark Consulting & Research, Düsseldorf:

Format

Das Python Meeting Düsseldorf nutzt eine Mischung aus (Lightning) Talks und offener Diskussion.

Vorträge können vorher angemeldet werden, oder auch spontan während des Treffens eingebracht werden. Ein Beamer mit HDMI und FullHD Auflösung steht zur Verfügung.

(Lightning) Talk Anmeldung bitte formlos per EMail an info@pyddf.de

Kostenbeteiligung

Das Python Meeting Düsseldorf wird von Python Nutzern für Python Nutzer veranstaltet.

Da Tagungsraum, Beamer, Internet und Getränke Kosten produzieren, bitten wir die Teilnehmer um einen Beitrag in Höhe von EUR 10,00 inkl. 19% Mwst. Schüler und Studenten zahlen EUR 5,00 inkl. 19% Mwst.

Wir möchten alle Teilnehmer bitten, den Betrag in bar mitzubringen.

Anmeldung

Da wir nur 25 Personen in dem angemieteten Raum empfangen können, möchten wir bitten, sich vorher anzumelden.

Meeting Anmeldung bitte per Meetup

Weitere Informationen

Weitere Informationen finden Sie auf der Webseite des Meetings:

              https://pyddf.de/

Viel Spaß !

Marc-Andre Lemburg, eGenix.com

Categories: FLOSS Project Planets

Zato Blog: Enterprise Python: Integrating with Salesforce

Planet Python - Mon, 2024-09-30 03:43
Enterprise Python: Integrating with Salesforce 2024-09-30, by Dariusz Suchojad Overview

Salesforce connections are one of the newest additions to Zato 3.2, allowing you to look up and manage Salesforce records and other business data. To showcase it, the article will create a sample Salesforce marketing campaign in a way that does not require the usage of anything else except for basic REST APIs combined with plain Python objects, such as dicts.

If you have not done it already, you can download Zato here.

Basic workflow

The scope of our works will be:

  • Creating Salesforce credentials for our integration project
  • Defining a Salesforce connection in Zato
  • Authoring a service that will map input data to the format that Salesforce expects
  • Creating a Zato REST channel that will be invoked through curl during tests
  • Testing the integration
Creating Salesforce credentials

To be able to create as connection to Salesforce in the next step, we need a few credentials. There is a full article about how to prepare them and this section is the gist of it.

In runtime, based on this information, Zato will obtain the necessary authentication and authorization tokens itself, which means that you will only focus on the business side of the integrations, not on the low-level aspects of it.

The process of obtaining the credentials needs to be coordinated with an administrator of your organization. To assist in that, the screenshots below explain where to find them.

The credentials are:

  • Username and password
  • Consumer key
  • Consumer secret

The username and password are simply the same credentials that can be used to log in to Salesforce:

Consumer key and secret are properties of a connected app - this is a term that Salesforce uses for API clients that invoke its services. If you are already an experienced Salesforce REST API user, you may know the key and secret under their aliases of "client_id" and "client_secret" - these are the same objects.

Note that when a connected app already exists and you would like to retrieve the key and secret, they will be available under the "View" menu option for the app, not under "Edit" or "Manage".

Defining a Salesforce connection in Zato

With all the credentials in place, we can create a new Salesforce connection in Zato Dashboard, as below.

Authoring an integration service in Python

Above, we created a connection definition that lets Zato obtain session tokens and establish connections to Salesforce. Now, we can create an API service that will make use of such connections.

In the example below, we are using the POST REST method to invoke an endpoint that creates new Salesforce campaigns. In your own integrations, you can invoke any other Salesforce endpoint, using any REST method as needed, by following the same pattern, which is, create a model with input fields, build a Python dict for the request to Salesforce, invoke it and map all the required from the response from Salesforce to that which your own service returns to its own callers.

Note that we use a datamodel-based SimpleIO definition for the service. Among other things, although we are not going to do it here, this would let us offer definitions for this and other services.

# -*- coding: utf-8 -*- # stdlib from dataclasses import dataclass # Zato from zato.server.service import Model, Service # ########################################################################### if 0: from zato.server.connection.salesforce import SalesforceClient # ########################################################################### @dataclass(init=False) class CreateCampaignRequest(Model): name: str segment: str # ########################################################################### @dataclass(init=False) class CreateCampaignResponse(Model): campaign_id: str # ########################################################################### class CreateCampaign(Service): class SimpleIO: input = CreateCampaignRequest output = CreateCampaignResponse def handle(self): # This is our input data input = self.request.input # type: CreateCampaignRequest # Salesforce REST API endpoint to invoke - note that Zato # will add a prefix to it containing the API version. path = '/sobjects/Campaign/' # Build the request to Salesforce based on what we received request = { 'Name': input.name, 'Segment__c': input.segment, } # .. create a reference to our connection definition .. salesforce = self.cloud.salesforce['My Salesforce Connection'] # .. obtain a client to Salesforce .. with salesforce.conn.client() as client: # type: SalesforceClient # .. create the campaign now .. sf_response = client.post(path, request) # .. build our response object .. response = CreateCampaignResponse() response.campaign_id = sf_response['id'] # .. and return its ID to our caller. self.response.payload = response # ########################################################################### Creating a REST channel

Note that we assign HTTP Basic Auth credentials to the channel. In this manner, it is possible for clients of this REST channel to authenticate using a method that they are already familiar which simplifies everyone's work - it is Zato that deals with how to authenticate against Salesforce whereas your API clients use the ubiquitous HTTP Basic Auth method.

Testing

The last step is to invoke the newly created channel:

$ curl http://api:password@localhost:17010/api/campaign/create -d '{"name":"Hello", "segment":"123"}' {"campaign_id":"8901Z3VHXDTebEJWs"} $

That is everything - you have just integrated with Salesforce and exposed a REST channel for external applications to integrate with!

More resources

➤ Python API integration tutorial
What is an integration platform?
Python Integration platform as a Service (iPaaS)
What is an Enterprise Service Bus (ESB)? What is SOA?

More blog posts
Categories: FLOSS Project Planets

Quansight Labs Blog: Numpy QuadDType: Quadruple Precision for Everyone

Planet Python - Sun, 2024-09-29 20:00
Introducing the new data-type for Numpy providing cross-platform support of quadruple precision.
Categories: FLOSS Project Planets

Pages