<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Open-Source &#8211; Xojo Programming Blog</title>
	<atom:link href="https://blog.xojo.com/tag/open-source/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.xojo.com</link>
	<description>Blog about the Xojo programming language and IDE</description>
	<lastBuildDate>Thu, 24 Oct 2024 16:26:26 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
	<item>
		<title>Spotlight On: EKlectic Accounting</title>
		<link>https://blog.xojo.com/2024/10/16/spotlight-on-eklectic-accounting/</link>
		
		<dc:creator><![CDATA[Alyssa Foley]]></dc:creator>
		<pubDate>Wed, 16 Oct 2024 16:00:00 +0000</pubDate>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[Cross-Platform]]></category>
		<category><![CDATA[Desktop]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Open-Source]]></category>
		<category><![CDATA[Spotlight On]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=13599</guid>

					<description><![CDATA[Spotlight On posts focus on Xojo community members. We’ll use this space to tell the stories of people using Xojo, share amazing Xojo-made apps and&#8230;]]></description>
										<content:encoded><![CDATA[
<p><em>Spotlight On posts focus on Xojo community members. We’ll use this space to tell the stories of people using Xojo, share amazing Xojo-made apps and spread awareness of community resources. If you have an app, a project or a person you want to see featured in Spotlight On,&nbsp;<a href="mailto:hello@xojo.com" target="_blank" rel="noreferrer noopener">tell us about it</a>!</em></p>



<p><a href="https://www.eklecticcore.com/index.php?section_id=55" target="_blank" rel="noreferrer noopener">EKlectic</a> Accounting is a new, full-featured, professional accounting application made with Xojo by independent developer Edward Kidwell. EKlectic&#8217;s user interface is “QuickBooks-like” and will feel familiar to users of other accounting software. All the code for EKlectic Accounting is &#8220;pure Xojo&#8221;, and uses no plugins. The application is cross-platform and supported on macOS and Windows. </p>



<h2 class="wp-block-heading">10 Questions with <strong>Edward Kidwell</strong></h2>



<h3 class="wp-block-heading">You mentioned your projects are &#8220;pure Xojo&#8221; and don&#8217;t use any plugins. Can you tell us about that?</h3>



<p>I was originally drawn to Xojo by an open-source project that turned out to be heavily dependent on third-party plugins. Even after I had purchased a Xojo Pro license, I couldn’t compile the project without additional purchases. Furthermore, as I dug deeper, I found the functionality provided by the plugins was easier to write in Xojo than it was to implement the plugin. I decided at that point that I would strive for all of my projects to be cross-platform compilable without any third-party purchases being necessary. Several projects later, I have not had to compromise that decision.</p>



<p>Although Xojo is a RAD environment&nbsp;(Rapid Access Development), I’ve observed (on the Xojo forum) that many developers overlook the power that is available in the core language and built-in objects. Anyone using the forum will notice that many answers basically say, “Use plugin ABC for that,” when Xojo itself could often solve the problem without any plugins. For developers who are packaging and reselling their software, I think the less third-party dependencies the package has, the easier it is to maintain, support, and debug.</p>



<p>For example, without using any third-party software, I&#8217;ve created reusable Xojo objects for PDF (with both print and preview), ID3 audio-tags-reader (for MP3 files), and custom controls (database-enabled auto-completing dropdown fields, GUI panels, etc). Xojo really can stand &#8220;on its own two feet”! <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<h3 class="wp-block-heading">Mac, Windows or Linux?</h3>



<p>All of the above! <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /> My primary machine is Mac, with a separate Windows machine on a different HDMI channel, and I use various&nbsp;Linux VMs as needed.</p>



<h3 class="wp-block-heading">What do you wish more people would ask/talk to you about when it comes to the software you develop?&nbsp;</h3>



<p>I wish more people offered criticism of the user experience. Only through critical feedback can you improve a software package, and I’ve learned to appreciate it when people complain.</p>



<h3 class="wp-block-heading">What&#8217;s next on your &#8220;Learn Next&#8221; list?</h3>



<p>In the context of computers, the Rust language has piqued my interest. Besides that, I’m currently studying Greek.</p>



<h3 class="wp-block-heading">When do you think of solutions for stubborn bugs?</h3>



<p>*Always* first thing in the morning. The mind seems to solve them overnight. <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<h3 class="wp-block-heading">What programming moments made you think “Wow, I love my job so much.”</h3>



<p>I felt that way when, using Xojo&#8217;s ServerSocket and TCPSocket classes, I was able to implement a bonafide HTTP 1.1 server written from scratch in Xojo. I packaged that code as a reusable object that I can plop in to any of my projects. For example, one of my projects uses that server to allow users to control the app remotely from any device on the same network (e.g. iPhone, iPad, Android, and even Kindle tablets). So yeah … it is very satisfying to see my Xojo apps serving up their own HTML and JavaScript web apps, as well!</p>



<h3 class="wp-block-heading">What is something that has surprised you about coding in the last 10 years?</h3>



<p>Two things: 1) How fast certain new languages are adopted (e.g. Swift, Rust), and 2) How indispensable some of the older languages have become (e.g. C++, PHP … they&#8217;ll never die! <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /> ).</p>



<h3 class="wp-block-heading">What&#8217;s the coolest thing you worked on recently?</h3>



<p>There are actually two very “geeky” things that come to mind: The first is a shell script I created on TrueNAS (FreeBSD) using rsync to *pull* scheduled (cron) backups of a remote Linux web server over an authenticated SSH connection. The core functions from the script are also used on my Mac to *push* scheduled backups to the TrueNAS. That made my “geek sense tingle” a bit. Secondly, I created a web-based VOIP phone system (like the automated attendants in a PBX) using a RESTful API on the backend, and a home-grown web-app-GUI on the frontend. It allows people to setup a complete phone system in one or more languages and with different voices, all through a web interface. Again, “geek-sense=tingly.” <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<h3 class="wp-block-heading">Music or no music while coding?</h3>



<p>I’m a multi-instrument musician of over 4 decades, so yes, always!</p>



<p>In addition to accounting software, Ed offers additional apps built in Xojo. <a href="https://www.eklecticcore.com/index.php?section_id=49" target="_blank" rel="noreferrer noopener">EKlecticSong</a> is a presentation program for song services, church services, or business presentations. <a href="https://www.eklecticcore.com/index.php?section_id=52" target="_blank" rel="noreferrer noopener">EKlectic Find Duplicates</a> is a duplicate finder with a fast duplicate algorithm. <a href="https://www.eklecticcore.com/index.php?section_id=50" target="_blank" rel="noreferrer noopener">Dock Media</a> is a full-featured yet minimalistic media player. </p>



<p><em>Thank you to Ed Kidwell for answering our questions and sharing his experience with Xojo with us. If you have an app, a project or a person you want to see featured in Spotlight On, <a href="mailto:hello@xojo.com" target="_blank" rel="noreferrer noopener">tell us about it</a>!</em></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Using Xojo and GitHub</title>
		<link>https://blog.xojo.com/2024/04/02/using-xojo-and-github/</link>
		
		<dc:creator><![CDATA[Paul Lefebvre]]></dc:creator>
		<pubDate>Tue, 02 Apr 2024 17:26:24 +0000</pubDate>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[Learning]]></category>
		<category><![CDATA[Source Control]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Beginner Tips]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[GitHub]]></category>
		<category><![CDATA[Open-Source]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Version Control]]></category>
		<category><![CDATA[Xojo Programming Language]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=12833</guid>

					<description><![CDATA[Now that Xojo Lite includes support for saving projects in version control format, it seems like a good time to revisit how you can use Xojo with GitHub, the popular online Git hosting service.]]></description>
										<content:encoded><![CDATA[
<p>Now that Xojo Lite includes support for saving projects in version control format, it seems like a good time to revisit how you can use Xojo with <a href="https://github.com">GitHub</a>, the popular online Git hosting service.</p>



<h2 class="wp-block-heading">What are Git and GitHub?</h2>



<p><a href="https://en.wikipedia.org/wiki/Git">Git</a> is an open-source version control system, also known as a source control system. Created by Linus Torvalds in 2005, it is now the most popular version control system, supplanting <a href="https://en.wikipedia.org/wiki/Apache_Subversion">Subversion</a> a while ago.</p>



<p>GitHub is an online Git hosting service, now owned by Microsoft. GitHub provides additional features beyond just Git hosting, but for this post we will focus on its Git hosting. GitHub is free to use for both public and private repositories.</p>



<p>A repository is essentially a place to store a project. Public repositories are great ways to share open-source projects. Others can view and download the source code. Private repositories are only visible to you and are great for your own internal projects.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Git is a distributed version control system, which just means that the source code can be versioned locally and on the server, only synchronizing when necessary. For simplicity it is common to keep both in sync, however. Older version control systems such as Subversion were server-based and versions were only ever kept on the server. A distributed version control system is slightly more complex, but it does have the advantage of making it easier to work offline.</p>
</blockquote>



<p>A version control system tracks changes made to text files, something that is incredibly useful when it comes to source code. Tracking changes is a very common task that is needed while programming. You may have seen people save their projects as MyProject1, MyProject2, MyProjectNewVersion, etc. That is a rudimentary way of trying to ensure you don&#8217;t lose changes as you update your code. With version control and the Xojo version control project file format you get a much more flexible technique.</p>



<p>When you save your project using the Xojo version control project file format (called Xojo Project) in the file selector, each project item is saved as its own file on the drive. And each of these files is plain text &#8212; you could view them using a text editor if you wanted.</p>



<p>You might be thinking: &#8220;I&#8217;m just a single developer, I don&#8217;t need this extra complexity.&#8221; But version control systems are not just for multi-person teams. Sure, version control is a great way to make sure that different team members don&#8217;t make different changes to the same code.  But version tracking is useful to everyone. Even as a single developer, being able to review previous changes, and revert changes if they don&#8217;t work out can be a lifesaver. It removes any &#8220;fear of breaking things&#8221; from your workflow. Plus, having your source code on a remote server (GitHub) can also function as one of your source code backups.</p>



<h2 class="wp-block-heading">A Quick Example</h2>



<p>To give you an example of how this works, consider a single text file that exists in Git: ReadMe.txt</p>



<p>Initially it contains just this text:</p>



<pre class="wp-block-code"><code>Hello!</code></pre>



<p>You pull down the file to your computer (I&#8217;ll define Git terms like these below) to work on it. Opening the file in a text editor, you change its text to this and save:</p>



<pre class="wp-block-code"><code>Hello, Xojo!</code></pre>



<p>Now the file on your computer contains that text. This is called the working copy. The file in the repository still has the text &#8220;Hello!&#8221;. Now you can do a couple useful things.</p>



<p>You can ask to see the differences between the file in the repository and the one in the working copy. When doing so, most tools will highlight the line that changed, showing the repository contents on the left and the working copy contents on the right. This is a wonderful way to review changes made to code.</p>



<p>The other thing you can do is commit the change to the repository. This adds this file to the repository and makes it the latest version. In Git you&#8217;ll then be able to see that this file has two versions and you&#8217;ll be able to see what the file looked like for each version.</p>



<p>These two things mean that you will never again lose any work. Anytime you make a change to your code that you want to save as a version in the repository, you commit it. You don&#8217;t want to commit after every change as that is too granular and will be hard to manage, but it means you can safely make a bunch of big changes to something and still be able to go back and review what the code looked like previously.</p>



<p>The other useful thing you can do is revert changes. If, after saving the file with &#8220;Hello, Xojo!&#8221; you realize that was a mistake, you can go back to the previous version by choosing to revert the file. This discards the local working copy and pulls down the most recent revision from the repository.</p>



<p>I realize that this might all seem rather different and confusing, but once you do this on a couple small projects you&#8217;ll get the hang of it and you will never want to go back to using MyProject1, MyProject2 again!</p>



<h2 class="wp-block-heading">Terminology</h2>



<p><strong>Repository</strong>: This is essentially a place to store a group of files, which for our purposes will be a Xojo project saved in the version control file format (Xojo Project).</p>



<p><strong>Clone</strong>: Copies the repository to your computer so you can work on it</p>



<p><strong>Fetch</strong>: Updates the local repository with any changes that are stored on the server</p>



<p><strong>Pull</strong>: Similar to fetch, except that it also copies the changes into the working copy</p>



<p><strong>Commit</strong>: Add the changed file to the repository as a new version</p>



<p><strong>Push</strong>: Pushes the committed file to the server (GitHub). Often this is done as a single step: Commit and Push.</p>



<p><strong>Working Copy</strong>: Your local copy of the repository and the file</p>



<h2 class="wp-block-heading">General GitHub Usage</h2>



<p>With Xojo, the general workflow you will use is:</p>



<ol class="wp-block-list">
<li>Create repository on GitHub for the project.</li>



<li>Pull it down to a folder on your computer.</li>



<li>Create a Xojo project.</li>



<li>Save it in Xojo Project (text) format into the above folder.</li>



<li>Commit and Push it to GitHub.</li>



<li>Make additional changes to the Xojo project.</li>



<li>Commit and Push to GitHub as necessary.</li>
</ol>



<h2 class="wp-block-heading">Create a GitHub Account</h2>



<p>If you don’t already have a GitHub account, you’ll need to create one. Head on over to the <a href="https://github.com/signup">sign up page</a> to start the process:</p>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="346" src="https://blog.xojo.com/wp-content/uploads/2024/03/image-2-1024x346.png" alt="" class="wp-image-12838" srcset="https://blog.xojo.com/wp-content/uploads/2024/03/image-2-1024x346.png 1024w, https://blog.xojo.com/wp-content/uploads/2024/03/image-2-300x101.png 300w, https://blog.xojo.com/wp-content/uploads/2024/03/image-2-768x259.png 768w, https://blog.xojo.com/wp-content/uploads/2024/03/image-2.png 1292w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading">Create a Repository</h2>



<p>Now that you have a GitHub account, you’ll want to go to your GitHub home page and click the “New Repository” button.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="156" height="80" src="https://blog.xojo.com/wp-content/uploads/2024/03/CleanShot-2024-03-28-at-12.59.10@2x.png" alt="" class="wp-image-12839"/></figure>



<p>As mentioned above, a repository is essentially where your project is stored. You’ll typically want a separate repository for each project. This is what the new repository form looks like:</p>



<figure class="wp-block-image size-large"><img decoding="async" width="860" height="1024" src="https://blog.xojo.com/wp-content/uploads/2024/03/image-4-860x1024.png" alt="" class="wp-image-12841" srcset="https://blog.xojo.com/wp-content/uploads/2024/03/image-4-860x1024.png 860w, https://blog.xojo.com/wp-content/uploads/2024/03/image-4-252x300.png 252w, https://blog.xojo.com/wp-content/uploads/2024/03/image-4-768x914.png 768w, https://blog.xojo.com/wp-content/uploads/2024/03/image-4-1291x1536.png 1291w, https://blog.xojo.com/wp-content/uploads/2024/03/image-4.png 1504w" sizes="(max-width: 860px) 100vw, 860px" /></figure>



<p>For open-source projects you&#8217;ll want to make sure &#8220;Public&#8221; is selected as it&#8217;s not really open-source if it is not public. For a public repository, be sure to come up with a catchy “repository name” and always include a description. Choose &#8220;Private&#8221; for internal projects.</p>



<p>I always check “Add a README file”, which adds an empty README file to the repository. You can update it later, but it is where you’ll briefly describe the project and how to use it (using <a href="https://en.wikipedia.org/wiki/Markdown">Markdown</a>). The README is shown by default when you go to the repository in a web browser.</p>



<p>You should also select “Xojo” for the gitignore template (click the dropdown and type &#8220;xojo&#8221;). This identifies the project as using the Xojo programming language, which helps with searches and also marks the “uistate” file (which contains user-specific UI settings, such as window sizes and positions) so that it is not included in the project.</p>



<p>Last is the license. For most public open-source projects, I recommend the <a href="https://en.wikipedia.org/wiki/MIT_License">MIT License</a>, which essentially allows anyone to use your code however they want. For private projects, you can leave it at &#8220;None&#8221;.</p>



<p>Click the Create Repository button to create the repository.</p>



<h2 class="wp-block-heading">Clone the Repository to your Computer</h2>



<p>With the repository created, you can view it on the GitHub website for you account:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="480" src="https://blog.xojo.com/wp-content/uploads/2024/03/image-5-1024x480.png" alt="" class="wp-image-12842" srcset="https://blog.xojo.com/wp-content/uploads/2024/03/image-5-1024x480.png 1024w, https://blog.xojo.com/wp-content/uploads/2024/03/image-5-300x141.png 300w, https://blog.xojo.com/wp-content/uploads/2024/03/image-5-768x360.png 768w, https://blog.xojo.com/wp-content/uploads/2024/03/image-5-1536x720.png 1536w, https://blog.xojo.com/wp-content/uploads/2024/03/image-5-2048x960.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>From here you&#8217;ll be able to see the files in the repository, along with other information.</p>



<p>You are now ready to &#8220;clone&#8221; the repository to your computer. This copies the repository files to a folder on your computer so you can modify its files. Of course, the only files in the repository will be LICENSE and the empty README.md, but it is still necessary to do the clone so that you can create the folder where you will then add your Xojo code.</p>



<p>In order to clone, you’ll want to use a Git client application. There are many to choose from, but two free ones are the official&nbsp;<a href="https://desktop.github.com">GitHub Desktop</a>&nbsp;and&nbsp;<a href="https://www.sourcetreeapp.com">Atlassian&nbsp;SourceTree</a>. GitHub Desktop is simpler so that is the one I’ll show here.</p>



<p>Download GitHub Desktop:&nbsp;<a href="https://desktop.github.com">https://desktop.github.com</a></p>



<p>Start GitHub Desktop and click “Sign into GitHub.com”.</p>



<p>On the Configure Git page, enter the name and email you want to use to identify your commits.</p>



<p>Click Finish on the next page to show the main screen where you have the option of creating new repositories or cloning a repository. Since we already created a repository online in the previous section, you want to select “Clone a Repository” (you can also choose this from the File menu). In the list, choose the repository you created above, choose your local folder location (Choose…) and click Clone.</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="988" height="976" src="https://blog.xojo.com/wp-content/uploads/2024/03/image-8.png" alt="" class="wp-image-12845" style="width:437px;height:auto" srcset="https://blog.xojo.com/wp-content/uploads/2024/03/image-8.png 988w, https://blog.xojo.com/wp-content/uploads/2024/03/image-8-300x296.png 300w, https://blog.xojo.com/wp-content/uploads/2024/03/image-8-768x759.png 768w" sizes="auto, (max-width: 988px) 100vw, 988px" /></figure>



<p>You now have a folder on your disk where you can add your Xojo project. This is what the repository looks like in GitHub Desktop:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="716" src="https://blog.xojo.com/wp-content/uploads/2024/03/image-9-1024x716.png" alt="" class="wp-image-12846" srcset="https://blog.xojo.com/wp-content/uploads/2024/03/image-9-1024x716.png 1024w, https://blog.xojo.com/wp-content/uploads/2024/03/image-9-300x210.png 300w, https://blog.xojo.com/wp-content/uploads/2024/03/image-9-768x537.png 768w, https://blog.xojo.com/wp-content/uploads/2024/03/image-9-1536x1074.png 1536w, https://blog.xojo.com/wp-content/uploads/2024/03/image-9-2048x1432.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p><em>Note: If you are using another Git client, you will choose its “clone a repository from URL” feature and then provide the URL shown in the “Clone or Download” button on the repository page.</em></p>



<h2 class="wp-block-heading">Add Your Xojo Project Code</h2>



<p>Start Xojo and open the project you want for the repository you cloned (or you can just create a new project). Click “Save As”, make sure the Format is “Xojo Project” and choose the folder you created when you cloned the repository.</p>



<p>Go back to GitHub Desktop and you’ll now see all the Xojo files appearing in the list as “changed files”. (For this test I used a Xojo SQLiteExample.)</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="716" src="https://blog.xojo.com/wp-content/uploads/2024/03/image-11-1024x716.png" alt="" class="wp-image-12848" srcset="https://blog.xojo.com/wp-content/uploads/2024/03/image-11-1024x716.png 1024w, https://blog.xojo.com/wp-content/uploads/2024/03/image-11-300x210.png 300w, https://blog.xojo.com/wp-content/uploads/2024/03/image-11-768x537.png 768w, https://blog.xojo.com/wp-content/uploads/2024/03/image-11-1536x1074.png 1536w, https://blog.xojo.com/wp-content/uploads/2024/03/image-11-2048x1432.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>You now need to “Commit” these changes. By default they are all selected/checked in GitHub Desktop so you can enter a brief summary and description (for the first commit, often “Initial commit.” is used, but I used &#8220;Initial Xojo commit.&#8221;) and then click the “Commit to main” button.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Each time you commit you want to be sure to type a clear summary and description of the changes. This will be helpful later when you are reviewing prior commits.</p>
</blockquote>



<p>This marked the files as committed in your local repository, which is needed before you can push the changes up to the online repository. Generally speaking you want to commit things after you have made changes that you want to track. You don’t need to immediately push the changes up to the server (online repository) each time, however, people often do as it is simpler. Some Git clients even offer a single button or command to commit and push in one step.</p>



<p>For this initial commit you definitely want to push the commit to the server, so click the button in the toolbar that says “Push origin”. This pushes the commit to the origin, which is the GitHub repository in this case.</p>



<p>If you now go back to the GitHub repository online and refresh the page you’ll now see the files have been committed:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="663" src="https://blog.xojo.com/wp-content/uploads/2024/03/image-12-1024x663.png" alt="" class="wp-image-12849" srcset="https://blog.xojo.com/wp-content/uploads/2024/03/image-12-1024x663.png 1024w, https://blog.xojo.com/wp-content/uploads/2024/03/image-12-300x194.png 300w, https://blog.xojo.com/wp-content/uploads/2024/03/image-12-768x497.png 768w, https://blog.xojo.com/wp-content/uploads/2024/03/image-12-1536x994.png 1536w, https://blog.xojo.com/wp-content/uploads/2024/03/image-12-2048x1325.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading">Sharing Your Public Project</h2>



<p>If you created a public repository then it is now available on GitHub for anyone to use. People can find it by searching or you can share the URL (perhaps in the <a href="https://forum.xojo.com">Xojo Forum</a>).</p>



<p>Since I <a href="https://github.com/xojo/MyTestProject">published a public project</a>, anyone can use it. This means that they can clone it and push changes to your project as &#8220;pull requests&#8221;. A pull request is a change that a user has made that they would also like you to apply to your project. Since this is your project, others cannot directly change it without you adding them as contributors. However, you can review these pull requests and choose to pull and merge the change into your project if you want. Or you can reject the pull request &#8212; it&#8217;s all up to you since it&#8217;s your project.</p>



<h2 class="wp-block-heading">Changing and Updating Your Project</h2>



<p>You’ll likely be continuing to change your project to fix bugs and add features. Each change you make shows up in GitHub Desktop where you can commit it and then push it to the server.</p>



<p>As an example, go back to Xojo and make a change to the project. I added some comments to the AddTeamRow method. After saving, the changes are now visible in GitHub Desktop:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="716" src="https://blog.xojo.com/wp-content/uploads/2024/03/image-14-1024x716.png" alt="" class="wp-image-12851" srcset="https://blog.xojo.com/wp-content/uploads/2024/03/image-14-1024x716.png 1024w, https://blog.xojo.com/wp-content/uploads/2024/03/image-14-300x210.png 300w, https://blog.xojo.com/wp-content/uploads/2024/03/image-14-768x537.png 768w, https://blog.xojo.com/wp-content/uploads/2024/03/image-14-1536x1074.png 1536w, https://blog.xojo.com/wp-content/uploads/2024/03/image-14-2048x1432.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>You can see the one file that was changed, SQLiteWindow, and the changes (or diff) is shown in the viewer. Here you can see the changes by the blue highlighted lines in the gutter. The first change indicates that line 386 was removed and replaced, with the change noting that &#8220;Please&#8221; was added.</p>



<p>The next two changes indicate that new lines were added to the code.</p>



<p>It&#8217;s always good to review code like this before you commit it to make sure the changes are what you expect.</p>



<p>You can now Commit this change (always add Summary and Description text so you know the reason for the change!) and then Push it to the server (Push origin).</p>



<h2 class="wp-block-heading">Discarding Changes</h2>



<p>Say you&#8217;ve made changes to your Xojo project, but realize you&#8217;ve really messed things up and want to go back to the way the code was. For example, say I&#8217;ve accidentally deleted a bunch of code in the ShowData method and saved the project. In GitHub Desktop, it would look like this:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="716" src="https://blog.xojo.com/wp-content/uploads/2024/03/image-15-1024x716.png" alt="" class="wp-image-12852" srcset="https://blog.xojo.com/wp-content/uploads/2024/03/image-15-1024x716.png 1024w, https://blog.xojo.com/wp-content/uploads/2024/03/image-15-300x210.png 300w, https://blog.xojo.com/wp-content/uploads/2024/03/image-15-768x537.png 768w, https://blog.xojo.com/wp-content/uploads/2024/03/image-15-1536x1074.png 1536w, https://blog.xojo.com/wp-content/uploads/2024/03/image-15-2048x1432.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>You can see the big red area indicating the code that was removed.</p>



<p>To discard this change, I can right-click on SQLiteWindow in GitHub Desktop and select Discard Changes. This pops up a confirmation dialog and clicking Discard Changes will restore the file to its previous version, which is the version of the file that was last committed to the repository.</p>



<p>After doing this, you will need to close the project in Xojo and then re-open it so that it can refresh its internal project structures to reflect the discarded changes. After doing that, you can go back to the ShowData method to see that the code is restored.</p>



<p>This capability is a big reason why version control is also incredibly useful for solo developers.</p>



<h2 class="wp-block-heading">Using or Cloning Other Repositories</h2>



<p>Don’t forget that you can also use other people’s public repositories. To do so you’ll want to click the “Clone or Download” button on the repository page.</p>



<p>For simple usage, where you just want to grab the current version of the repository because you don&#8217;t intend to change anything, you can then click the Download ZIP button. Once downloaded, unzip the file and then open the project in Xojo where you can use it or copy/paste it into your own projects (review the license agreement before you use projects, of course).</p>



<p>You’ll want to clone a project when you want to manage it using GitHub Desktop (or your GitHub client of choice). This allows you to fetch/pull updates from the online repository and also allows you to make your own changes and push them up to the server where the repository owner will get them as pull requests, as described above.</p>



<h2 class="wp-block-heading">Change Your Default Project Format</h2>



<p>You might find it worthwhile to change your default project format to be the version control format. This way it will always be selected by default when you save. You can change this in Xojo&#8217;s General Settings:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="656" src="https://blog.xojo.com/wp-content/uploads/2024/03/image-16-1024x656.png" alt="" class="wp-image-12853" srcset="https://blog.xojo.com/wp-content/uploads/2024/03/image-16-1024x656.png 1024w, https://blog.xojo.com/wp-content/uploads/2024/03/image-16-300x192.png 300w, https://blog.xojo.com/wp-content/uploads/2024/03/image-16-768x492.png 768w, https://blog.xojo.com/wp-content/uploads/2024/03/image-16-1536x984.png 1536w, https://blog.xojo.com/wp-content/uploads/2024/03/image-16.png 1624w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Pro Tip: When saving a project for the first time in version control format, it is always a good idea to save into a newly created folder. This ensures that all your files will be neatly contained in one place and won&#8217;t accidentally override something else that may have been in the folder.</p>
</blockquote>



<h2 class="wp-block-heading">Git Going</h2>



<p>If you&#8217;ve created Xojo projects in public repositories on GitHub, be sure to share them in the <a href="https://forum.xojo.com/">forum</a>!</p>



<p>This post just scratches the surface of what GitHub does and also only touches lightly on Git and the concept of source control in general. If you’d like to use Git for source control, but would prefer an alternative to GitHub you might also want to check out&nbsp;<a href="https://bitbucket.org">Atlassian BitBucket</a>&nbsp;which also offers free Git hosting for both private and public repositories.</p>



<p><em>Paul learned to program in BASIC at age 13 and has programmed in more languages than he remembers, with Xojo being an obvious favorite. When not working on Xojo, you can find him talking about retrocomputing at <a href="https://goto10.substack.com" target="_blank" rel="noreferrer noopener">Goto 10</a> and </em>on Mastodon @lefebvre@hachyderm.io.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>XojoUnit: Open-source unit testing library for Xojo</title>
		<link>https://blog.xojo.com/2019/06/25/xojounit-open-source-unit-testing-library-for-xojo/</link>
		
		<dc:creator><![CDATA[Paul Lefebvre]]></dc:creator>
		<pubDate>Tue, 25 Jun 2019 01:28:25 +0000</pubDate>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Open-Source]]></category>
		<category><![CDATA[Xojo Programming Language]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=5830</guid>

					<description><![CDATA[In computer programming, unit testing is a software testing method by which individual units of source code, sets of one or more computer program modules&#8230;]]></description>
										<content:encoded><![CDATA[
<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>In computer programming, unit testing is a software testing method by which individual units of source code, sets of one or more computer program modules together with associated control data, usage procedures, and operating procedures, are tested to determine whether they are fit for use.</p><cite><a href="https://en.wikipedia.org/wiki/Unit_testing">Wikipedia</a></cite></blockquote>



<p>Most languages have a unit testing library and Xojo is no exception. Not surprisingly, the Xojo unit testing library is called XojoUnit. It is available for free on GitHub:</p>



<p><a href="https://github.com/xojo/XojoUnit">https://github.com/xojo/XojoUnit</a></p>



<p>XojoUnit can be used with Desktop, Console, Web and iOS projects. We use XojoUnit ourselves to run unit tests on the Xojo framework as part of our continuous integration build process.</p>



<p>Watch this quick video to see how you can quickly incorporate XojoUnit into your own projects:</p>



<figure class="wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="XojoUnit: Open-source unit testing library for Xojo" width="500" height="281" src="https://www.youtube.com/embed/cOT84No3Ew0?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Get More Done with Open-Source Projects from the Xojo Community</title>
		<link>https://blog.xojo.com/2018/01/18/get-more-done-with-open-source-projects-from-the-xojo-community/</link>
		
		<dc:creator><![CDATA[Paul Lefebvre]]></dc:creator>
		<pubDate>Thu, 18 Jan 2018 07:51:00 +0000</pubDate>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[Desktop]]></category>
		<category><![CDATA[Fun]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[Networking]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Open-Source]]></category>
		<category><![CDATA[Xojo Programming Language]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=3693</guid>

					<description><![CDATA[The Xojo community is vibrant and active, with all kinds of clever, open-source software being created for iOS, desktop, web and Raspberry Pi. By my latest count, there are at least 80 open-source projects for Xojo on GitHub and other places! If you know of other open-source projects, please let me know so that I can add them to the list.]]></description>
										<content:encoded><![CDATA[<p>The Xojo community is vibrant and active, with all kinds of clever, open-source software being created for iOS, desktop, web and Raspberry Pi. By my latest count, there are at least 80 open-source projects for Xojo on GitHub and other places!</p>
<p><span id="more-3693"></span></p>
<p>Are you doing <strong>iOS</strong> development? If so, you can find several libraries on GitHub. Two prominent ones are <a href="https://github.com/kingj5/iOSKit">iOSKit</a>  from Jason King and <a href="https://github.com/UBogun/Xojo-AppleLib/">AppleLib</a> from Ulrich Bogun.</p>
<p>There are nearly 30 <strong>desktop</strong>-related open-source projects available for use in your own projects. For macOS developers, the <a href="http://github.com/macoslib/macoslib">macOSLib</a> project is useful (as is the <a href="https://github.com/sergesd/macoslib">64-bit fork</a>). <a href="https://github.com/tempelmann/custom-editfield">CustomEditField</a> from Thomas Tempelmann provides a full-featured text editor for your apps. <a href="https://github.com/IntelligentVisibility/CalendarTimeChooser">Calendar Time Chooser</a>  from Intelligent Visibility gives you a control for selecting dates and times. There are several libraries for <a href="https://bitbucket.org/kcully/chartpart">charting</a> and Xojo&#8217;s own <a href="https://github.com/xojo/VB">VB</a> library might be helpful for those porting from older VB projects. Want to add auto-update capabilities to your app? Be sure to take a look at <a href="https://github.com/ktekinay/Kaju">Kaju</a> from Kem Tekinay.</p>
<p>For your <strong>web</strong> projects you can find libraries for notifications, including <a href="http://github.com/kikolobo/KLNotificationView">KLNotificationView</a> from Francisco Lobo and ToastrIJ from Ian Jones. <a href="https://aloe.zone/">Aloe Express</a> from Tim Dietrich can be used to quickly build your own web APIs and microservices. I&#8217;ve been meaning to try the <a href="http://github.com/ktekinay/Xojo-WebSocket">WebSocket</a> project from Kem Tekinay to see if I can use it to enhance the open-source <a href="https://github.com/xojo/slack">Slack</a> library.</p>
<p>The <a href="https://github.com/xojo/GPIO">GPIO library</a> is essential for those working with <strong><a href="http://developer.xojo.com/pibook">Raspberry Pi</a></strong>.</p>
<p>In addition, you can find <strong>tools</strong> to use with your Xojo projects, such as <a href="https://github.com/jcowgar/xojo-format-code">Format Code</a> from Jeremy Cowgar and <a href="https://github.com/ktekinay/XsEdit">XsEdit</a> from Kem Tekinay.</p>
<p>And there are about 30 general purpose <strong>libraries</strong> you can use with your Xojo projects. <a href="https://github.com/xojo/XojoUnit">XojoUnit</a> is the definitive unit testing framework. Check out <a href="https://github.com/jcowgar/xojodoc">XojoDoc</a> from Jeremy Cowgar for an automated way of generating documentation from your Xojo source code. Or for something different, check out <a href="https://github.com/ldci/OpenCV-Xojo">OpenCV</a> from François Jouen to add open Computer Vision support to your apps.</p>
<p>If you have a project you want to share with the world, I encourage you to create a GitHub account and upload your project (see my tutorial <a href="https://blog.xojo.com/2018/01/17/start-an-open-source-project-on-github/">here</a>). Maybe you&#8217;ll some day catch up to prolific Xojo open-source developer Kem Tekinay who has the most with 9 projects to his name!</p>
<p>You can find the full list of all Xojo-related open-source projects in the Xojo Dev Center: <a href="http://developer.xojo.com/community-open-source-projects">Open-Source Projects</a></p>
<p>If you know of other open-source projects, please <a href="mailto:paul@xojo.com">let me know</a> so that I can add them to the list.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Start an Open-source Project on GitHub</title>
		<link>https://blog.xojo.com/2018/01/17/start-an-open-source-project-on-github/</link>
		
		<dc:creator><![CDATA[Paul Lefebvre]]></dc:creator>
		<pubDate>Wed, 17 Jan 2018 07:45:43 +0000</pubDate>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[Learning]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[Open-Source]]></category>
		<category><![CDATA[Xojo Programming Language]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=3703</guid>

					<description><![CDATA[A short tutorial on how to use GitHub. Learn to upload your own projects and share. Expand your development with Github projects and share what you've built. There are about 80 Xojo-related open-source projects that I am tracking on the Xojo Dev Center: Open-Source Projects. ]]></description>
										<content:encoded><![CDATA[<p>There are about 80 Xojo-related open-source projects that I am tracking on the <a href="http://developer.xojo.com/community-open-source-projects">Xojo Dev Center: Open-Source Projects</a>. I often have people ask me how they can make their own cool libraries and projects available on GitHub, so here&#8217;s a short tutorial.</p>
<p><span id="more-3703"></span></p>
<h2>Create a GitHub Account</h2>
<p>If you don&#8217;t already have a <a href="https://github.com">GitHub account</a>, you&#8217;ll need to create one. <a href="https://github.com">GitHub</a> is the most popular place for hosting open-source projects and it is entirely free. As its name suggests, GitHub uses the Git source control system for storing the project source and managing updates. It also has a built-in wiki for documentation and an issue tracker.</p>
<p>The way GitHub works is that you&#8217;ll add your project, which is then available for anyone to download and use. In addition, others can submit changes to your project in the form of &#8220;pull requests&#8221;. These are perhaps enhancements or bug fixes that you can review and choose to merge into the project if you want.</p>
<h2>Create Repository</h2>
<p>Now that you have a GitHub account, you&#8217;ll want to go to your GitHub home page and click the &#8220;New Repository&#8221; button. A repository is essentially where your project is stored. You&#8217;ll want a separate repository for each project. This is what the new repository form looks like:</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-3705" src="https://blog.xojo.com/wp-content/uploads/2018/01/2018-01-11_15-42-49.png" alt="" width="746" height="620" /></p>
<p>Be sure to come up with a catchy &#8220;repository name&#8221; and always include a description. You&#8217;ll want to leave &#8220;Public&#8221; selected as it&#8217;s not really open-source if it&#8217;s not public &#8211; and you actually have to pay to host private repositories on GitHub.</p>
<p>I always check &#8220;Initialize this repository with a README&#8221;, which adds an empty README file. This is where you&#8217;ll briefly describe the project and how to use it (using Markdown).</p>
<p>You should also select &#8220;Xojo&#8221; for the gitignore setting. This identifies the project as using the Xojo programming language, which helps with searches and also marks the &#8220;uistate&#8221; file so that it is not included in the project.</p>
<p>Lastly, you&#8217;ll need to choose a license. For most projects, I recommend the MIT License, which essentially allows anyone to use your code however they want.</p>
<p>Click the Create Repository button to create the repository.</p>
<h2>Clone the Repository to your Computer</h2>
<p>Now that the repository is created on GitHub, you&#8217;ll want to &#8220;clone&#8221; it to your computer. This copies the repository files to a folder on your computer to you can modify its files. Of course, the only files in the repository will be LICENSE and the empty README.md, but it is still necessary to do the clone so that you can create the folder where you will then add your Xojo code.</p>
<p>In order to clone, you&#8217;ll want to use a Git client application. There are many to choose from, but two free ones are the official <a href="https://desktop.github.com">GitHub Desktop</a> and <a href="https://www.sourcetreeapp.com">Atlassian SourceTree</a>. Personally I prefer SourceTree, but the GitHub Desktop is a bit simpler so that is the one I&#8217;ll show here.</p>
<p>Download GitHub Desktop: <a href="https://desktop.github.com">https://desktop.github.com</a></p>
<p>Start GitHub Desktop and click &#8220;Sign into GitHub.com&#8221;.</p>
<p>On the Configure Git page, enter the name and email you want to use to identify your commits.</p>
<p>Click Finish on the next page to show the main screen:</p>
<p>On this screen you have the option of creating new repositories or cloning a repository. Since we already created a repository online in the previous section, you want to select &#8220;Clone a Repository&#8221;. In the list, choose the repository you created above, choose your local folder location (Choose&#8230;) and click Clone.</p>
<p>You now have a folder on your disk where you can add your Xojo project.</p>
<p><em>Note: If you are using another client, you will choose its &#8220;clone a repository from URL&#8221; feature and then provide the URL shown in the &#8220;Clone or Download&#8221; button on the repository page.</em></p>
<h2>Add Your Xojo Project Code</h2>
<p>Start Xojo and open the project you want for the repository you cloned. Click &#8220;Save As&#8221;, make sure the Format is &#8220;Xojo Project&#8221; and choose the folder you created when you did the checkout. You&#8217;ll want to use the &#8220;Text Project&#8221; format as that is what works best with Git because it allows people to view source online and makes it possible to precisely track changes.</p>
<p><em>Note: Any Xojo edition can open projects in Xojo Project format, but the Xojo Free edition and Xojo Lite edition cannot save in Xojo Project format. <a href="mailto:hello@xojo.com">Contact us</a> if you&#8217;d like to upgrade.</em></p>
<p>Go back to GitHub Desktop and you&#8217;ll now see all the Xojo files appearing in the list as &#8220;changed files&#8221;. (For my test I used Examples/Database/SQLite/SQLiteExample.)</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-3711" src="https://blog.xojo.com/wp-content/uploads/2018/01/2018-01-12_10-48-31.png" alt="" width="960" height="660" /></p>
<p>You now need to &#8220;Commit&#8221; these changes. By default they are all checked so you can enter a brief summary (for the first commit, often &#8220;Initial Commit.&#8221; is used) and then click the &#8220;Commit to master&#8221; button.</p>
<p>This marked the files as committed in your local repository, which is needed before you can push the changes up to the online repository. Generally speaking you want to commit things after you have made changes that you want to track. You don&#8217;t need to immediately push the changes up to the server (online repository) each time, however.</p>
<p>But for this initial commit you do want to push it out to the server, so click the button in the toolbar that says &#8220;Push origin&#8221;.</p>
<p>If you go back to the GitHub repository online and refresh the page you&#8217;ll now see the files have been committed:</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-3714" src="https://blog.xojo.com/wp-content/uploads/2018/01/2018-01-12_10-55-20.png" alt="" width="1007" height="894" /></p>
<h2>Sharing Your Project</h2>
<p>Your project is now publicly available on GitHub for you to share with the world. All you need to do now is give people the URL! Definitely at least share the URL with me so I can add it to the <a href="http://developer.xojo.com/community-open-source-projects">Open Source Projects page</a> in the Xojo Dev Center.</p>
<p>However, one other thing you should do on the project is click the &#8220;Add topics&#8221; link under the project description near the top of the page and add some tags. At the very least, add a tag for &#8220;Xojo&#8221;, but also add tags for whatever other technologies are relevant to your project. This will make it much easier for people to find your project when they search.</p>
<h2>Changing and Updating Your Project</h2>
<p>You&#8217;ll likely be continuing to change your project to fix bugs and add features. Each change you make shows up in GitHub Desktop where you can commit it and then push it to the server.</p>
<p>As an example, you should also make sure you update the README.md file to actually have a bit more description of your project and how people can use it. On your computer, open README.md in a text editor (or even better, a Markdown editor if you have one &#8212; I use Markdown Pro). You can learn more about Markdown here: <a href="https://guides.github.com/features/mastering-markdown/">GitHub Markdown Guide</a></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-3716" src="https://blog.xojo.com/wp-content/uploads/2018/01/2018-01-12_11-05-36.png" alt="" width="892" height="572" /></p>
<p>Save the file and the go to GitHub Desktop to see that it shows as changed. With the file selected in GitHub desktop you can see that it shows you what has changed with the new content identified. This also works with source code and is why you want to use the Xojo Project text file format &#8212; you&#8217;ll be able to see exactly what code you&#8217;ve changed.</p>
<p>You can now Commit this change (always add Summary text so you know the reason for the change!) and then Push it to the server (Push origin).</p>
<h2>Using or Cloning Other Repositories</h2>
<p>Now that you&#8217;ve published your project, anyone can use it. And don&#8217;t forget that you can also use other people&#8217;s repositories. In both cases you&#8217;ll want to click the &#8220;Clone or Download&#8221; button on the repository page.</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-3718" src="https://blog.xojo.com/wp-content/uploads/2018/01/2018-01-12_11-12-07.png" alt="" width="1009" height="456" /></p>
<p>For simple usage where you just want to grab the current version of the repository you can then click the Download ZIP button. Once downloaded, unzip the file and then open the project in Xojo where you can use it or copy/paste it into your own projects (review the license agreement before you use projects, of course).</p>
<p>You&#8217;ll want to clone a project when you want to manage it using GitHub Desktop (or your GitHub client of choice). This allows you to fetch and pull updates from the online repository and also allows you to make your own changes and push them up to the server where the repository owner will get them as pull requests. The owner can then review your changes and decided whether they want to incorporate (pull) them into the project.</p>
<h2>GitHub is Great</h2>
<p>I look forward to seeing new Xojo projects appearing on GitHub! This article just scratches the surface of what GitHub does and also only touches lightly on the concept of source control in general. If you&#8217;d like to use Git for source control, but don&#8217;t want to make your projects public you might also want to check out <a href="https://bitbucket.org">Atlassian BitBucket</a> which offers free Git hosting for both private and public repositories.</p>
<p>To learn more about Git in general, watch these webinars:</p>
<ul>
<li><a href="http://developer.xojo.com/webinar-getting-to-know-git-part-1">Getting to Know Git Part 1</a></li>
<li><a href="http://developer.xojo.com/webinar-getting-to-know-git-part-2">Getting to Know Git Part 2</a></li>
<li><a href="http://developer.xojo.com/webinar-source-control">Source Control</a></li>
</ul>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>WinAPILib on GitHub</title>
		<link>https://blog.xojo.com/2017/12/20/winapilib-on-github/</link>
		
		<dc:creator><![CDATA[Paul Lefebvre]]></dc:creator>
		<pubDate>Wed, 20 Dec 2017 18:27:35 +0000</pubDate>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Declares]]></category>
		<category><![CDATA[Open-Source]]></category>
		<category><![CDATA[WinAPILib]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=3561</guid>

					<description><![CDATA[I've started a new open-source project called WinAPILib that is now available on GitHub. This project is the start of an attempt to collect useful Windows Declares (from WFS and elsewhere) and make sure they are updated to work with 64-bit and newer versions of Windows.]]></description>
										<content:encoded><![CDATA[<p>Many years ago, the Window Functionality Suite (WFS) library was created by Aaron Ballman. This library was a collection of Win32 Declares (and a few other things) for accessing Windows-specific functionality that was not directly provided by the Xojo framework.</p>
<p><a href="https://github.com/arbp/wfs">WFS is still available on GitHub</a>, but it has languished over the years. For example, it has lots of legacy code in it for older versions of Windows that is no longer needed since Xojo only supports Windows 7 and later. WFS is also not really compatible with 64-bit projects since the Declares mostly assume 32-bit or bust.</p>
<p>To that end, I&#8217;ve started a new open-source project called <a href="https://github.com/paullefebvre/winapilib">WinAPILib</a> that is now available on GitHub.</p>
<p><span id="more-3561"></span></p>
<p>This project is the start of an attempt to collect useful Windows Declares (from WFS and elsewhere) and make sure they are updated to work with 64-bit and newer versions of Windows.</p>
<p>Why is it called WinAPILib? First, Microsoft no longer uses the term Win32 for their desktop framework since the API also works with 64-bit apps. It would be confusing to say you are using the Win32 framework for 64-bit apps, so Microsoft has switched to <a href="https://technet.microsoft.com/en-us/library/bb496995.aspx">mostly using &#8220;Windows API&#8221;</a>:</p>
<blockquote><p><em>The Windows API was formerly called the Win32 API. The name Windows API more accurately reflects its roots in 16-bit Windows and its support on 64-bit Windows. The name Windows API is used in this volume except when comparing 32-bit Windows programming with 64-bit Windows programming. They are then referred to as Win32 and Win64 APIs, respectively.</em></p></blockquote>
<p>This is informally just shortend to &#8220;WinAPI&#8221;. Combined with the popular macOS Declare project on GitHub called <a href="https://github.com/macoslib/macoslib">macoslib</a>, I figured WinAPILib would be a consistent, familiar name.</p>
<p>I&#8217;ve started small with WinAPILib. Right now it just has a few classes for some system declares and other things. More will be added over time by me and hopefully by others sending pull requests up to GitHub.</p>
<p>To get WinAPILib, go to the <a href="https://github.com/paullefebvre/winapilib">GitHub page</a> and click the green &#8220;Clone or download&#8221; button. Use the clone URL with your favorite GitHub client (I use <a href="https://www.sourcetreeapp.com">SourceTree</a>) or just download the Zip if you&#8217;re Git-shy.</p>
<p><a href="https://github.com/paullefebvre/winapilib">WinAPILib on GitHub</a></p>
<p>For some tips on writing Windows Declares, visit <a href="http://developer.xojo.com/calling-native-windows-apis">Calling Native Windows APIs</a> in the User Guide.</p>
<p>I hope you find this helpful and please share your useful Windows Declares!</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Source Control Solutions</title>
		<link>https://blog.xojo.com/2015/07/28/source-control-solutions/</link>
		
		<dc:creator><![CDATA[Paul Lefebvre]]></dc:creator>
		<pubDate>Tue, 28 Jul 2015 00:00:00 +0000</pubDate>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[Mercurial]]></category>
		<category><![CDATA[Open-Source]]></category>
		<category><![CDATA[Subversion]]></category>
		<guid isPermaLink="false">http://blogtemp.xojo.com/2015/07/28/source-control-solutions/</guid>

					<description><![CDATA[Source control and version control solutions that you can use with Xojo.]]></description>
										<content:encoded><![CDATA[<p>Anyone who is developing software, even if they are the only person working on the project, should be using source control (aka as version control). As you can see, this comes up a lot:</p>
<p><span id="more-321"></span></p>
<ul>
<li><a href="https://youtu.be/A4YsbOUqPz8">Source control webinar</a></li>
<li><a href="https://youtu.be/D_iMQAjaxLA">Getting to Know Git, part 1 webinar</a></li>
<li><a href="https://youtu.be/ReztN3lJf5A">Getting to Know Git, part 2 webinar</a></li>
<li><a href="http://www.xojo.com/store/#conference">Saving your Sanity with Git for Source Code Management XDC 2015 session</a></li>
<li><a href="http://flightgeekjustin.wordpress.com/2013/04/30/using-git-tips-with-real-studio-xojo/">Using Git with Xojo</a></li>
<li><a href="http://www.xdevmag.com/browse/12.4/12408/">Mercurial and Xojo</a></li>
</ul>
<p>Source control tracks your changes, can serve as a backup and allows you to try new and different things without fear of completely breaking your code (because you can always go back to a prior, working version of the source).</p>
<p>Since we talk about why you should be using source control so much, I thought I would point out some companies that provide hosted source control and some tools to help you use source control with Xojo.</p>
<p>Now remember, you can use Xojo with <strong>any</strong> source control system, but you&#8217;ll want to use the Text Project format which is available in licensed versions of Xojo (Desktop and higher). The Text Project format is not available with Single Desktop or the Free version of Xojo.</p>
<h2>Subversion</h2>
<p><a href="https://subversion.apache.org/">Subversion</a> is an open-source version control system made by the Apache folks. It is widely used and relatively easy to understand, using a centralized server as the master repository (or repo) for your source code.</p>
<ul>
<li><a href="https://bitbucket.org/product/version-control-software">BitBucket</a></li>
<li><a href="http://beanstalkapp.com/pricing">Beanstalk</a> (free plan available)</li>
<li><a href="https://www.assembla.com/subversion/">Assembla</a> (free plan available)</li>
</ul>
<p>You&#8217;re likely to want to use a Subversion client app to make working with Subversion as easy as possible. Here are some that are available:</p>
<ul>
<li><a href="https://ikoder.com">Xversion</a> (Mac)</li>
<li><a href="http://versionsapp.com/">Versions</a> (Mac)</li>
<li><a href="https://www.zennaware.com/cornerstone/index.php">Cornerstone</a> (Mac)</li>
<li><a href="http://www.smartsvn.com/">SmartSVN</a> (Mac, Windows, Linux)</li>
<li><a href="http://tortoisesvn.net/">TortoiseSVN</a> (Windows)</li>
</ul>
<h2>Git</h2>
<p><a href="https://git-scm.com/">Git</a> is a &#8220;free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency&#8221;. With a distributed system, the full repo is available at each user. You can commit locally before pushing changes up to a central server for others to see.</p>
<ul>
<li><a href="https://github.com/">GitHub</a> (free plans available)</li>
<li><a href="https://about.gitlab.com">GitLab</a> (free plans available)</li>
<li><a href="https://bitbucket.org/">BitBucket</a> (free plan available)</li>
</ul>
<p>And here are some Git clients:</p>
<ul>
<li><a href="https://www.sourcetreeapp.com/">SourceTree</a> (Windows, OS X)</li>
<li>GitHub (<a href="https://windows.github.com/">Windows</a>, <a href="https://mac.github.com/">OS X</a>)</li>
<li><a href="http://www.git-tower.com/">Tower</a> (OS X)</li>
<li><a href="https://code.google.com/p/tortoisegit/">TortoiseGit</a> (Windows)</li>
<li><a href="http://www.syntevo.com/smartgit/">SmartGit</a> (Windows, OS X, Linux)</li>
</ul>
<p>Learn how to <a href="https://blog.xojo.com/2018/01/17/start-an-open-source-project-on-github/">Start and Open-Source Xojo Project on GitHub</a>.</p>
<h2>Mercurial</h2>
<p><a href="https://mercurial.selenic.com/">Mercurial</a> is a &#8220;free, distributed source control management tool. It efficiently handles projects of any size and offers an easy and intuitive interface&#8221;.</p>
<ul>
<li><a href="https://bitbucket.org/">BitBucket</a> (free plan available)</li>
</ul>
<h2>Which Should You Use?</h2>
<p>There is no right answer to this question. I have used Subversion and Git (and others), but not Mercurial. In my opinion, Subversion is easier to learn than Git, but it is less flexible. These days my preference is to use Git.</p>
<p>Of course, there are lots of other source control systems that exist, but the above are the major ones. If you are already using another source control system with other tools, rest assured that it will also work just fine with Xojo.<!-- end HubSpot Call-to-Action Code --></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>XojoTalk 015: Type my password like an animal</title>
		<link>https://blog.xojo.com/2015/07/01/xojotalk-015-type-my-password-like-an-animal/</link>
		
		<dc:creator><![CDATA[Paul Lefebvre]]></dc:creator>
		<pubDate>Wed, 01 Jul 2015 00:00:00 +0000</pubDate>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[XojoTalk]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[Games]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[Open-Source]]></category>
		<guid isPermaLink="false">http://blogtemp.xojo.com/2015/07/01/xojotalk-015-type-my-password-like-an-animal/</guid>

					<description><![CDATA[XojoTalk 015: Type my password like an animal]]></description>
										<content:encoded><![CDATA[<p>In this episode of XojoTalk, Paul talks with <a href="https://twitter.com/justindelliott">Justin Elliott</a>, IT and Development Manager at <a href="http://www.psu.edu">Penn State University</a>.</p>
<p>Download <a href="http://files.xojo.com/Podcasts/XojoTalk-015.mp3">MP3</a>.</p>
<p><span id="more-225"></span></p>
<p>Show Links</p>
<ul>
<li><a href="http://www.psu.edu">Penn State University</a></li>
<li><a href="http://clc.its.psu.edu/UnivServices/itadmins/mac/blastimageconfig">Blast Image Config</a></li>
<li><a href="http://macadmins.psu.edu">MacAdmins Conference</a></li>
<li><a href="http://developer.xojo.com/xojo-data">Xojo JSON support</a></li>
<li><a href="https://sched.org">Sched.org</a></li>
<li><a href="http://developer.xojo.com/community-open-source-projects">Open-Source Xojo Projects</a></li>
<li><a href="http://www.xojo.com/resources/cloudservices.php">5 Reasons to rely on Cloud services</a></li>
<li><a href="http://developer.xojo.com/webinar-retro-gaming">Git webinars</a></li>
<li><a href="https://github.com/xojo/XojoUnit">XojoUnit</a></li>
<li><a href="https://system76.com">System 76 Linux laptops</a></li>
<li><a href="http://elementary.io">ElementaryOS</a></li>
<li><a href="http://jakobud.com/plan-list.php">JackObud arcade cabinets</a></li>
<li><a href="http://developer.xojo.com/webinar-retro-gaming">Retro game webinar</a></li>
<li><a href="https://itunes.apple.com/us/app/pixel-space-war/id983974668?mt=8">Pixel Space Wars</a></li>
</ul>
<p><!--HubSpot Call-to-Action Code --> <span id="hs-cta-wrapper-32eb9715-5c1c-45a4-9f37-717ffc906d8e" class="hs-cta-wrapper"> <span id="hs-cta-32eb9715-5c1c-45a4-9f37-717ffc906d8e" class="hs-cta-node hs-cta-32eb9715-5c1c-45a4-9f37-717ffc906d8e"><br />
<!-- [if lte IE 8]>


<div id="hs-cta-ie-element"></div>


<![endif]--> <a href="http://feeds.feedburner.com/xojotalk" target="_blank"><img loading="lazy" decoding="async" id="hs-cta-img-32eb9715-5c1c-45a4-9f37-717ffc906d8e" class="hs-cta-img alignnone" style="border-width: 0px; margin: 0 auto; display: block; margin-top: 20px; margin-bottom: 20px;" src="https://blog.xojo.com/wp-content/uploads/2014/09/32eb9715-5c1c-45a4-9f37-717ffc906d8e.png" alt="Subscribe Podcast" width="622" height="107" align="middle" /></a> </span><script src="https://js.hscta.net/cta/current.js" charset="utf-8">// <![CDATA[
<script type="text/javascript"><![CDATA[ hbspt.cta.load(608515, '32eb9715-5c1c-45a4-9f37-717ffc906d8e', {}); // ]]&gt;</script></span><br />
<!-- end HubSpot Call-to-Action Code --></p>
<p>You can also <a href="https://itunes.apple.com/us/podcast/xojotalk-podcast/id920411434" target="_blank">subscribe on iTunes</a>.</p>
]]></content:encoded>
					
		
		<enclosure url="http://files.xojo.com/Podcasts/XojoTalk-015.mp3" length="31009982" type="audio/mpeg" />

			</item>
		<item>
		<title>XojoTalk 013: Hockey Programmer</title>
		<link>https://blog.xojo.com/2015/06/02/xojotalk-013-hockey-programmer/</link>
		
		<dc:creator><![CDATA[Paul Lefebvre]]></dc:creator>
		<pubDate>Tue, 02 Jun 2015 00:00:00 +0000</pubDate>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[XojoTalk]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Open-Source]]></category>
		<guid isPermaLink="false">http://blogtemp.xojo.com/2015/06/02/xojotalk-013-hockey-programmer/</guid>

					<description><![CDATA[XojoTalk 013: Hockey Programmer]]></description>
										<content:encoded><![CDATA[<p>In this episode of XojoTalk, Paul talks with Mike Cotrone, owner of Intelligent Visibility, makers of some powerful networking apps that are all created with Xojo.</p>
<p><span id="more-215"></span></p>
<p>Download <a href="http://files.xojo.com/Podcasts/XojoTalk-013.mp3">MP3</a>.</p>
<p>&nbsp;</p>
<p><strong>Show Links</strong></p>
<ul>
<li><a href="http://www.intelligentvisibility.com">Intelligent Visibility</a></li>
<li><a href="https://twitter.com/mike_cotrone">Mike Cotrone on Twitter</a></li>
<li><a href="http://www.intelligentvisibility.com/blog/">Intelligent Visibility Blog</a></li>
<li><a href="http://www.fastspring.com">FastSpring</a> payment processing</li>
<li><a href="https://github.com/mikecotrone/CalendarTimeChooser">Calendar Time Chooser</a></li>
<li><a href="https://github.com/IntelligentVisibility/DropboxAPI">DropBox API</a></li>
<li><a href="https://github.com/IntelligentVisibility">Intelligent Visibility open-source Xojo projects</a></li>
<li><a href="http://web.archive.org/web/20110430161635/http://ajhl.impello.com/media/files/upload/Top_Goaltenders_zvq.pdf">Mike Cotrone&#8217;s AJHL (92-93) goaltending stats</a></li>
</ul>
<p><!--HubSpot Call-to-Action Code --> <span id="hs-cta-wrapper-32eb9715-5c1c-45a4-9f37-717ffc906d8e" class="hs-cta-wrapper"> <span id="hs-cta-32eb9715-5c1c-45a4-9f37-717ffc906d8e" class="hs-cta-node hs-cta-32eb9715-5c1c-45a4-9f37-717ffc906d8e"><br />
<!-- [if lte IE 8]>


<div id="hs-cta-ie-element"></div>


<![endif]--> <a href="http://feeds.feedburner.com/xojotalk" target="_blank" rel="noopener"><img loading="lazy" decoding="async" id="hs-cta-img-32eb9715-5c1c-45a4-9f37-717ffc906d8e" class="hs-cta-img alignnone" style="border-width: 0px; margin: 0 auto; display: block; margin-top: 20px; margin-bottom: 20px;" src="https://blog.xojo.com/wp-content/uploads/2014/09/32eb9715-5c1c-45a4-9f37-717ffc906d8e.png" alt="Subscribe Podcast" width="622" height="107" align="middle" /></a> </span><script src="https://js.hscta.net/cta/current.js" charset="utf-8">// <![CDATA[
<script type="text/javascript"><![CDATA[ hbspt.cta.load(608515, '32eb9715-5c1c-45a4-9f37-717ffc906d8e', {}); // ]]&gt;</script></span><br />
<!-- end HubSpot Call-to-Action Code --></p>
<p>You can also <a href="https://itunes.apple.com/us/podcast/xojotalk-podcast/id920411434" target="_blank" rel="noopener">subscribe on iTunes</a>.</p>
]]></content:encoded>
					
		
		<enclosure url="http://files.xojo.com/Podcasts/XojoTalk-013.mp3" length="23983670" type="audio/mpeg" />

			</item>
	</channel>
</rss>
