FLOSS Project Planets
Drupal's recent problem with the Twitter module provides a crucial lesson for all of us: a proactive, vigilant approach to security -- i.e. practices such as continuous monitoring, which we'll explore a little in this post -- are becoming a necessity in an online environment saturated with black hat hackers.The Twitter Module Flaw
In Drupal versions 6.x and 7.x, the Twitter module had some slight security issues, to say the least. It did not check for access in the proper way, which meant that any authenticated Twitter user could sneak into your Twitter account, post a tweet, change your account settings, or even delete your account.
Drupal issued a request to users to update their Twitter module to the latest version to fix the security bug.Continuous Monitoring
The term "continuous monitoring" has become popular. And it means exactly what it sounds like: companies enact policies and procedures that enforce 24/7 close monitoring of their infrastructure. Information-Age.com defines it this way:
The main role of continuous monitoring is to keep your security team constantly aware of newly detected vulnerabilities, weaknesses, missing patches and configuration flaws that appear to be exploitable.
Part of the reason for the urgency is the rise of "zero-day exploits," which are vulnerabilities in software that no one previously knew about and for which a patch does not exist.The Pressure is On: In Competition with Black Hats
As Information Age points out in their article linked above, black hat hackers have developed their own continuous monitoring capabilities. In some cases, they will even patch the vulnerabilities of a website -- without the owner's knowledge -- after they've exploited the weakness.
Because these cyber gangs, groups of black hats who function like well-coordinated attack squadrons, don't want the competition (other black hat cyber gangs) also exploiting your site's weakness. Black hat hackers will claim your site as their turf and actually use continuous monitoring to protect it against other black hats. (After, of course, they've exploited your site for their own purposes.)Drupal Security Team Warns About the Speed of Black Hats
Well-organized black hat cyber gangs are so efficient, and in many cases so well-equipped with their own in-house continuous monitoring technology, that they will detect vulnerabilities before anyone else does -- even before Drupal.
When a weakness in Drupal 7 was detected, this announcement from Drupal demonstrates how fast the Black Hats can exploit a vulnerability:
Automated attacks began compromising Drupal 7 websites that were not patched or updated to Drupal 7.32 within hours of the announcement of SA-CORE-2014-005 - Drupal core - SQL injection. You should proceed under the assumption that every Drupal 7 website was compromised unless updated or patched before Oct 15th, 11pm UTC, that is 7 hours after the announcement.Continuous Monitoring Isn't Easy, But It's Becoming a Necessity
The question is simple: do you want black hat hackers or your company's IT/Security team to do your continuous monitoring for you? If black hat hackers rely on continuous monitoring to be successful, then companies and website owners must respond in kind and fight fire with fire.
That doesn't mean it's easy, of course. It requires systemic transformation. As quoted by Information Age, Jan Schreuder of PwC sympathized with the challenges that continuous monitoring creates: "...[it] represents a significant change to the way IT departments operate, and to be successful it requires significant commitment through leadership support, enforcement, and system owner responsibility and accountability."
Thankfully, Drupal responds quickly to security crises, but there's only so much it can do. Each user has a responsibility as well, and continuous monitoring has become an unavoidable necessity for security vigilance.
Contact us for more information on how we can help monitor and protect your Drupal website against security vulnerabilities.
Last week’s DrupalCon was an outstanding event that saw over 2,000 people from the community come together in Barcelona to attend sessions, sprints, and socialise.
We sent 74 of our own team members to the conference (over a third of our group) and we asked them about their experiences to offer a vision of DrupalCon from Wunderkraut’s perspective. Here you will find out what happened, what you should catch up on, and what we recommend to prepare you for next year’s conference in Dublin.Pre-Conference Opening - Sunday 20th September
Before the conference officially opened for registration, members of our team met with other community developers to get sprinting at Makers of Barcelona - a beautiful and quirky co-working space 25 minutes from the conference centre.
With D8 close and everyone keen to hear what the first days of the conference had to offer in the way of Drupal 8 news, everyone was in high spirits to collaborate and code face-to-face at the extended sprints.Registration Day - Monday 21st September
Barcelona International Convention Centre opened its doors for attendees to register. Whilst contributors and coders headed to the Contribution Lounge, leaders of Drupal businesses came together at the Business Summit to share experiences, learn new things, and make acquaintances.
Exhibitors and organisers were also buzzing around the exhibitor hall to prepare their stands and catering areas for the evening’s opening reception, giving all attendees a great opportunity to network and discuss the days ahead.
Watch our roundup of Monday at DrupalCon:
The day opened with Dries’ keynote which gave people a status update on Drupal 8’s release, an overview of the state of the CMS market, and an introduction to new techniques for contributing to Drupal. Overall this was well received and the first deadline of October 7th 2015 was set for D8’s Release Candidate.
Our team then went on to enjoy a variety of tracks and sessions throughout the day. Here’s what Wunderkraut recommends watching from the first day:
Highly recommended by our team
Recommended by our consultants
Design to support strategic objectives (hosted by our own Roy Scholten)
Recommended by our back-end developers
Following a day full of fantastic sessions, the Wunderkraut team headed over to Barcelona’s beaches to have a WunderParty. This gave our international group a great opportunity to socialise and network with one another over good food and a few drinks, which our friends from the conference also attended.
Watch our roundup of Tuesday at DrupalCon
The second day of the conference kicked off with an inspirational keynote by Nathalie Nahai on web psychology. This lead nicely into the second day of sessions, sprints and BoFs. Here is what our attendees recommend:
Recommended by our back-end developers
Recommended by our consultants
No therapist needed: clients, teams and no tears (hosted by our own Alice Richmond)
Recommended by our care team
Recommended by our operations team
Recommended by our front-end team
In the evening a number of our team members headed into the “old town” area of Barcelona to enjoy the local tapas, sangria, and local culture. All of the local people were out and celebrating La Mercè Festival which involved fireworks, parties, and fun.
Watch our roundup of Wednesday at DrupalCon
Thursday was the final day of sessions and by this point a lot of new information, local culture, and sangria had been consumed by conference attendees who stayed since the start. It was hard to find one of our bean bags free at the conference that didn’t have an attendee catching a nap on it!
The final day of sessions, however, was great and they were started by two excellent community keynotes by David Rozas and Mike Bell on mental health in the open source world and the phenomenon of contributing to a community. Both talks were received very well by our team and the community.
Here’s what else Wunderkraut recommends from the day:
Recommended by our back-end developers
Recommended by our consultants
Making Drupal a better out-of-the-box product: Report on usability testing results and how we can make 8.1.x+ shine (joint hosted by our own Lewis Nyman)
All of the conference’s sessions ended with Holly Ross’ Closing Session that provided some cool community and conference stats, in addition to the location of next year’s Drupalcon - Ireland!
To celebrate a successful DrupalCon, most of the attendees headed down to the Trivia Night where they had an opportunity to win some fun prizes, including these sought after goodies:September 24, 2015 Sprinting for Beginners and All - Friday 25th September
Friday was a day for first-time sprinters to meet the mentors and get started with contributing to Drupal. It began with a workshop on downloading the tools required to contribute and lead to people being assigned to different contribution tasks and issues, depending on their different skills.
Later on in the afternoon Angie Byron (webchick) committed a selection of contributions that newcomers made to Drupal 8 whilst they were at the conference and everyone celebrated the new additions together.Extended Sprints - Saturday 26th - Sunday 27th September
The rest of the weekend was spent sprinting by contributors back at the creative co-working space, Makers of Barcelona. Overall, a nice way to finish of the week in beautiful Barcelona.Tips for future DrupalCon Goers
With over 70 odd of our team attending this year’s DrupalCon we’d like to leave a few bits of advice for future participants who may be completely new to the conference to make their experiences as enjoyable as ours.Marc Galang, Software Developer
“Attend the prenote! Also if you're joining the sprints make sure you have a running environment before you leave your country/office because sometimes the internet could be really slow that it takes A LOT of time to download stuff that is needed for the sprints.Bert Boerland, Sales Manager
Sleep as much as you can upfront. You should also add the checkmark of being at the con in your Drupal.org profile.Mikael Kundert, Software Developer
After you start to find sessions that aren’t that useful for you, move on to participate in BoFs and sprints!Bernt Andreas Drange, Software Developer
Remember your business cards and cash for coffee!Jenny Kannelsuo, Service Manager
Plan ahead and check the sessions beforehand.Randal Whitmore, Marketing Assistant
Embrace as much as you can, especially if this is your first experience with the community. Communicating with people in person and getting to understand those behind Drupal is invaluable.
This EAP build consolidates many fixes and improvements for recently added features, as well as a couple of new features that we hope you’ll enjoy.
The most notable brand-new feature in this build is the Conda Integration, considered to be a big improvement for scientific Python developers. Conda is an open source package management system and environment management system for installing multiple versions of software packages and their dependencies and switching easily between them. The Conda Integration implemented in PyCharm is primarily designed for managing Anaconda installations. You can create new Conda environment the same way as usual python virtualenvs right from the Python Interpreters dialog in Settings | Project | Project Interpreter:
PyCharm is also able to recognize existing Conda environments. You can check which ones are automatically discovered by using the Project Interpreter drop-down list, or by adding Conda environments with the “Add Local” option. PyCharm uses Conda’s package manager and its environment management functionality.
Another addition in this build is that we now bundle the EditorConfig plugin. EditorConfig helps developers define and maintain consistent coding styles between different editors and IDEs. Please read more about EditorConfig on its official website.
This build also includes fixes for Google and Numpy docstrings support, fixes for Django support, and a lot of web and platform improvements including a few new platform features. For the detailed list of changes and improvements, please check the Release Notes.
You can download the build or use the patch-based upgrade to upgrade from within the IDE (from previous PyCharm 5 EAP builds only) without a full re-installation. Just make sure you’ve selected the EAP channel in update settings.
Develop with pleasure!
JetBrains PyCharm Team
The FSF and Conservancy each lead worldwide efforts to ensure compliance with the GPL family of licenses. The principles they follow are designed to make copyleft license enforcement first and foremost serve the goal of protecting user freedom, which includes assisting companies to correctly distribute free software. This means carefully verifying violation reports, approaching companies privately rather than publicly shaming them, treating legal action as a last resort, and never prioritizing financial gain over defending the freedom of users.
"GPL enforcement is mostly an educational process working with people who have made honest mistakes, but it must be undertaken with care and thoughtfulness. Our goal is not to punish or censure violators, but to help them come into compliance. Abiding by these principles aids our work in bringing about that outcome," said FSF's licensing and compliance manager, Joshua Gay.
The FSF does license enforcement for programs that are part of the GNU Project, when their copyright is assigned to the FSF, and actively encourages developers to apply for their programs to become part of GNU. License violations can be reported by email following the instructions at http://www.gnu.org/licenses/gpl-violation.html.
"These principles have guided our efforts in defending the rights of computer users since at least 2001. We wanted to collect them and write them down in one place both to bust some myths about our GNU GPL enforcement work, and to help other individuals and organizations get started with their own processes," said FSF's executive director, John Sullivan.
Conservancy's executive director Karen Sandler will be joining FSF licensing & compliance manager Joshua Gay and FSF copyright and licensing associate Donald R. Robertson, III, on Saturday, October 3rd for the User Freedom Summit in Cambridge, Massachusetts, where they will be running a workshop session titled Community Licensing Education & Outreach.About the Free Software Foundation
The Free Software Foundation, founded in 1985, is dedicated to promoting computer users' right to use, study, copy, modify, and redistribute computer programs. The FSF promotes the development and use of free (as in freedom) software -- particularly the GNU operating system and its GNU/Linux variants -- and free documentation for free software. The FSF also helps to spread awareness of the ethical and political issues of freedom in the use of software, and its Web sites, located at fsf.org and gnu.org, are an important source of information about GNU/Linux. Donations to support the FSF's work can be made at https://donate.fsf.org. Its headquarters are in Boston, MA, USA. More information about the FSF, as well as important information for journalists and publishers, is at https://www.fsf.org/press.About the GNU Operating System and Linux
Richard Stallman announced in September 1983 the plan to develop a free software Unix-like operating system called GNU. GNU is the only operating system developed specifically for the sake of users' freedom. See https://www.gnu.org/gnu/the-gnu-project.html. In 1992, the essential components of GNU were complete, except for one, the kernel. When in 1992 the kernel Linux was re-released under the GNU GPL, making it free software, the combination of GNU and Linux formed a complete free operating system, which made it possible for the first time to run a PC without non-free software. This combination is the GNU/Linux system. For more explanation, see https://www.gnu.org/gnu/gnu-linux-faq.html.Media Contacts
Licensing & Compliance Manager
Free Software Foundation
+1 (617) 542 5942
In this article I write about Joe – Python tool that makes creating .gitignore files much easier.Problem
Every time I create new project, there comes time, when I want to put it under git control and do the first commit:$ git init Initialized empty Git repository in </path/to/directory> $ git status # good practice - check before commit # (...) Untracked files: (use "git add <file>..." to include in what will be committed) __init__.pyc __pycache__/ openstack.pyc test.py
In this moment I realize that I have forgot to add .gitignore. And to be honest, hate to do this. What should I place there? Should I put this __pycache__ folder too?But have no fear Joe is here.
Joe will generate .gitignore for you:$ joe python > .gitignore $ cat .gitignore ### joe made this: https://goel.io/joe #####=== Python ===##### # Byte-compiled / optimized / DLL files __pycache__ \*.py[cod] # C extensions *.so # Distribution / packaging .Python env/ build/ develop-eggs/ dist/ downloads/ eggs/ lib/ lib64/ parts/ sdist/ var/ *.egg-info/ .installed.cfg *.egg #( ... )
Joe can create gitignore rules for many other files:$ joe list actionscript, ada, agda, android, anjuta, appceleratortitanium, archives, archlinuxpackages, autotools, bricxcc, c, c++, cakephp, cfwheels, chefcookbook, clojure, cloud9, cmake, codeigniter, codekit, commonlisp, composer, concrete5, coq, craftcms, cvs, dart, darteditor, delphi, dm, dreamweaver, drupal, eagle, eclipse, eiffelstudio, elisp, elixir, emacs, ensime, episerver, erlang, espresso, expressionengine, extjs, fancy, finale, flexbuilder, forcedotcom, fortran, fuelphp, gcov, gitbook, go, gradle, grails, gwt, haskell, idris, igorpro, ipythonnotebook, java, jboss, jdeveloper, jekyll, jetbrains, joomla, jython, kate, kdevelop4, kohana, labview, laravel, lazarus, leiningen, lemonstand, libreoffice, lilypond, linux, lithium, lua, lyx, magento, matlab, maven, mercurial, mercury, metaprogrammingsystem, meteor, microsoftoffice, modelsim, momentics, monodevelop, nanoc, netbeans, nim, ninja, node, notepadpp, objective-c, ocaml, opa, opencart, oracleforms, osx, packer, perl, phalcon, playframework, plone, prestashop, processing, python, qooxdoo, qt, r, rails, redcar, redis, rhodesrhomobile, ros, ruby, rust, sass, sbt, scala, scons, scrivener, sdcc, seamgen, sketchup, slickedit, stella, sublimetext, sugarcrm, svn, swift, symfony, symphonycms, tags, tex, textmate, textpattern, tortoisegit, turbogears2, typo3, umbraco, unity, vagrant, vim, virtualenv, visualstudio, vvvv, waf, webmethods, windows, wordpress, xcode, xilinxise, xojo, yeoman, yii, zendframework, zephir
So if you are convinced, you will find Joe here
Talking about UX design services becomes a new trend. While not so many people are certain who is a user and what is his or her experience, hundreds would like to contribute into the discussion about proper approaches to it. Let’s take a look on 5 the most widespread UX myths and their disproof.Read more
Some of the most interesting new modules I saw posted to drupal.org in September:Views Advanced Routing
(for Drupal 8) Allows you to specify the routing configuration YAML for a Views page. Meaning, you can use custom access control callbacks, default parameters, etc. Sweet!Commerce Responsive UI
Provides replacement interfaces for the parts of Drupal Commerce that are table dependent and non-mobile responsive by default. These include Responsive Cart, Responsive Checkout, and Responsive User Facing Orders.Drupal 8 Contrib Porting Tracker
Not a module, but a centralized place for tracking the Drupal 8 porting status of contributed projects (modules, themes, distributions). The best place to find out that the Bad Judgement module is ready for D8!Advanced Image Crop
This image field cropper lets the user do a different crop in each of the image styles configured by the admin. You better have some saavy users to comprehend this, but if you do, it looks awesome.Webform Replay [sandbox]
Extends the Webform module by adding an option to “replay” selected webform values in situations where multiple webform submissions per user are allowed, and some of that information is likely to be repeated on each submission. By enabling webform replay for these fields, the user only needs to complete them for the initial webform submission, and on subsequent entries these fields will be pre-populated with the values from the previous submission.Forbidden File Format
Flips the file field extension checking around so that you can allow all types of files except the extensions specified. So you could deny .js, .exe, .bat, and .com, but allow other types.Tableau WDC [sandbox]
Tableau 9.1 includes a new Web Data Connector feature, which lets you build connections to data accessible over HTTP with JSON data and REST APIs. This module attempts to bridge the gap between Drupal and Tableau by adding a new views plugin (tableau_wdc) which renders content as a JSON with some extra meta information needed by Tableau. Once you have created your endpoints, you can add the tableau-wdc block to any page and it will automatically render a button for each data source together with all the necessary scripts to parse and prepare the data for import.Nuke Drupal Frontend
Allows you to completely disable frontend HTML access to a Drupal site, for when you’re building a headless site, and you’re not using the Drupal-provided frontend.Doubtfire [sandbox]
An alternative to the Masquerade module, with some useful UI additions.Gmail Connector [sandbox]
Lets users view their Gmail inbox and messages in Drupal using the Gmail RESTful API.
Comics with Krita author Timothée Giet is back with his second training DVD: Secrets of Krita, a collection of videos containing 100 lessons about the most important things to know when using Krita. In 10 chapters, you will discover with clear examples all the essential and hidden features that make Krita so powerful and awesome! The data DVD is English spoken with English subtitles.
Secrets of Krita – DVD (€29,95) Secrets of Krita – Download (€29,95)
Table of Contents
10-Advanced Color Selector
2-Generic Brush Settings
07-Build-Up And Wash
3-Specific Brush Settings
01-Pixel Brush: Color Dynamics
02-Pixel Brush: Pixel Art Presets
03-Color Smudge Brush: Overlay Mode
04-Sketch Brush: How It Works
05-Bristle Brush: Ink Depletion
06-Shape Brush: Speed And Displace
07-Spray Brush: Shapes And Dynamics
08-Hatching Brush: Hatching Options
09-Clone Brush: Shortcuts And Modes
10-Deform Brush: Deformation modes
05-Filter Layer And Mask
10-Layer Color space
04-Global Selection Mask
05-Local Selection Mask
04-Transform Tool – Free Transform
05-Transform Tool – Perspective
06-Transform Tool – Warp
07-Transform Tool – Cage
08-Transform Tool – Liquify
09-Transform A Group
10-Fish Eye Point
02-Dodge And Burn
05-Color To Alpha
02-Wrap Around mode
06-Save Group Layers
Drupal Developer Toolkit tutorial series reviews web apps, desktop applications, mobile tools, and web services to improve your work and quality of life.
As I wrap up the Norwegian version of Free Culture book by Lawrence Lessig (still waiting for my final proof reading copy to arrive in the mail), my great dblatex helper and developer of the dblatex docbook processor, Benoît Guillon, decided a to try to create a French version of the book. He started with the French translation available from the Wikilivres wiki pages, and wrote a program to convert it into a PO file, allowing the translation to be integrated into the po4a based framework I use to create the Norwegian translation from the English edition. We meet on the #dblatex IRC channel to discuss the work. If you want to help create a French edition, check out his git repository and join us on IRC. If the French edition look good, we might publish it as a paper book on lulu.com. A French version of the drawings and the cover need to be provided for this to happen.
Here comes my "monthly" FLOSS report for August and September 2015. As 50% of August 2015 had been dedicated to taking some time off (spending time in Sweden with the family), it happened that even more workload had to be processed in September 2015.
- Completion of MATE 1.10 in Debian testing/unstable and Ubuntu 15.10
- Contribution to Debian LTS, Debian packaging
- Development of GOsa² Plugin SchoolManager
- Automatic builds for Arctica Project
- Forking Unity Greeter as Arctica Greeter (with focus on the remote logon part inside Unity Greeter)
My monthly 8h portion of working for the Debian LTS project I had to dispatch from August into September. Thus, I received 16h of paid work for working on Debian LTS in September 2015. For details, see below. Thanks to Raphael Hertzog for having me on the team . Thanks to all the people and companies sponsoring the Debian LTS Team's work.
The development of GOsa² Plugin SchoolManager (for details, see below) was done on contract for a school in Nothern Germany. The code will be released under the same license as the GOsa² software itself.Completion of MATE 1.10 in Debian testing/unstable and Ubuntu 15.10
In the first half of September all MATE 1.10 packages finally landed in Debian testing (aka stretch). Martin Wimpress handled most of the packaging changes, whereas my main job was being reviewer and uploader of his efforts. Thanks to John Paul Adrian Glaubitz for jumping in as reviewer and uploader during my vacation time.
Supplemental to what we reported previously about the work in Randa [1, 2] there was a session on the future of Kontact, KDE’s personal information manager (PIM). Over the years this tool has evolved into a monster making both development as well as usage sometimes tricky. It’s time to cut hydra’s arms.
TL;DR: Sorry for the long posting. This blog post is about requirements for Kontact mobile. It also shows a couple of mockups based on the preliminary mobile HIG that illustrate what the requirements mean.
Formerly, Kontact had a rather simple vision which was updated at the last PIM sprint:
“The KDE PIM Framework allows to easily create personal information management applications ranging from personal to large enterprise use, for any target device and major platform. It seamlessly integrates data from multiple sources, while aiming to be rock-solid and lightning-fast....” (read more at Thomas Pfeiffer's blog and the new KDE PIM wiki page)
(Probably we do not talk about a framework anymore but a full-featured PIM suite)
In addition the generic “simple by default and powerful on demand” should be true. That means among others to drop all non-core features. Since KDE software will run on mobile and touch devices the next version of Kontact has to runs smoothly on all devices and form factors. And the special aim of the developers is that Kontact will become the first tool when privacy and security is of primary interest.
Persona and Scenario
Kontact will stick to the KDE personas. The main area of application is in medium to large size companies with a focus on security. So we talk about people like Berna or Santiago as the primary persona. The secondary persona is the private user with average knowledge (Susan) but also those with special needs like mailinglists (Philip).
There shouldn’t be much to clarify about the desktop scenario. In respect to mobiles we have to consider first phones with ~4 to 5” in both vertical and horizontal orientation. For instance, the phone can be used vertically to get an overview of incoming emails and provide details on the selected item when rotated. Additionally we have to take tablets with 10-12” and wearables into account. The latter might be a small wrist watch but also a head-mounted display with a larger visualization.
Most relevant in this early stage of development is to define the intended features clearly. So this blog post is actually about requirements.
- Essential for Kontact+ are email, calendar, and address book. Additional modules like notes, to-do lists, feeds etc. will be made available via plugin.
- It has to be easy to switch between these modules
- Modules have to allow interactions in terms of adding an appointment to the calendar that was received by email.
- Configuration of the app is important
- Comply with KDE phone (swipe up/down from top and bottom; extend the to
- olbar wrt. the form factor)
Some time ago an analysis was done in respect to Plasma Active, which shouldn’t be outdated too much.
- Received emails have to be shown in a comprehensive list that allows to focus on important items.
- Discussions (mailinglists) are shown in threads, which is one of the killer feature of today’s KMail.
- Emails can be sorted and filtered by date/sender/receiver/size/flags with all flexibility
- Security/privacy is of major interest.
- Core technical features are:
- Support multiple accounts
- Support standard protocols (IMAP, POP3, SMTP)
- Supports authentication via NTLM (Microsoft Windows) and GSSAPI (Kerberos)
- Supports plain text and secure logins, using SSL and TLS
- Native support for inline OpenPGP, PGP/MIME, and S/MIME encryption
- Filter spam (Integration with popular spam checkers, e.g. SpamAssassin, Bogofilter, etc.)
- Provide synchronization features (e.g. owncloud)
- Notification for new messages
- Deal with text and HTML formatted emails
UI relevant features with relevance and suggested realization:
- Receive/update: core > auto push or swipe down
- Overview as well as details view and the complete email: core/performance > selection and touch again
- Distinguish read from unread messages: core > grey out
- Reply/reply all/forward: performance (reading is preferred on mobiles) > context drawer / handle (reply to all only for mobiles)
- Compose: performance > global drawer
- Delete: performance > context drawer
- Move to folder (archive): buzz > context drawer
- Save/add attachment: buzz > context drawer
- Link item (add sender to/from address book, add appointment etc.): performance > context drawer
- Toggle html on/off: exotic / buzz > context drawer
- Show full header info: exotic / buzz > link
- Handle long lists of receivers: exotic (at overview)/ performance wrt. to security > cut by default
- Search for items: exotic > not implemented
- Sort items by property (time, sender, receiver...): exotic > not implemented
- Import/Export emails: exotic > not implemented
core/basic features = program does not work without, performance = not absolutely necessary, but create the impression of a good product, buzz = not expected by default, exotic = not really needed
For more about context drawer or global (or menu) drawer you may read the preliminary HIG or wait for the upcoming blog post by Thomas Pfeiffer.
Calendar & Addressbook
We talked also in short about the calendar app. Ideas will be presented later to not overload this posting.
Requirements are essential for products. But since people tend to not read walls of text- and because it’s often not easy to follow the ideas, it makes sense to visualize with simple mockups.
Multiple level of details
Figure 1: Several level of detail in order to support both a fast overview as well as having a preview and a full-size read mode. The figures also illustrate the idea to add graphical guidance a la GitHub.
The probably most shining feature is the graph supporting the orientation. It is inspired by GitHub with the idea to flatten the current system of reply indention. If Alice communicates with Bob there would be a straight line. And if John joins and “branches” the discussion this would be illustrated respectively.
Threads are identified by the topic, highlighted in blue here. With the goal to show as many (incoming) emails as possible we start from the left with the highly condensed view that lists sender and time of the email. Items expand on selection (indicated also by a bigger sign in the graph) providing a quick preview. The actual email address is shown here for security reasons. If the user touches the item once again the app provides inline access with almost the complete functionality. However, from time to time it might be necessary to read the message in full size with for example all HTML features, as illustrated in the right picture.
By the way, the bottom panel with the red cross is a placeholder for global plasma functions on mobiles.
Context relevant functions are located in the right drawer. It opens when the user swipes from right to left offering all functions with the current list as well as the selected item. If the user wants to have quick access to a particular function, such as reply (reply to all in case of mobiles) and delete, these features may be selected for having them at the handle, which is shown on slid sideways. The user can decide what he or she wants to have there but with a limit to a few functions only (here two).
Access to global functions, i.e. compose for email, and other modules are available in the left, global drawer. And there is also a core feature of the email app: Dynamically combined filters.
Normal email programs work with a couple of fix folders like inbox, sent, and trash plus user-defined folders. But reading an email in a conversation without reference to own contributions is weird. And using predefined folders is also somewhat outdated. The idea is to have filters like “all incoming unread messages” (replacing the inbox), “emails with reference to KDE in the header or sent from *@kde.org” (replacing personal folders). The creation of those filters (like smart folders in the Mac OS world and also similar to the stored search in the current KMail) could be done on the desktop for convenience. The mobile app provides checkboxes to have any combination of those filters.
Form factors and orientation
Different form factors like in rotated orientation or in case of a larger displays have to be taken into consideration. While the number of shown emails is reduced it is possible to read the content of the selected item, at least in terms of the preview.
With more size the screen may get organized like in conventional email applications. The left, global drawer (aka sidebar in desktop apps) offers navigational and global features (still providing access to dynamic filters), there is an overview of all emails (here with more information compared to the mobile version), and the details below. Large screens makes it also possible to show a toolbar with labeled buttons instead of the right context drawer.
It should be kept in mind that users may want to switch to the mobile version on the desktop, for example in order to have a small app running on a secondary screen.
Of course you can (and should) refuse requirements that make no sense to you. For instance, if threading is less important and if the major focus is not on as many items as possible at once, the user interface may look like in figure 5. Colors can be added to support navigation and orientation, but must not be used as primary indicator. That means, similar to existing apps the items may have a small indicator bar, or the like, for the respective filter.
Finally, and to make it really confusing, the app is made for KDE. And since we offer all freedom the configuration should allow flexibility and individualization. However, the mobile app needs to be simple so we must not add all the features available currently.
Here are some ideas for the configuration:
- Sender name: ( ) First name Surname, (o) Surname, First name, ( ) First name only, ( ) Surname only
- [x] Show sender’s full address
- [x] Allow HTML emails
- [x] Show navigation graph
- <1> Number of preview lines
- [Breeze|Oxygen|Rainbow|B/W] Color set
- <0.5> Time to mark as read (steps in 250ms)
Conclusion / Participation
What do you think? Are the requirements sufficient for your workflow or do you think we have to add or remove something? We are looking forward your ideas. Please join the discussion at the KDE forums thread "The Future of Kontact".
Finally kodus go to Michael Bohlender, Christian Mollekopf, Andreas Kainz, Uri Herrera, and Jens Reuterberg who discussed the topic at Randa. Also big hugs to the mobile HIG team with Thomas Pfeiffer and Alex L.
Images were made with Balsamiq Mockups. The source can be downloaded from KDE share.
I am happy to announce that The Arctica Project can now provide automatic nightly builds of its developers' coding code work.
Packages are built automatically via Jenkins, see  for an overview of the current build queues. The Jenkins system builds code as found on our CGit mirror site .
NOTE: The Arctica Project's nightly builds may especially be interesting to people that want to try out the latest development steps on nx-libs (3.6.x branch) as we provide nx-libs 3.6.x binary preview builds.
Currently, we only build our code against Debian and Ubuntu (amd64, i386), more distros and platforms are likely to be added. If people can provide machine power (esp. non-Intel based architectures), please get in touch with us on Freenode IRC (channel: #arctica).
This is how you can add our package repositories to your APT system.Debian APT (here: stretch)
Please note that we only support recent Debian versions (currently version 7.x and above).$ echo 'deb http://packages.arctica-project.org/debian-nightly stretch main' | sudo tee /etc/apt/sources.list.d/arctica.list $ sudo apt-key adv --recv-keys --keyserver pgp.mit.edu 0x98DE3101 $ sudo apt-get update Ubuntu APT (here: trusty)
Please note that we support recent Ubuntu LTS versions only (Ubuntu 14.04 only at the moment).$ echo 'deb http://packages.arctica-project.org/ubuntu-nightly trusty main' | sudo tee /etc/apt/sources.list.d/arctica.list $ sudo apt-key adv --recv-keys --keyserver pgp.mit.edu 0x98DE3101 $ sudo apt-get update
Here is a good description of a Snake Game from wikipedia. Snake is a game where the player maneuvers a line which grows in length, with the line itself being a primary obstacle. There is no standard version of the game. The concept originated in the 1976 arcade game Blockade, and its simplicity has led to many implementations (some of which have the word snake or worm in the title). After a variant was preloaded on Nokia mobile phones in 1998, there was a resurgence of interest in the Snake concept as it found a larger audience.Problem Solving Approach
Let’s start with the elements of a Snake Game. Firstly, the snake itself is the main character. Secondly, it should be able to move in four directions (up, down, left, right). Each time it eats food, its body would stretch. Thirdly, the food will appear in random places. Fourthly, the snake should not eat itself. Fifth make the game faster Lastly, we should track the score.
In order to make the code easier to maintain, I used OOP and created three classes, which are Snake, Body, and Food.
Snake Classclass Snake(object): def __init__(self, x, y, window): # initialize snake: # - create head # - create body # - set starting x, y position def eat_food(self, food): # remove food # stretch body # add score # make the game faster def update(self): # update snake location (move the snake) def render(self): # draw the snake in the console using curses def move(self): # move up down left right
Body classclass Body(object): def __init__(self, x, y, char='#'): self.x = x self.y = y self.char = char @property def coor(self): return self.x, self.y
Food classclass Food(object): def __init__(self, window, char='*'): # set random x, y position def render(self): # draw food to console def randomize(self): # randomize x, y position
Main loopwhile True: # clear screen # display the snake # display the food # display the score # listen to keypress event # respond to keypress event # stop the game if the head hits the body (eat itself)
I have made a GitHub repository, so feel free to use this link to view the source code.Pros and Cons
The good thing about this game and our solution is that it is very simple. The approach is pretty simple and easy to understand even for beginners. This game could run on many platforms.
The bad thing is that the “look” of the game is pretty ancient (DOS style), so it’s not so appealing. When the user presses and holds the navigation key, the snake moves faster this is due to the way I used timeout to delay the rendering in the main loop.Improvements
Since I created this game just for fun and to teach beginners how to code a snake game, I know that there are many things that could be improved. The code itself could be more optimised. Perhaps using curses.napms to delay the rendering instead of using window.timeout. Adding sound effects and a theme song should be easy and fun. Currently this code only works on Linux and Mac OSX. In order to make it work with Windows platform, UniCurses should be used instead of curses.
I've just released new version of imap-utils. Main reason for new release was change on PyPI which now needs files to be hosted there.
However the new release also comes with other changes:
- Changed license to GPL3+.
- Various coding style fixes.
Also this is first release done from Git repository hosted on GitHub.
eGenix PyRun™ is our open source, one file, no installation version of Python, making the distribution of a Python interpreter to run based scripts and applications to Unix based systems as simple as copying a single file.
eGenix PyRun's executable only needs 11MB for Python 2 and 13MB for Python 3, but still supports most Python application and scripts - and it can be compressed to just 3-4MB using upx, if needed.
Compared to a regular Python installation of typically 100MB on disk, eGenix PyRun is ideal for applications and scripts that need to be distributed to several target machines, client installations or customers.
It makes "installing" Python on a Unix based system as simple as copying a single file.
eGenix has been using eGenix PyRun internally in the mxODBC Connect Server
product since 2008 with great success and decided to make it available as a
stand-alone open-source product.
We provide both the source archive to build your own eGenix PyRun, as well as pre-compiled binaries for Linux, FreeBSD and Mac OS X, as 32- and 64-bit versions. The binaries can be downloaded manually, or you can let our automatic install script install-pyrun take care of the installation: ./install-pyrun dir and you're done.
Please see the product page for more details:
This patch level release of eGenix PyRun 2.1 comes with the following enhancements:Enhancements / Changes
- Upgraded eGenix PyRun to work with and use Python 2.7.10 per default.
- eGenix PyRun will now adjust sys.base_prefix and
sys.base_exec_prefix in the same way it does for sys.prefix and
sys.exec_prefix. This is needed for Python 3.4 in order to have distutils find the Python.h include file when compiling C extensions.
- PyRun for Python 3.4 will now show the correct file name of scripts in tracebacks when running them directly, instead of just '<string>'.
- The new internal _sysconfigdata module used by the sysconfig module is now patched with the eGenix PyRun config data as well, to make sure that PyRun doesn't ship with two sets of build config variables.
- Updated install-pyrun to default to eGenix PyRun 2.1.1 and its feature set.
For a complete list of changes, please see the eGenix PyRun Changelog. Downloads
Please visit the eGenix PyRun product page for downloads, instructions on installation and documentation of the product.
Commercial support for this product is available directly from eGenix.com.
Please see the support section of our website for details.
For more information on eGenix PyRun, licensing and download instructions, please write to email@example.com.
Marc-Andre Lemburg, eGenix.com
Yoast SEO is a household name in the WordPress community and as a premium drupal themes shop owner I was jealous of their favorite tool. Yoast SEO gained popularity because it didn't just make SEO finetuning possible in WP, it made it fun. Important onpage SEO factors are pulled together...
I have a theory.
My theory is that every single person / organization who is considering building a site on Drupal 8 has created some variation of the exact same spreadsheet. The spreadsheet tracks rows with information like which contributed projects the site needs, what URL those projects live at, who the maintainers are, what the project's current porting status is, etc.
To figure this out, you go to each of the respective project pages and look for an 8.x version. If that comes up empty, you attempt to search the issue queue for variations of "Drupal 8," "D8 port," etc. Worst-case, falling back to good ol' Google. Repeat every few weeks.
Man months have probably been spent on this duplication of effort so far.
To further build on that theory, I'm guessing that these spreadsheets do not always jive with current reality. Because you might have missed the update that contributor X gave on Twitter one time about her predicted module's release date. Or you might not have been sitting next to contributor Y at dinner during DrupalCon and found out that her module's actually being ported on GitHub or BitBucket, only being moved to Drupal.org when it's complete. Or, you didn't get the chance to actually install the project yet to determine that even though one has just a -dev release it's actually quite stable, and even though this one has an beta release, it's changing APIs every 6 minutes. Or whatever.The Solution
Enter the Drupal 8 Contrib Porting Tracker! This is a "meta" project that holds issues that represent the porting status various projects, and allows us to work as a unified Drupal community to combine our collective observational super powers into one data set that can be used by anyone considering building on Drupal 8.Tags: acquia drupal planetdrupal 8contributed projects