<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:foaf="https://xmlns.com/foaf/0.1/" xmlns:og="https://ogp.me/ns#" xmlns:rdfs="https://www.w3.org/2000/01/rdf-schema#" xmlns:schema="https://schema.org/" xmlns:sioc="https://rdfs.org/sioc/ns#" xmlns:sioct="https://rdfs.org/sioc/types#" xmlns:skos="https://www.w3.org/2004/02/skos/core#" xmlns:xsd="https://www.w3.org/2001/XMLSchema#" version="2.0" xml:base="https://www.linuxjournal.com/tag/software-development">
  <channel>
    <title>software development</title>
    <link>https://www.linuxjournal.com/tag/software-development</link>
    <description/>
    <language>en</language>
    
    <item>
  <title>AdaCore's GNAT Pro, CodePeer, QGen and SPARK Pro</title>
  <link>https://www.linuxjournal.com/content/adacores-gnat-pro-codepeer-qgen-and-spark-pro</link>
  <description>  &lt;div data-history-node-id="1339403" class="layout layout--onecol"&gt;
    &lt;div class="layout__region layout__region--content"&gt;
      
            &lt;div class="field field--name-field-node-image field--type-image field--label-hidden field--item"&gt;  &lt;img src="https://www.linuxjournal.com/sites/default/files/nodeimage/story/12173f8.jpg" width="750" height="211" alt="" typeof="foaf:Image" class="img-responsive" /&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-node-author field--type-ds field--label-hidden field--item"&gt;by &lt;a title="View user profile." href="https://www.linuxjournal.com/users/james-gray" lang="" about="https://www.linuxjournal.com/users/james-gray" typeof="schema:Person" property="schema:name" datatype="" xml:lang=""&gt;James Gray&lt;/a&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"&gt;&lt;a href="https://adacore.com"&gt;AdaCore&lt;/a&gt; recently announced the concurrent annual release of four flagship
products in its portfolio of software development and verification
tools for mission-critical, safety-critical and security-critical
systems. These include version 17.1 of GNAT Pro, CodePeer, QGen and SPARK
Pro. 


&lt;p&gt;
All products aid organizations with the challenges they face in
the development and verification of critical systems, especially when
certification against software standards, such as DO-178C or EN 50128,
is required. GNAT Pro is a development environment for Ada and C, on
native and cross platforms. CodePeer is a deep static analysis tool for
Ada that can identify bugs and vulnerabilities both during development
and retrospectively on existing code bases. SPARK Pro is a verification
environment that brings mathematics-based assurance to high-integrity
software, and QGen is a model-based development and verification toolset
for Simulink and Stateflow models, which generates code in MISRA-C or
SPARK. Each tool in the suite offers its own diverse set of enhancements
and improvements in the new version 17.1 release.
&lt;/p&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-node-link field--type-ds field--label-hidden field--item"&gt;  &lt;a href="https://www.linuxjournal.com/content/adacores-gnat-pro-codepeer-qgen-and-spark-pro" hreflang="und"&gt;Go to Full Article&lt;/a&gt;
&lt;/div&gt;
      
    &lt;/div&gt;
  &lt;/div&gt;

</description>
  <pubDate>Fri, 09 Jun 2017 15:54:00 +0000</pubDate>
    <dc:creator>James Gray</dc:creator>
    <guid isPermaLink="false">1339403 at https://www.linuxjournal.com</guid>
    </item>
<item>
  <title>Brent Laster's Professional Git (Wrox)</title>
  <link>https://www.linuxjournal.com/content/brent-lasters-professional-git-wrox</link>
  <description>  &lt;div data-history-node-id="1339296" class="layout layout--onecol"&gt;
    &lt;div class="layout__region layout__region--content"&gt;
      
            &lt;div class="field field--name-field-node-image field--type-image field--label-hidden field--item"&gt;  &lt;img src="https://www.linuxjournal.com/sites/default/files/nodeimage/story/12131f7.jpg" width="283" height="356" alt="" typeof="foaf:Image" class="img-responsive" /&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-node-author field--type-ds field--label-hidden field--item"&gt;by &lt;a title="View user profile." href="https://www.linuxjournal.com/users/james-gray" lang="" about="https://www.linuxjournal.com/users/james-gray" typeof="schema:Person" property="schema:name" datatype="" xml:lang=""&gt;James Gray&lt;/a&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"&gt;&lt;p&gt;
More than 40% of software developers use the massively popular
software development tool Git as their primary source control tool. Those
new to the Git fold who are looking for a professional, up-to-date guide
to get them rolling have a new resource in Brent Laster's new book
&lt;em&gt;Professional Git&lt;/em&gt;. 
&lt;/p&gt;

&lt;p&gt;
Laster's &lt;a href="https://wrox.com"&gt;Wrox&lt;/a&gt;-published title is more than just
a development manual: it gets users into the "Git mindset". The
book offers extensive discussion of corollaries to traditional systems
as well as considerations unique to Git to help one draw upon existing
skills while looking out—and planning for—the differences. 
&lt;/p&gt;
&lt;img src="https://www.linuxjournal.com/files/linuxjournal.com/ufiles/imagecache/large-550px-centered/u1000009/12131f7.jpg" alt="" title="" class="imagecache-large-550px-centered" /&gt;&lt;p&gt;
Connected
labs and exercises are interspersed at key points to reinforce important
concepts and deepen understanding, while a focus on the practical goes
beyond technical tutorials to help users integrate the Git model into
real-world workflows. This book instructs users how to harness the power
and flexibility of Git to streamline the development cycle.
&lt;/p&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-node-link field--type-ds field--label-hidden field--item"&gt;  &lt;a href="https://www.linuxjournal.com/content/brent-lasters-professional-git-wrox" hreflang="und"&gt;Go to Full Article&lt;/a&gt;
&lt;/div&gt;
      
    &lt;/div&gt;
  &lt;/div&gt;

</description>
  <pubDate>Mon, 27 Feb 2017 14:51:52 +0000</pubDate>
    <dc:creator>James Gray</dc:creator>
    <guid isPermaLink="false">1339296 at https://www.linuxjournal.com</guid>
    </item>
<item>
  <title>It's about the User: Applying Usability in Open-Source Software</title>
  <link>https://www.linuxjournal.com/content/its-about-user-applying-usability-open-source-software</link>
  <description>  &lt;div data-history-node-id="1296339" class="layout layout--onecol"&gt;
    &lt;div class="layout__region layout__region--content"&gt;
      
            &lt;div class="field field--name-field-node-image field--type-image field--label-hidden field--item"&gt;  &lt;img src="https://www.linuxjournal.com/sites/default/files/nodeimage/story/11428f4_0.jpg" width="640" height="422" alt="" typeof="foaf:Image" class="img-responsive" /&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-node-author field--type-ds field--label-hidden field--item"&gt;by &lt;a title="View user profile." href="https://www.linuxjournal.com/users/jim-hall" lang="" about="https://www.linuxjournal.com/users/jim-hall" typeof="schema:Person" property="schema:name" datatype="" xml:lang=""&gt;Jim Hall&lt;/a&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"&gt;&lt;p&gt;
Open-source software developers have created an array of amazing programs
that provide a great working environment with rich functionality. At
work and at home, I routinely run Linux on my desktop, using Firefox
and LibreOffice for most of my daily tasks. I prefer to run open-source
software tools, and I think most &lt;em&gt;Linux Journal&lt;/em&gt; readers do too. But as
comfortable as the open-source software ecosystem can be, we've all shared
or heard the same comments about some of our favorite Linux programs:
&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;
&lt;p&gt;
"___ is a great program, once you figure out how to use
it."
&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;
&lt;p&gt;
"You can do a lot in ___, after you get past the awkward
menus."
&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;
&lt;p&gt;
"You'll like using ___, if you can learn the user interface."
&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;
That's the problem. No matter how powerful the program, that functionality
is lost if people have to figure out how to use the program in order
to unlock its secrets. Typical users with average knowledge should be
able to operate a general-purpose program. If a program is hard to use,
that suggests the problem is with the program, not with the user.
&lt;/p&gt;

&lt;h3&gt;
Usability and Open-Source Software&lt;/h3&gt;

&lt;p&gt;
"Usability" refers to how easily users can learn and start using software,
or any similar "information product". Usability is separate from the
functionality of the program, and so usability testing is different from
unit testing. Instead, usability testing allows us to uncover issues
that prevent users from using our programs.
&lt;/p&gt;

&lt;p&gt;
Most open-source software programs are written by developers for
other developers. Although some large open-source programs, such as GNOME
and Drupal, have undergone usability testing, most projects lack the
resources or interest to pursue a usability evaluation. As a result,
open-source software programs often are utilitarian, focused on the
functionality and features, with little attention paid to how people will
use it. Applying usability practices tends to be antithetical to how
open-source software is created. Open-source developers prefer functionality
over appearance. Although some projects may have a maintainer who dictates
a particular design aesthetic, many more do not. In an interview for
this article, open-source advocate Eric Raymond commented to me that
most programmers view menus and icons "like the frosting on a cake after
you've baked it", which is an apt metaphor. Open-source software developers tend
to prefer assembling the ingredients and baking the cake, not applying
frosting to make it look nice.
&lt;/p&gt;

&lt;p&gt;
So how can open-source developers easily apply usability to their own
programs? There are many ways to implement usability practices. Alice
Preston described 11 different techniques to evaluate usability in the
STC Usability SIG newsletter. These methods run the gamut from interviews
and focus groups to heuristic reviews and formal usability tests:
&lt;/p&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-node-link field--type-ds field--label-hidden field--item"&gt;  &lt;a href="https://www.linuxjournal.com/content/its-about-user-applying-usability-open-source-software" hreflang="und"&gt;Go to Full Article&lt;/a&gt;
&lt;/div&gt;
      
    &lt;/div&gt;
  &lt;/div&gt;

</description>
  <pubDate>Tue, 18 Feb 2014 19:34:49 +0000</pubDate>
    <dc:creator>Jim Hall</dc:creator>
    <guid isPermaLink="false">1296339 at https://www.linuxjournal.com</guid>
    </item>
<item>
  <title>Mercurial - Revision Control Approximated </title>
  <link>https://www.linuxjournal.com/content/mercurial-revision-control-approximated</link>
  <description>  &lt;div data-history-node-id="1037533" class="layout layout--onecol"&gt;
    &lt;div class="layout__region layout__region--content"&gt;
      
            &lt;div class="field field--name-field-node-image field--type-image field--label-hidden field--item"&gt;  &lt;img src="https://www.linuxjournal.com/sites/default/files/nodeimage/story/11144f1.png" width="640" height="337" alt="" typeof="foaf:Image" class="img-responsive" /&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-node-author field--type-ds field--label-hidden field--item"&gt;by &lt;a title="View user profile." href="https://www.linuxjournal.com/users/joey-bernard" lang="" about="https://www.linuxjournal.com/users/joey-bernard" typeof="schema:Person" property="schema:name" datatype="" xml:lang=""&gt;Joey Bernard&lt;/a&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"&gt;&lt;p&gt;
A short while ago, an article appeared in &lt;em&gt;Linux
Journal&lt;/em&gt; implying 
Git was the be-all and end-all of source code revision control systems
("&lt;a href="https://www.linuxjournal.com/content/git-revision-control-perfected"&gt;Git—Revision Control Perfected" by Henry Van Styn, August 2011&lt;/a&gt;). I would like to
challenge that assumption and declare to the world that the
&lt;em&gt;real&lt;/em&gt; perfect
version control system is here, and its name is Mercurial.
&lt;/p&gt;

&lt;p&gt;
In case you didn't notice it, my tongue was firmly in my cheek in that last
paragraph. I think version control systems are like editors. They are
all different and fit people and their work habits differently. There
is no one perfect system to rule them all. Git may be the perfect fit for
some people, and RCS may fit
someone else better. This article describes another option to add to the
mix. Mercurial provides some of the features of systems like Git, and some
of the features of systems like CVS or Subversion. Hopefully, after reading
this article,
you'll have enough information to make a rational choice as
to what is best for you. 
&lt;/p&gt;

&lt;p&gt;
The main Mercurial site contains lots of documentation for
end users and developers alike. Several tutorials are available,
and they even include a series of work flows that cover how end users
can use Mercurial for their development projects. Using those, you can
see how you could use Mercurial as a solo developer or as one of a group
of developers, or how to work with a central repository like CVS. These
work flows are great starting points for you to create your own.
&lt;/p&gt;

&lt;p&gt;
First, let's look at what makes up Mercurial. A Mercurial repository
consists of a working directory, which is paired with a store. The
store contains the history of the repository. Every working
directory is paired with its own copy of the store. This means that
Mercurial has a distributed system, much like Git. When you commit a
series of file changes, a single changeset is created, encapsulating
these changes. Each changeset gets a sequential number, called the
revision number. But, remember that each working directory gets its own
copy of the store, so these revision numbers may not actually match
up. For this reason, each revision also gets a 40-digit hexadecimal
globally unique ID. 
&lt;/p&gt;

&lt;img src="https://www.linuxjournal.com/files/linuxjournal.com/ufiles/imagecache/large-550px-centered/u1002061/11144f1.png" alt="" title="" class="imagecache-large-550px-centered" /&gt;&lt;p&gt;
Figure 1. Here you see that Mercurial repositories are tagged for easy finding.
&lt;/p&gt;

&lt;img src="https://www.linuxjournal.com/files/linuxjournal.com/ufiles/imagecache/large-550px-centered/u1002061/11144f2.jpg" alt="" title="" class="imagecache-large-550px-centered" /&gt;&lt;p&gt;
Figure 2. Right-clicking a file and pulling up the properties
gives you lots of Mercurial information.
&lt;/p&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-node-link field--type-ds field--label-hidden field--item"&gt;  &lt;a href="https://www.linuxjournal.com/content/mercurial-revision-control-approximated" hreflang="und"&gt;Go to Full Article&lt;/a&gt;
&lt;/div&gt;
      
    &lt;/div&gt;
  &lt;/div&gt;

</description>
  <pubDate>Tue, 24 Apr 2012 17:17:51 +0000</pubDate>
    <dc:creator>Joey Bernard</dc:creator>
    <guid isPermaLink="false">1037533 at https://www.linuxjournal.com</guid>
    </item>
<item>
  <title>Are You Accessible?</title>
  <link>https://www.linuxjournal.com/content/are-you-accessible</link>
  <description>  &lt;div data-history-node-id="1025961" class="layout layout--onecol"&gt;
    &lt;div class="layout__region layout__region--content"&gt;
      
            &lt;div class="field field--name-field-node-image field--type-image field--label-hidden field--item"&gt;  &lt;img src="https://www.linuxjournal.com/sites/default/files/nodeimage/story/knowbility-logo.jpg" width="450" height="238" alt="knowbility logo" typeof="foaf:Image" class="img-responsive" /&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-node-author field--type-ds field--label-hidden field--item"&gt;by &lt;a title="View user profile." href="https://www.linuxjournal.com/users/katherine-druckman" lang="" about="https://www.linuxjournal.com/users/katherine-druckman" typeof="schema:Person" property="schema:name" datatype="" xml:lang=""&gt;Katherine Druckman&lt;/a&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"&gt;&lt;p&gt;Accessibility to people with disabilities is an important issue in web and software development, and the folks at Knowbility, Inc. would like your input about how to better educate people about accessible technology.&lt;/p&gt;
&lt;p&gt;Knowbility is a non-profit organization whose mission is to support the independence of children and adults with disabilities by promoting the use and improving the availability of accessible information technology.  They do this through education and outreach, and the more information they have from those of us working in the IT industry, the better they are able to continue their mission.&lt;/p&gt;
&lt;p&gt;So if you have a few minutes, please share your feedback via their online survey at &lt;a href="https://www.surveymonkey.com/RU_accessible"&gt;https://www.surveymonkey.com/RU_accessible&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Knowbility, a nonprofit advocate, trainer and consultant since 1999 for technology access for people with disabilities, and MicroAssist Inc, a leading software training center since 1988, are seeking input on questions of IT accessibility. Our industry has seen legal mandates for accessibility expanding every year; technical standards from the W3C are in place and updated as technology evolves; and yet access to technology remains unequal. We have had many inquiries about why the state of accessibility remains so dismal. We welcome your input and if we have left something out, please send email to knowbility at knowbility dot org.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;P.S. You can enter to win two Southwest Airlines tickets by answering the survey.&lt;/p&gt;
&lt;/div&gt;
      
            &lt;div class="field field--name-node-link field--type-ds field--label-hidden field--item"&gt;  &lt;a href="https://www.linuxjournal.com/content/are-you-accessible" hreflang="und"&gt;Go to Full Article&lt;/a&gt;
&lt;/div&gt;
      
    &lt;/div&gt;
  &lt;/div&gt;

</description>
  <pubDate>Thu, 20 Oct 2011 00:03:21 +0000</pubDate>
    <dc:creator>Katherine Druckman</dc:creator>
    <guid isPermaLink="false">1025961 at https://www.linuxjournal.com</guid>
    </item>
<item>
  <title>Cross Compiling Options</title>
  <link>https://www.linuxjournal.com/content/cross-compiling-options</link>
  <description>  &lt;div data-history-node-id="1011187" class="layout layout--onecol"&gt;
    &lt;div class="layout__region layout__region--content"&gt;
      
            &lt;div class="field field--name-field-node-image field--type-image field--label-hidden field--item"&gt;  &lt;img src="https://www.linuxjournal.com/sites/default/files/nodeimage/story/omap1710sdp_pic.jpg" width="550" height="423" alt="" typeof="foaf:Image" class="img-responsive" /&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-node-author field--type-ds field--label-hidden field--item"&gt;by &lt;a title="View user profile." href="https://www.linuxjournal.com/users/johan-thelin" lang="" about="https://www.linuxjournal.com/users/johan-thelin" typeof="schema:Person" property="schema:name" datatype="" xml:lang=""&gt;Johan Thelin&lt;/a&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"&gt;&lt;p&gt;What is your strategy on cross compilation toolchains? Here we explore a&lt;br /&gt;
few options:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;DIY - requires you to manually start each step, unless you're comfortable enough to script the process. As each step takes ages, this can be a tedious job. However, it gives you full control and insight into each step.&lt;/li&gt;
&lt;li&gt;crosstool [&lt;a href="https://www.kegel.com/crosstool/"&gt;https://www.kegel.com/crosstool/&lt;/a&gt;] - a scripted version of DIY + patches. Used to be my preferred tool, but hasn't been updated since 2006. Limited to glibc.&lt;/li&gt;
&lt;li&gt;crosstool-NG [&lt;a href="https://ymorin.is-a-geek.org/projects/crosstool"&gt;https://ymorin.is-a-geek.org/projects/crosstool&lt;/a&gt;] - a rewrite of crosstool. Provides a menuconfig configuration interface, which makes it quite easy to use. You can also pass configurations around. Supports glibc, but also uclibc and eglibc.&lt;/li&gt;
&lt;li&gt;buildroot [&lt;a href="https://buildroot.uclibc.org/"&gt;https://buildroot.uclibc.org/&lt;/a&gt;] - builds a uclibc-based gcc in the process of building an entire system. The toolchain can be ripped out (you can also force buildroot to use an external toolchain - thus avoiding building the same toolchain over and over again). As the focus is on the entire system, this approach provides little insight of the toolchain, but in my experience, the outcome usually works well.&lt;/li&gt;
&lt;li&gt;scratchbox [&lt;a href="https://www.scratchbox.org/"&gt;https://www.scratchbox.org/&lt;/a&gt;] - provides uclibc or glibc based toolchains. Approaches cross compilation is a new way - providing an environment where the actual cross part of the compilation is abstracted away. Also provides an emulated target environment, so you can run your ARM binaries on your standard PC from within the scratchbox environment.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;The available options are ordered in some sort of control freak factor order, where DIY provides loads of control over every tiny aspect, while scratchbox just makes things work.&lt;/p&gt;
&lt;p&gt;Myself? Last time around I used ct-ng, but I've used them all (and will not DIY again unless forced ;) ).&lt;/p&gt;
&lt;/div&gt;
      
            &lt;div class="field field--name-node-link field--type-ds field--label-hidden field--item"&gt;  &lt;a href="https://www.linuxjournal.com/content/cross-compiling-options" hreflang="und"&gt;Go to Full Article&lt;/a&gt;
&lt;/div&gt;
      
    &lt;/div&gt;
  &lt;/div&gt;

</description>
  <pubDate>Sat, 24 Apr 2010 14:10:56 +0000</pubDate>
    <dc:creator>Johan Thelin</dc:creator>
    <guid isPermaLink="false">1011187 at https://www.linuxjournal.com</guid>
    </item>

  </channel>
</rss>
